AryaWu/sqlite
0
1# 2018 September 22#3# The author disclaims copyright to this source code. In place of4# a legal notice, here is a blessing:5#6# May you do good and not evil.7# May you find forgiveness for yourself and forgive others.8# May you share freely, never taking more than you give.9#10#*************************************************************************11#12 13set testdir [file dirname $argv0]14 15source $testdir/tester.tcl16 17# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.18ifcapable !altertable {19 finish_test20 return21}22set testprefix alterauth23 24set ::auth [list]25proc xAuth {type args} {26 if {$type == "SQLITE_ALTER_TABLE"} {27 lappend ::auth [concat $type [lrange $args 0 3]]28 }29 return SQLITE_OK30}31db auth xAuth32 33do_execsql_test 1.0 { CREATE TABLE t1(a, b, c); }34 35do_test 1.1 {36 set ::auth [list]37 execsql { ALTER TABLE t1 RENAME TO t2 }38 set ::auth39} {{SQLITE_ALTER_TABLE main t1 {} {}}}40 41do_test 1.2 {42 set ::auth [list]43 execsql { ALTER TABLE t2 RENAME c TO ccc }44 set ::auth45} {{SQLITE_ALTER_TABLE main t2 {} {}}}46 47do_test 1.3 {48 set ::auth [list]49 execsql { ALTER TABLE t2 ADD COLUMN d }50 set ::auth51} {{SQLITE_ALTER_TABLE main t2 {} {}}}52 53proc xAuth {type args} {54 if {$type == "SQLITE_ALTER_TABLE"} {55 return SQLITE_DENY56 }57 return SQLITE_OK58}59 60do_test 2.1 {61 catchsql { ALTER TABLE t2 RENAME TO t3 }62} {1 {not authorized}}63 64do_test 2.2 {65 catchsql { ALTER TABLE t2 RENAME d TO ddd }66} {1 {not authorized}}67 68do_test 2.3 {69 catchsql { ALTER TABLE t2 ADD COLUMN e }70} {1 {not authorized}}71 72finish_test73 