blob: 12645b36f0826103413d152eb4943c8bca06bc92 [file] [log] [blame]
dan71998f02018-09-06 16:24:23 +00001# 2018 September 2
2#
3# The author disclaims copyright to this source code. In place of
4# 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.tcl
16
17# If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
18ifcapable !altertable {
19 finish_test
20 return
21}
22set testprefix alterauth
23
24set ::auth [list]
25proc xAuth {type args} {
26 if {$type == "SQLITE_ALTER_TABLE"} {
dan85c68922018-09-19 17:09:09 +000027 lappend ::auth [concat $type [lrange $args 0 3]]
dan71998f02018-09-06 16:24:23 +000028 }
29 return SQLITE_OK
30}
31db auth xAuth
32
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 ::auth
39} {{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 ::auth
45} {{SQLITE_ALTER_TABLE main t2 {} {}}}
46
47do_test 1.3 {
48 set ::auth [list]
49 execsql { ALTER TABLE t2 ADD COLUMN d }
50 set ::auth
51} {{SQLITE_ALTER_TABLE main t2 {} {}}}
52
53proc xAuth {type args} {
54 if {$type == "SQLITE_ALTER_TABLE"} {
55 return SQLITE_DENY
56 }
57 return SQLITE_OK
58}
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_test