# 2006 Aug 24 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this script is testing the sqlite3_set_authorizer() API # and related functionality. # # $Id: auth2.test,v 1.1 2006/08/24 14:59:46 drh Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl # disable this test if the SQLITE_OMIT_AUTHORIZATION macro is # defined during compilation. if {[catch {db auth {}} msg]} { finish_test return } do_test auth2-1.1 { execsql { CREATE TABLE t1(a,b,c); INSERT INTO t1 VALUES(1,2,3); } set ::flist {} proc auth {code arg1 arg2 arg3 arg4} { if {$code=="SQLITE_FUNCTION"} { lappend ::flist $arg2 if {$arg2=="max"} { return SQLITE_DENY } elseif {$arg2=="min"} { return SQLITE_IGNORE } else { return SQLITE_OK } } return SQLITE_OK } db authorizer ::auth catchsql {SELECT max(a,b,c) FROM t1} } {1 {not authorized to use function: max}} do_test auth2-1.2 { set ::flist } max do_test auth2-1.3 { set ::flist {} catchsql {SELECT min(a,b,c) FROM t1} } {0 {{}}} do_test auth2-1.4 { set ::flist } min do_test auth2-1.5 { set ::flist {} catchsql {SELECT coalesce(min(a,b,c),999) FROM t1} } {0 999} do_test auth2-1.6 { set ::flist } {coalesce min} do_test auth2-1.7 { set ::flist {} catchsql {SELECT coalesce(a,b,c) FROM t1} } {0 1} do_test auth2-1.8 { set ::flist } coalesce finish_test