blob: 63610479b254ad9d0635b25dfbb2febd7dfde46c [file] [log] [blame]
drh1962bda2003-01-12 19:33:52 +00001# 2003 January 12
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# This file implements regression tests for SQLite library. The
12# focus of this script testing the sqlite_set_authorizer() API.
13#
drhdcd997e2003-01-31 17:21:49 +000014# $Id: auth.test,v 1.5 2003/01/31 17:21:50 drh Exp $
drh1962bda2003-01-12 19:33:52 +000015#
16
17set testdir [file dirname $argv0]
18source $testdir/tester.tcl
19
20if {[info command sqlite_set_authorizer]!=""} {
21
drhdcd997e2003-01-31 17:21:49 +000022do_test auth-1.1.1 {
drh1962bda2003-01-12 19:33:52 +000023 db close
24 set ::DB [sqlite db test.db]
25 proc auth {code arg1 arg2} {
drh77ad4e42003-01-14 02:49:27 +000026 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
drh1962bda2003-01-12 19:33:52 +000027 return SQLITE_DENY
28 }
29 return SQLITE_OK
30 }
31 sqlite_set_authorizer $::DB ::auth
32 catchsql {CREATE TABLE t1(a,b,c)}
drhe5f9c642003-01-13 23:27:31 +000033} {1 {not authorized}}
drhdcd997e2003-01-31 17:21:49 +000034do_test auth-1.1.2 {
35 db errorcode
36} {23}
drh1962bda2003-01-12 19:33:52 +000037do_test auth-1.2 {
drhe5f9c642003-01-13 23:27:31 +000038 execsql {SELECT name FROM sqlite_master}
39} {}
drh77ad4e42003-01-14 02:49:27 +000040do_test auth-1.3.1 {
drh1962bda2003-01-12 19:33:52 +000041 proc auth {code arg1 arg2} {
drhe5f9c642003-01-13 23:27:31 +000042 if {$code=="SQLITE_CREATE_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +000043 set ::authargs [list $arg1 $arg2]
drhe5f9c642003-01-13 23:27:31 +000044 return SQLITE_DENY
45 }
46 return SQLITE_OK
47 }
48 catchsql {CREATE TABLE t1(a,b,c)}
49} {1 {not authorized}}
drh77ad4e42003-01-14 02:49:27 +000050do_test auth-1.3.2 {
drhdcd997e2003-01-31 17:21:49 +000051 db errorcode
52} {23}
53do_test auth-1.3.3 {
drh77ad4e42003-01-14 02:49:27 +000054 set ::authargs
55} {t1 {}}
drhe5f9c642003-01-13 23:27:31 +000056do_test auth-1.4 {
57 execsql {SELECT name FROM sqlite_master}
58} {}
59
60do_test auth-1.5 {
61 proc auth {code arg1 arg2} {
drh77ad4e42003-01-14 02:49:27 +000062 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
drhe5f9c642003-01-13 23:27:31 +000063 return SQLITE_DENY
64 }
65 return SQLITE_OK
66 }
67 catchsql {CREATE TEMP TABLE t1(a,b,c)}
68} {1 {not authorized}}
69do_test auth-1.6 {
70 execsql {SELECT name FROM sqlite_temp_master}
71} {}
drh77ad4e42003-01-14 02:49:27 +000072do_test auth-1.7.1 {
drhe5f9c642003-01-13 23:27:31 +000073 proc auth {code arg1 arg2} {
74 if {$code=="SQLITE_CREATE_TEMP_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +000075 set ::authargs [list $arg1 $arg2]
drhe5f9c642003-01-13 23:27:31 +000076 return SQLITE_DENY
77 }
78 return SQLITE_OK
79 }
80 catchsql {CREATE TEMP TABLE t1(a,b,c)}
81} {1 {not authorized}}
drh77ad4e42003-01-14 02:49:27 +000082do_test auth-1.7.2 {
83 set ::authargs
84} {t1 {}}
drhe5f9c642003-01-13 23:27:31 +000085do_test auth-1.8 {
86 execsql {SELECT name FROM sqlite_temp_master}
87} {}
88
89do_test auth-1.9 {
90 proc auth {code arg1 arg2} {
drh77ad4e42003-01-14 02:49:27 +000091 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
drh1962bda2003-01-12 19:33:52 +000092 return SQLITE_IGNORE
93 }
94 return SQLITE_OK
95 }
96 catchsql {CREATE TABLE t1(a,b,c)}
drhe5f9c642003-01-13 23:27:31 +000097} {0 {}}
98do_test auth-1.10 {
99 execsql {SELECT name FROM sqlite_master}
100} {}
101do_test auth-1.11 {
drh1962bda2003-01-12 19:33:52 +0000102 proc auth {code arg1 arg2} {
drhe5f9c642003-01-13 23:27:31 +0000103 if {$code=="SQLITE_CREATE_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +0000104 set ::authargs [list $arg1 $arg2]
drhe5f9c642003-01-13 23:27:31 +0000105 return SQLITE_IGNORE
drh1962bda2003-01-12 19:33:52 +0000106 }
107 return SQLITE_OK
108 }
109 catchsql {CREATE TABLE t1(a,b,c)}
110} {0 {}}
drhe5f9c642003-01-13 23:27:31 +0000111do_test auth-1.12 {
drh1962bda2003-01-12 19:33:52 +0000112 execsql {SELECT name FROM sqlite_master}
drhe5f9c642003-01-13 23:27:31 +0000113} {}
114do_test auth-1.13 {
drh1962bda2003-01-12 19:33:52 +0000115 proc auth {code arg1 arg2} {
drh77ad4e42003-01-14 02:49:27 +0000116 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
drhe5f9c642003-01-13 23:27:31 +0000117 return SQLITE_IGNORE
118 }
119 return SQLITE_OK
120 }
121 catchsql {CREATE TEMP TABLE t1(a,b,c)}
122} {0 {}}
123do_test auth-1.14 {
124 execsql {SELECT name FROM sqlite_temp_master}
125} {}
126do_test auth-1.15 {
127 proc auth {code arg1 arg2} {
128 if {$code=="SQLITE_CREATE_TEMP_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +0000129 set ::authargs [list $arg1 $arg2]
drhe5f9c642003-01-13 23:27:31 +0000130 return SQLITE_IGNORE
131 }
132 return SQLITE_OK
133 }
134 catchsql {CREATE TEMP TABLE t1(a,b,c)}
135} {0 {}}
136do_test auth-1.16 {
137 execsql {SELECT name FROM sqlite_temp_master}
138} {}
139
140do_test auth-1.17 {
141 proc auth {code arg1 arg2} {
142 if {$code=="SQLITE_CREATE_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +0000143 set ::authargs [list $arg1 $arg2]
144 return SQLITE_DENY
drhe5f9c642003-01-13 23:27:31 +0000145 }
146 return SQLITE_OK
147 }
148 catchsql {CREATE TEMP TABLE t1(a,b,c)}
149} {0 {}}
150do_test auth-1.18 {
151 execsql {SELECT name FROM sqlite_temp_master}
152} {t1}
drh77ad4e42003-01-14 02:49:27 +0000153do_test auth-1.19.1 {
154 set ::authargs {}
drhe5f9c642003-01-13 23:27:31 +0000155 proc auth {code arg1 arg2} {
156 if {$code=="SQLITE_CREATE_TEMP_TABLE"} {
drh77ad4e42003-01-14 02:49:27 +0000157 set ::authargs [list $arg1 $arg2]
158 return SQLITE_DENY
drh1962bda2003-01-12 19:33:52 +0000159 }
160 return SQLITE_OK
161 }
162 catchsql {CREATE TABLE t2(a,b,c)}
drh1962bda2003-01-12 19:33:52 +0000163} {0 {}}
drh77ad4e42003-01-14 02:49:27 +0000164do_test auth-1.19.2 {
165 set ::authargs
166} {}
drh1962bda2003-01-12 19:33:52 +0000167do_test auth-1.20 {
drhe5f9c642003-01-13 23:27:31 +0000168 execsql {SELECT name FROM sqlite_master}
169} {t2}
drh1962bda2003-01-12 19:33:52 +0000170
drh77ad4e42003-01-14 02:49:27 +0000171do_test auth-1.21.1 {
172 proc auth {code arg1 arg2} {
173 if {$code=="SQLITE_DROP_TABLE"} {
174 set ::authargs [list $arg1 $arg2]
175 return SQLITE_DENY
176 }
177 return SQLITE_OK
178 }
179 catchsql {DROP TABLE t2}
180} {1 {not authorized}}
181do_test auth-1.21.2 {
182 set ::authargs
183} {t2 {}}
184do_test auth-1.22 {
185 execsql {SELECT name FROM sqlite_master}
186} {t2}
187do_test auth-1.23.1 {
188 proc auth {code arg1 arg2} {
189 if {$code=="SQLITE_DROP_TABLE"} {
190 set ::authargs [list $arg1 $arg2]
191 return SQLITE_IGNORE
192 }
193 return SQLITE_OK
194 }
195 catchsql {DROP TABLE t2}
196} {0 {}}
197do_test auth-1.23.2 {
198 set ::authargs
199} {t2 {}}
200do_test auth-1.24 {
201 execsql {SELECT name FROM sqlite_master}
202} {t2}
drhe5f9c642003-01-13 23:27:31 +0000203
drh77ad4e42003-01-14 02:49:27 +0000204do_test auth-1.25 {
205 proc auth {code arg1 arg2} {
206 if {$code=="SQLITE_DROP_TEMP_TABLE"} {
207 set ::authargs [list $arg1 $arg2]
208 return SQLITE_DENY
209 }
210 return SQLITE_OK
211 }
212 catchsql {DROP TABLE t1}
213} {1 {not authorized}}
214do_test auth-1.26 {
215 execsql {SELECT name FROM sqlite_temp_master}
216} {t1}
217do_test auth-1.27 {
218 proc auth {code arg1 arg2} {
219 if {$code=="SQLITE_DROP_TEMP_TABLE"} {
220 set ::authargs [list $arg1 $arg2]
221 return SQLITE_IGNORE
222 }
223 return SQLITE_OK
224 }
225 catchsql {DROP TABLE t1}
226} {0 {}}
227do_test auth-1.28 {
228 execsql {SELECT name FROM sqlite_temp_master}
229} {t1}
230
231do_test auth-1.29 {
232 proc auth {code arg1 arg2} {
233 if {$code=="SQLITE_INSERT" && $arg1=="t2"} {
234 return SQLITE_DENY
235 }
236 return SQLITE_OK
237 }
238 catchsql {INSERT INTO t2 VALUES(1,2,3)}
239} {1 {not authorized}}
240do_test auth-1.30 {
241 execsql {SELECT * FROM t2}
242} {}
243do_test auth-1.31 {
244 proc auth {code arg1 arg2} {
245 if {$code=="SQLITE_INSERT" && $arg1=="t2"} {
246 return SQLITE_IGNORE
247 }
248 return SQLITE_OK
249 }
250 catchsql {INSERT INTO t2 VALUES(1,2,3)}
251} {0 {}}
252do_test auth-1.32 {
253 execsql {SELECT * FROM t2}
254} {}
255do_test auth-1.33 {
256 proc auth {code arg1 arg2} {
257 if {$code=="SQLITE_INSERT" && $arg1=="t1"} {
258 return SQLITE_IGNORE
259 }
260 return SQLITE_OK
261 }
262 catchsql {INSERT INTO t2 VALUES(1,2,3)}
263} {0 {}}
264do_test auth-1.34 {
265 execsql {SELECT * FROM t2}
266} {1 2 3}
267
268do_test auth-1.35 {
269 proc auth {code arg1 arg2} {
270 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
271 return SQLITE_DENY
272 }
273 return SQLITE_OK
274 }
275 catchsql {SELECT * FROM t2}
276} {1 {access to t2.b is prohibited}}
277do_test auth-1.36 {
278 proc auth {code arg1 arg2} {
279 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
280 return SQLITE_IGNORE
281 }
282 return SQLITE_OK
283 }
284 catchsql {SELECT * FROM t2}
285} {0 {1 {} 3}}
286do_test auth-1.37 {
287 proc auth {code arg1 arg2} {
288 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
289 return SQLITE_IGNORE
290 }
291 return SQLITE_OK
292 }
293 catchsql {SELECT * FROM t2 WHERE b=2}
294} {0 {}}
295do_test auth-1.38 {
296 proc auth {code arg1 arg2} {
297 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="a"} {
298 return SQLITE_IGNORE
299 }
300 return SQLITE_OK
301 }
302 catchsql {SELECT * FROM t2 WHERE b=2}
303} {0 {{} 2 3}}
304do_test auth-1.39 {
305 proc auth {code arg1 arg2} {
306 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
307 return SQLITE_IGNORE
308 }
309 return SQLITE_OK
310 }
311 catchsql {SELECT * FROM t2 WHERE b IS NULL}
312} {0 {1 {} 3}}
313do_test auth-1.40 {
314 proc auth {code arg1 arg2} {
315 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="b"} {
316 return SQLITE_DENY
317 }
318 return SQLITE_OK
319 }
320 catchsql {SELECT a,c FROM t2 WHERE b IS NULL}
321} {1 {access to t2.b is prohibited}}
322
323do_test auth-1.41 {
324 proc auth {code arg1 arg2} {
325 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} {
326 return SQLITE_DENY
327 }
328 return SQLITE_OK
329 }
330 catchsql {UPDATE t2 SET a=11}
331} {0 {}}
332do_test auth-1.42 {
333 execsql {SELECT * FROM t2}
334} {11 2 3}
335do_test auth-1.43 {
336 proc auth {code arg1 arg2} {
337 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} {
338 return SQLITE_DENY
339 }
340 return SQLITE_OK
341 }
342 catchsql {UPDATE t2 SET b=22, c=33}
343} {1 {not authorized}}
344do_test auth-1.44 {
345 execsql {SELECT * FROM t2}
346} {11 2 3}
347do_test auth-1.45 {
348 proc auth {code arg1 arg2} {
349 if {$code=="SQLITE_UPDATE" && $arg1=="t2" && $arg2=="b"} {
350 return SQLITE_IGNORE
351 }
352 return SQLITE_OK
353 }
354 catchsql {UPDATE t2 SET b=22, c=33}
355} {0 {}}
356do_test auth-1.46 {
357 execsql {SELECT * FROM t2}
358} {11 2 33}
359
360do_test auth-1.47 {
361 proc auth {code arg1 arg2} {
362 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
363 return SQLITE_DENY
364 }
365 return SQLITE_OK
366 }
367 catchsql {DELETE FROM t2 WHERE a=11}
368} {1 {not authorized}}
369do_test auth-1.48 {
370 execsql {SELECT * FROM t2}
371} {11 2 33}
372do_test auth-1.49 {
373 proc auth {code arg1 arg2} {
374 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
375 return SQLITE_IGNORE
376 }
377 return SQLITE_OK
378 }
379 catchsql {DELETE FROM t2 WHERE a=11}
380} {0 {}}
381do_test auth-1.50 {
382 execsql {SELECT * FROM t2}
383} {11 2 33}
384
385do_test auth-1.51 {
386 proc auth {code arg1 arg2} {
387 if {$code=="SQLITE_SELECT"} {
388 return SQLITE_DENY
389 }
390 return SQLITE_OK
391 }
392 catchsql {SELECT * FROM t2}
393} {1 {not authorized}}
394do_test auth-1.52 {
395 proc auth {code arg1 arg2} {
396 if {$code=="SQLITE_SELECT"} {
397 return SQLITE_IGNORE
398 }
399 return SQLITE_OK
400 }
401 catchsql {SELECT * FROM t2}
402} {0 {}}
403do_test auth-1.53 {
404 proc auth {code arg1 arg2} {
405 if {$code=="SQLITE_SELECT"} {
406 return SQLITE_OK
407 }
408 return SQLITE_OK
409 }
410 catchsql {SELECT * FROM t2}
411} {0 {11 2 33}}
412
413set f [open data1.txt w]
414puts $f "7:8:9"
415close $f
416do_test auth-1.54 {
417 proc auth {code arg1 arg2} {
418 if {$code=="SQLITE_COPY"} {
419 set ::authargs [list $arg1 $arg2]
420 return SQLITE_DENY
421 }
422 return SQLITE_OK
423 }
424 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'}
425} {1 {not authorized}}
426do_test auth-1.55 {
427 set ::authargs
428} {t2 data1.txt}
429do_test auth-1.56 {
430 execsql {SELECT * FROM t2}
431} {11 2 33}
432do_test auth-1.57 {
433 proc auth {code arg1 arg2} {
434 if {$code=="SQLITE_COPY"} {
435 set ::authargs [list $arg1 $arg2]
436 return SQLITE_IGNORE
437 }
438 return SQLITE_OK
439 }
440 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'}
441} {0 {}}
442do_test auth-1.58 {
443 set ::authargs
444} {t2 data1.txt}
445do_test auth-1.59 {
446 execsql {SELECT * FROM t2}
447} {11 2 33}
448do_test auth-1.60 {
449 proc auth {code arg1 arg2} {
450 if {$code=="SQLITE_COPY"} {
451 set ::authargs [list $arg1 $arg2]
452 return SQLITE_OK
453 }
454 return SQLITE_OK
455 }
456 catchsql {COPY t2 FROM 'data1.txt' USING DELIMITERS ':'}
457} {0 {}}
458do_test auth-1.61 {
459 set ::authargs
460} {t2 data1.txt}
461do_test auth-1.62 {
462 execsql {SELECT * FROM t2}
463} {11 2 33 7 8 9}
464
465do_test auth-1.63 {
466 proc auth {code arg1 arg2} {
467 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
468 return SQLITE_DENY
469 }
470 return SQLITE_OK
471 }
472 catchsql {DROP TABLE t2}
473} {1 {not authorized}}
474do_test auth-1.64 {
475 execsql {SELECT name FROM sqlite_master}
476} {t2}
477do_test auth-1.65 {
478 proc auth {code arg1 arg2} {
479 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
480 return SQLITE_DENY
481 }
482 return SQLITE_OK
483 }
484 catchsql {DROP TABLE t2}
485} {1 {not authorized}}
486do_test auth-1.66 {
487 execsql {SELECT name FROM sqlite_master}
488} {t2}
489do_test auth-1.67 {
490 proc auth {code arg1 arg2} {
491 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
492 return SQLITE_DENY
493 }
494 return SQLITE_OK
495 }
496 catchsql {DROP TABLE t1}
497} {1 {not authorized}}
498do_test auth-1.68 {
499 execsql {SELECT name FROM sqlite_temp_master}
500} {t1}
501do_test auth-1.69 {
502 proc auth {code arg1 arg2} {
503 if {$code=="SQLITE_DELETE" && $arg1=="t1"} {
504 return SQLITE_DENY
505 }
506 return SQLITE_OK
507 }
508 catchsql {DROP TABLE t1}
509} {1 {not authorized}}
510do_test auth-1.70 {
511 execsql {SELECT name FROM sqlite_temp_master}
512} {t1}
513
514do_test auth-1.71 {
515 proc auth {code arg1 arg2} {
516 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
517 return SQLITE_IGNORE
518 }
519 return SQLITE_OK
520 }
521 catchsql {DROP TABLE t2}
522} {0 {}}
523do_test auth-1.72 {
524 execsql {SELECT name FROM sqlite_master}
525} {t2}
526do_test auth-1.73 {
527 proc auth {code arg1 arg2} {
528 if {$code=="SQLITE_DELETE" && $arg1=="t2"} {
529 return SQLITE_IGNORE
530 }
531 return SQLITE_OK
532 }
533 catchsql {DROP TABLE t2}
534} {0 {}}
535do_test auth-1.74 {
536 execsql {SELECT name FROM sqlite_master}
537} {t2}
538do_test auth-1.75 {
539 proc auth {code arg1 arg2} {
540 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
541 return SQLITE_IGNORE
542 }
543 return SQLITE_OK
544 }
545 catchsql {DROP TABLE t1}
546} {0 {}}
547do_test auth-1.76 {
548 execsql {SELECT name FROM sqlite_temp_master}
549} {t1}
550do_test auth-1.77 {
551 proc auth {code arg1 arg2} {
552 if {$code=="SQLITE_DELETE" && $arg1=="t1"} {
553 return SQLITE_IGNORE
554 }
555 return SQLITE_OK
556 }
557 catchsql {DROP TABLE t1}
558} {0 {}}
559do_test auth-1.78 {
560 execsql {SELECT name FROM sqlite_temp_master}
561} {t1}
562
563do_test auth-1.79 {
564 proc auth {code arg1 arg2} {
565 if {$code=="SQLITE_CREATE_VIEW"} {
566 set ::authargs [list $arg1 $arg2]
567 return SQLITE_DENY
568 }
569 return SQLITE_OK
570 }
571 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
572} {1 {not authorized}}
573do_test auth-1.80 {
574 set ::authargs
575} {v1 {}}
576do_test auth-1.81 {
577 execsql {SELECT name FROM sqlite_master}
578} {t2}
579do_test auth-1.82 {
580 proc auth {code arg1 arg2} {
581 if {$code=="SQLITE_CREATE_VIEW"} {
582 set ::authargs [list $arg1 $arg2]
583 return SQLITE_IGNORE
584 }
585 return SQLITE_OK
586 }
587 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
588} {0 {}}
589do_test auth-1.83 {
590 set ::authargs
591} {v1 {}}
592do_test auth-1.84 {
593 execsql {SELECT name FROM sqlite_master}
594} {t2}
595
596do_test auth-1.85 {
597 proc auth {code arg1 arg2} {
598 if {$code=="SQLITE_CREATE_TEMP_VIEW"} {
599 set ::authargs [list $arg1 $arg2]
600 return SQLITE_DENY
601 }
602 return SQLITE_OK
603 }
604 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
605} {1 {not authorized}}
606do_test auth-1.86 {
607 set ::authargs
608} {v1 {}}
609do_test auth-1.87 {
610 execsql {SELECT name FROM sqlite_temp_master}
611} {t1}
612do_test auth-1.88 {
613 proc auth {code arg1 arg2} {
614 if {$code=="SQLITE_CREATE_TEMP_VIEW"} {
615 set ::authargs [list $arg1 $arg2]
616 return SQLITE_IGNORE
617 }
618 return SQLITE_OK
619 }
620 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
621} {0 {}}
622do_test auth-1.89 {
623 set ::authargs
624} {v1 {}}
625do_test auth-1.90 {
626 execsql {SELECT name FROM sqlite_temp_master}
627} {t1}
628
629do_test auth-1.91 {
630 proc auth {code arg1 arg2} {
631 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
632 return SQLITE_DENY
633 }
634 return SQLITE_OK
635 }
636 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
637} {1 {not authorized}}
638do_test auth-1.92 {
639 execsql {SELECT name FROM sqlite_master}
640} {t2}
641do_test auth-1.93 {
642 proc auth {code arg1 arg2} {
643 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
644 return SQLITE_IGNORE
645 }
646 return SQLITE_OK
647 }
648 catchsql {CREATE VIEW v1 AS SELECT a+1,b+1 FROM t2}
649} {0 {}}
650do_test auth-1.94 {
651 execsql {SELECT name FROM sqlite_master}
652} {t2}
653
654do_test auth-1.95 {
655 proc auth {code arg1 arg2} {
656 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
657 return SQLITE_DENY
658 }
659 return SQLITE_OK
660 }
661 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
662} {1 {not authorized}}
663do_test auth-1.96 {
664 execsql {SELECT name FROM sqlite_temp_master}
665} {t1}
666do_test auth-1.97 {
667 proc auth {code arg1 arg2} {
668 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
669 return SQLITE_IGNORE
670 }
671 return SQLITE_OK
672 }
673 catchsql {CREATE TEMPORARY VIEW v1 AS SELECT a+1,b+1 FROM t2}
674} {0 {}}
675do_test auth-1.98 {
676 execsql {SELECT name FROM sqlite_temp_master}
677} {t1}
678
679do_test auth-1.99 {
680 proc auth {code arg1 arg2} {
681 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
682 return SQLITE_DENY
683 }
684 return SQLITE_OK
685 }
686 catchsql {
687 CREATE VIEW v2 AS SELECT a+1,b+1 FROM t2;
688 DROP VIEW v2
689 }
690} {1 {not authorized}}
691do_test auth-1.100 {
692 execsql {SELECT name FROM sqlite_master}
693} {t2 v2}
694do_test auth-1.101 {
695 proc auth {code arg1 arg2} {
696 if {$code=="SQLITE_DROP_VIEW"} {
697 set ::authargs [list $arg1 $arg2]
698 return SQLITE_DENY
699 }
700 return SQLITE_OK
701 }
702 catchsql {DROP VIEW v2}
703} {1 {not authorized}}
704do_test auth-1.102 {
705 set ::authargs
706} {v2 {}}
707do_test auth-1.103 {
708 execsql {SELECT name FROM sqlite_master}
709} {t2 v2}
710do_test auth-1.104 {
711 proc auth {code arg1 arg2} {
712 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
713 return SQLITE_IGNORE
714 }
715 return SQLITE_OK
716 }
717 catchsql {DROP VIEW v2}
718} {0 {}}
719do_test auth-1.105 {
720 execsql {SELECT name FROM sqlite_master}
721} {t2 v2}
722do_test auth-1.106 {
723 proc auth {code arg1 arg2} {
724 if {$code=="SQLITE_DROP_VIEW"} {
725 set ::authargs [list $arg1 $arg2]
726 return SQLITE_IGNORE
727 }
728 return SQLITE_OK
729 }
730 catchsql {DROP VIEW v2}
731} {0 {}}
732do_test auth-1.107 {
733 set ::authargs
734} {v2 {}}
735do_test auth-1.108 {
736 execsql {SELECT name FROM sqlite_master}
737} {t2 v2}
738do_test auth-1.109 {
739 proc auth {code arg1 arg2} {
740 if {$code=="SQLITE_DROP_VIEW"} {
741 set ::authargs [list $arg1 $arg2]
742 return SQLITE_OK
743 }
744 return SQLITE_OK
745 }
746 catchsql {DROP VIEW v2}
747} {0 {}}
748do_test auth-1.110 {
749 set ::authargs
750} {v2 {}}
751do_test auth-1.111 {
752 execsql {SELECT name FROM sqlite_master}
753} {t2}
754
755
756do_test auth-1.112 {
757 proc auth {code arg1 arg2} {
758 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
759 return SQLITE_DENY
760 }
761 return SQLITE_OK
762 }
763 catchsql {
764 CREATE TEMP VIEW v1 AS SELECT a+1,b+1 FROM t1;
765 DROP VIEW v1
766 }
767} {1 {not authorized}}
768do_test auth-1.113 {
769 execsql {SELECT name FROM sqlite_temp_master}
770} {t1 v1}
771do_test auth-1.114 {
772 proc auth {code arg1 arg2} {
773 if {$code=="SQLITE_DROP_TEMP_VIEW"} {
774 set ::authargs [list $arg1 $arg2]
775 return SQLITE_DENY
776 }
777 return SQLITE_OK
778 }
779 catchsql {DROP VIEW v1}
780} {1 {not authorized}}
781do_test auth-1.115 {
782 set ::authargs
783} {v1 {}}
784do_test auth-1.116 {
785 execsql {SELECT name FROM sqlite_temp_master}
786} {t1 v1}
787do_test auth-1.117 {
788 proc auth {code arg1 arg2} {
789 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
790 return SQLITE_IGNORE
791 }
792 return SQLITE_OK
793 }
794 catchsql {DROP VIEW v1}
795} {0 {}}
796do_test auth-1.118 {
797 execsql {SELECT name FROM sqlite_temp_master}
798} {t1 v1}
799do_test auth-1.119 {
800 proc auth {code arg1 arg2} {
801 if {$code=="SQLITE_DROP_TEMP_VIEW"} {
802 set ::authargs [list $arg1 $arg2]
803 return SQLITE_IGNORE
804 }
805 return SQLITE_OK
806 }
807 catchsql {DROP VIEW v1}
808} {0 {}}
809do_test auth-1.120 {
810 set ::authargs
811} {v1 {}}
812do_test auth-1.121 {
813 execsql {SELECT name FROM sqlite_temp_master}
814} {t1 v1}
815do_test auth-1.122 {
816 proc auth {code arg1 arg2} {
817 if {$code=="SQLITE_DROP_TEMP_VIEW"} {
818 set ::authargs [list $arg1 $arg2]
819 return SQLITE_OK
820 }
821 return SQLITE_OK
822 }
823 catchsql {DROP VIEW v1}
824} {0 {}}
825do_test auth-1.123 {
826 set ::authargs
827} {v1 {}}
828do_test auth-1.124 {
829 execsql {SELECT name FROM sqlite_temp_master}
830} {t1}
831
832do_test auth-1.125 {
833 proc auth {code arg1 arg2} {
834 if {$code=="SQLITE_CREATE_TRIGGER"} {
835 set ::authargs [list $arg1 $arg2]
836 return SQLITE_DENY
837 }
838 return SQLITE_OK
839 }
840 catchsql {
841 CREATE TRIGGER r2 DELETE on t2 BEGIN
842 SELECT NULL;
843 END;
844 }
845} {1 {not authorized}}
846do_test auth-1.126 {
847 set ::authargs
848} {r2 t2}
849do_test auth-1.127 {
850 execsql {SELECT name FROM sqlite_master}
851} {t2}
852do_test auth-1.128 {
853 proc auth {code arg1 arg2} {
854 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
855 return SQLITE_DENY
856 }
857 return SQLITE_OK
858 }
859 catchsql {
860 CREATE TRIGGER r2 DELETE on t2 BEGIN
861 SELECT NULL;
862 END;
863 }
864} {1 {not authorized}}
865do_test auth-1.129 {
866 execsql {SELECT name FROM sqlite_master}
867} {t2}
868do_test auth-1.130 {
869 proc auth {code arg1 arg2} {
870 if {$code=="SQLITE_CREATE_TRIGGER"} {
871 set ::authargs [list $arg1 $arg2]
872 return SQLITE_IGNORE
873 }
874 return SQLITE_OK
875 }
876 catchsql {
877 CREATE TRIGGER r2 DELETE on t2 BEGIN
878 SELECT NULL;
879 END;
880 }
881} {0 {}}
882do_test auth-1.131 {
883 set ::authargs
884} {r2 t2}
885do_test auth-1.132 {
886 execsql {SELECT name FROM sqlite_master}
887} {t2}
888do_test auth-1.133 {
889 proc auth {code arg1 arg2} {
890 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
891 return SQLITE_IGNORE
892 }
893 return SQLITE_OK
894 }
895 catchsql {
896 CREATE TRIGGER r2 DELETE on t2 BEGIN
897 SELECT NULL;
898 END;
899 }
900} {0 {}}
901do_test auth-1.134 {
902 execsql {SELECT name FROM sqlite_master}
903} {t2}
904do_test auth-1.135 {
905 proc auth {code arg1 arg2} {
906 if {$code=="SQLITE_CREATE_TRIGGER"} {
907 set ::authargs [list $arg1 $arg2]
908 return SQLITE_OK
909 }
910 return SQLITE_OK
911 }
912 catchsql {
913 CREATE TRIGGER r2 DELETE on t2 BEGIN
914 SELECT NULL;
915 END;
916 }
917} {0 {}}
918do_test auth-1.136 {
919 set ::authargs
920} {r2 t2}
921do_test auth-1.137 {
922 execsql {SELECT name FROM sqlite_master}
923} {t2 r2}
924
925do_test auth-1.138 {
926 proc auth {code arg1 arg2} {
927 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} {
928 set ::authargs [list $arg1 $arg2]
929 return SQLITE_DENY
930 }
931 return SQLITE_OK
932 }
933 catchsql {
934 CREATE TRIGGER r1 DELETE on t1 BEGIN
935 SELECT NULL;
936 END;
937 }
938} {1 {not authorized}}
939do_test auth-1.139 {
940 set ::authargs
941} {r1 t1}
942do_test auth-1.140 {
943 execsql {SELECT name FROM sqlite_temp_master}
944} {t1}
945do_test auth-1.141 {
946 proc auth {code arg1 arg2} {
947 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
948 return SQLITE_DENY
949 }
950 return SQLITE_OK
951 }
952 catchsql {
953 CREATE TRIGGER r1 DELETE on t1 BEGIN
954 SELECT NULL;
955 END;
956 }
957} {1 {not authorized}}
958do_test auth-1.142 {
959 execsql {SELECT name FROM sqlite_temp_master}
960} {t1}
961do_test auth-1.143 {
962 proc auth {code arg1 arg2} {
963 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} {
964 set ::authargs [list $arg1 $arg2]
965 return SQLITE_IGNORE
966 }
967 return SQLITE_OK
968 }
969 catchsql {
970 CREATE TRIGGER r1 DELETE on t1 BEGIN
971 SELECT NULL;
972 END;
973 }
974} {0 {}}
975do_test auth-1.144 {
976 set ::authargs
977} {r1 t1}
978do_test auth-1.145 {
979 execsql {SELECT name FROM sqlite_temp_master}
980} {t1}
981do_test auth-1.146 {
982 proc auth {code arg1 arg2} {
983 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
984 return SQLITE_IGNORE
985 }
986 return SQLITE_OK
987 }
988 catchsql {
989 CREATE TRIGGER r1 DELETE on t1 BEGIN
990 SELECT NULL;
991 END;
992 }
993} {0 {}}
994do_test auth-1.147 {
995 execsql {SELECT name FROM sqlite_temp_master}
996} {t1}
997do_test auth-1.148 {
998 proc auth {code arg1 arg2} {
999 if {$code=="SQLITE_CREATE_TEMP_TRIGGER"} {
1000 set ::authargs [list $arg1 $arg2]
1001 return SQLITE_OK
1002 }
1003 return SQLITE_OK
1004 }
1005 catchsql {
1006 CREATE TRIGGER r1 DELETE on t1 BEGIN
1007 SELECT NULL;
1008 END;
1009 }
1010} {0 {}}
1011do_test auth-1.149 {
1012 set ::authargs
1013} {r1 t1}
1014do_test auth-1.150 {
1015 execsql {SELECT name FROM sqlite_temp_master}
1016} {t1 r1}
1017
1018do_test auth-1.151 {
1019 proc auth {code arg1 arg2} {
1020 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1021 return SQLITE_DENY
1022 }
1023 return SQLITE_OK
1024 }
1025 catchsql {DROP TRIGGER r2}
1026} {1 {not authorized}}
1027do_test auth-1.152 {
1028 execsql {SELECT name FROM sqlite_master}
1029} {t2 r2}
1030do_test auth-1.153 {
1031 proc auth {code arg1 arg2} {
1032 if {$code=="SQLITE_DROP_TRIGGER"} {
1033 set ::authargs [list $arg1 $arg2]
1034 return SQLITE_DENY
1035 }
1036 return SQLITE_OK
1037 }
1038 catchsql {DROP TRIGGER r2}
1039} {1 {not authorized}}
1040do_test auth-1.154 {
1041 set ::authargs
1042} {r2 t2}
1043do_test auth-1.155 {
1044 execsql {SELECT name FROM sqlite_master}
1045} {t2 r2}
1046do_test auth-1.156 {
1047 proc auth {code arg1 arg2} {
1048 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1049 return SQLITE_IGNORE
1050 }
1051 return SQLITE_OK
1052 }
1053 catchsql {DROP TRIGGER r2}
1054} {0 {}}
1055do_test auth-1.157 {
1056 execsql {SELECT name FROM sqlite_master}
1057} {t2 r2}
1058do_test auth-1.158 {
1059 proc auth {code arg1 arg2} {
1060 if {$code=="SQLITE_DROP_TRIGGER"} {
1061 set ::authargs [list $arg1 $arg2]
1062 return SQLITE_IGNORE
1063 }
1064 return SQLITE_OK
1065 }
1066 catchsql {DROP TRIGGER r2}
1067} {0 {}}
1068do_test auth-1.159 {
1069 set ::authargs
1070} {r2 t2}
1071do_test auth-1.160 {
1072 execsql {SELECT name FROM sqlite_master}
1073} {t2 r2}
1074do_test auth-1.161 {
1075 proc auth {code arg1 arg2} {
1076 if {$code=="SQLITE_DROP_TRIGGER"} {
1077 set ::authargs [list $arg1 $arg2]
1078 return SQLITE_OK
1079 }
1080 return SQLITE_OK
1081 }
1082 catchsql {DROP TRIGGER r2}
1083} {0 {}}
1084do_test auth-1.162 {
1085 set ::authargs
1086} {r2 t2}
1087do_test auth-1.163 {
1088 execsql {SELECT name FROM sqlite_master}
1089} {t2}
1090
1091do_test auth-1.164 {
1092 proc auth {code arg1 arg2} {
1093 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1094 return SQLITE_DENY
1095 }
1096 return SQLITE_OK
1097 }
1098 catchsql {DROP TRIGGER r1}
1099} {1 {not authorized}}
1100do_test auth-1.165 {
1101 execsql {SELECT name FROM sqlite_temp_master}
1102} {t1 r1}
1103do_test auth-1.166 {
1104 proc auth {code arg1 arg2} {
1105 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} {
1106 set ::authargs [list $arg1 $arg2]
1107 return SQLITE_DENY
1108 }
1109 return SQLITE_OK
1110 }
1111 catchsql {DROP TRIGGER r1}
1112} {1 {not authorized}}
1113do_test auth-1.167 {
1114 set ::authargs
1115} {r1 t1}
1116do_test auth-1.168 {
1117 execsql {SELECT name FROM sqlite_temp_master}
1118} {t1 r1}
1119do_test auth-1.169 {
1120 proc auth {code arg1 arg2} {
1121 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1122 return SQLITE_IGNORE
1123 }
1124 return SQLITE_OK
1125 }
1126 catchsql {DROP TRIGGER r1}
1127} {0 {}}
1128do_test auth-1.170 {
1129 execsql {SELECT name FROM sqlite_temp_master}
1130} {t1 r1}
1131do_test auth-1.171 {
1132 proc auth {code arg1 arg2} {
1133 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} {
1134 set ::authargs [list $arg1 $arg2]
1135 return SQLITE_IGNORE
1136 }
1137 return SQLITE_OK
1138 }
1139 catchsql {DROP TRIGGER r1}
1140} {0 {}}
1141do_test auth-1.172 {
1142 set ::authargs
1143} {r1 t1}
1144do_test auth-1.173 {
1145 execsql {SELECT name FROM sqlite_temp_master}
1146} {t1 r1}
1147do_test auth-1.174 {
1148 proc auth {code arg1 arg2} {
1149 if {$code=="SQLITE_DROP_TEMP_TRIGGER"} {
1150 set ::authargs [list $arg1 $arg2]
1151 return SQLITE_OK
1152 }
1153 return SQLITE_OK
1154 }
1155 catchsql {DROP TRIGGER r1}
1156} {0 {}}
1157do_test auth-1.175 {
1158 set ::authargs
1159} {r1 t1}
1160do_test auth-1.176 {
1161 execsql {SELECT name FROM sqlite_temp_master}
1162} {t1}
1163
1164do_test auth-1.177 {
1165 proc auth {code arg1 arg2} {
1166 if {$code=="SQLITE_CREATE_INDEX"} {
1167 set ::authargs [list $arg1 $arg2]
1168 return SQLITE_DENY
1169 }
1170 return SQLITE_OK
1171 }
1172 catchsql {CREATE INDEX i2 ON t2(a)}
1173} {1 {not authorized}}
1174do_test auth-1.178 {
1175 set ::authargs
1176} {i2 t2}
1177do_test auth-1.179 {
1178 execsql {SELECT name FROM sqlite_master}
1179} {t2}
1180do_test auth-1.180 {
1181 proc auth {code arg1 arg2} {
1182 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
1183 return SQLITE_DENY
1184 }
1185 return SQLITE_OK
1186 }
1187 catchsql {CREATE INDEX i2 ON t2(a)}
1188} {1 {not authorized}}
1189do_test auth-1.181 {
1190 execsql {SELECT name FROM sqlite_master}
1191} {t2}
1192do_test auth-1.182 {
1193 proc auth {code arg1 arg2} {
1194 if {$code=="SQLITE_CREATE_INDEX"} {
1195 set ::authargs [list $arg1 $arg2]
1196 return SQLITE_IGNORE
1197 }
1198 return SQLITE_OK
1199 }
1200 catchsql {CREATE INDEX i2 ON t2(b)}
1201} {0 {}}
1202do_test auth-1.183 {
1203 set ::authargs
1204} {i2 t2}
1205do_test auth-1.184 {
1206 execsql {SELECT name FROM sqlite_master}
1207} {t2}
1208do_test auth-1.185 {
1209 proc auth {code arg1 arg2} {
1210 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_master"} {
1211 return SQLITE_IGNORE
1212 }
1213 return SQLITE_OK
1214 }
1215 catchsql {CREATE INDEX i2 ON t2(b)}
1216} {0 {}}
1217do_test auth-1.186 {
1218 execsql {SELECT name FROM sqlite_master}
1219} {t2}
1220do_test auth-1.187 {
1221 proc auth {code arg1 arg2} {
1222 if {$code=="SQLITE_CREATE_INDEX"} {
1223 set ::authargs [list $arg1 $arg2]
1224 return SQLITE_OK
1225 }
1226 return SQLITE_OK
1227 }
1228 catchsql {CREATE INDEX i2 ON t2(a)}
1229} {0 {}}
1230do_test auth-1.188 {
1231 set ::authargs
1232} {i2 t2}
1233do_test auth-1.189 {
1234 execsql {SELECT name FROM sqlite_master}
1235} {t2 i2}
1236
1237do_test auth-1.190 {
1238 proc auth {code arg1 arg2} {
1239 if {$code=="SQLITE_CREATE_TEMP_INDEX"} {
1240 set ::authargs [list $arg1 $arg2]
1241 return SQLITE_DENY
1242 }
1243 return SQLITE_OK
1244 }
1245 catchsql {CREATE INDEX i1 ON t1(a)}
1246} {1 {not authorized}}
1247do_test auth-1.191 {
1248 set ::authargs
1249} {i1 t1}
1250do_test auth-1.192 {
1251 execsql {SELECT name FROM sqlite_temp_master}
1252} {t1}
1253do_test auth-1.193 {
1254 proc auth {code arg1 arg2} {
1255 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
1256 return SQLITE_DENY
1257 }
1258 return SQLITE_OK
1259 }
1260 catchsql {CREATE INDEX i1 ON t1(b)}
1261} {1 {not authorized}}
1262do_test auth-1.194 {
1263 execsql {SELECT name FROM sqlite_temp_master}
1264} {t1}
1265do_test auth-1.195 {
1266 proc auth {code arg1 arg2} {
1267 if {$code=="SQLITE_CREATE_TEMP_INDEX"} {
1268 set ::authargs [list $arg1 $arg2]
1269 return SQLITE_IGNORE
1270 }
1271 return SQLITE_OK
1272 }
1273 catchsql {CREATE INDEX i1 ON t1(b)}
1274} {0 {}}
1275do_test auth-1.196 {
1276 set ::authargs
1277} {i1 t1}
1278do_test auth-1.197 {
1279 execsql {SELECT name FROM sqlite_temp_master}
1280} {t1}
1281do_test auth-1.198 {
1282 proc auth {code arg1 arg2} {
1283 if {$code=="SQLITE_INSERT" && $arg1=="sqlite_temp_master"} {
1284 return SQLITE_IGNORE
1285 }
1286 return SQLITE_OK
1287 }
1288 catchsql {CREATE INDEX i1 ON t1(c)}
1289} {0 {}}
1290do_test auth-1.199 {
1291 execsql {SELECT name FROM sqlite_temp_master}
1292} {t1}
1293do_test auth-1.200 {
1294 proc auth {code arg1 arg2} {
1295 if {$code=="SQLITE_CREATE_TEMP_INDEX"} {
1296 set ::authargs [list $arg1 $arg2]
1297 return SQLITE_OK
1298 }
1299 return SQLITE_OK
1300 }
1301 catchsql {CREATE INDEX i1 ON t1(a)}
1302} {0 {}}
1303do_test auth-1.201 {
1304 set ::authargs
1305} {i1 t1}
1306do_test auth-1.202 {
1307 execsql {SELECT name FROM sqlite_temp_master}
1308} {t1 i1}
1309
1310do_test auth-1.203 {
1311 proc auth {code arg1 arg2} {
1312 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1313 return SQLITE_DENY
1314 }
1315 return SQLITE_OK
1316 }
1317 catchsql {DROP INDEX i2}
1318} {1 {not authorized}}
1319do_test auth-1.204 {
1320 execsql {SELECT name FROM sqlite_master}
1321} {t2 i2}
1322do_test auth-1.205 {
1323 proc auth {code arg1 arg2} {
1324 if {$code=="SQLITE_DROP_INDEX"} {
1325 set ::authargs [list $arg1 $arg2]
1326 return SQLITE_DENY
1327 }
1328 return SQLITE_OK
1329 }
1330 catchsql {DROP INDEX i2}
1331} {1 {not authorized}}
1332do_test auth-1.206 {
1333 set ::authargs
1334} {i2 t2}
1335do_test auth-1.207 {
1336 execsql {SELECT name FROM sqlite_master}
1337} {t2 i2}
1338do_test auth-1.208 {
1339 proc auth {code arg1 arg2} {
1340 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_master"} {
1341 return SQLITE_IGNORE
1342 }
1343 return SQLITE_OK
1344 }
1345 catchsql {DROP INDEX i2}
1346} {0 {}}
1347do_test auth-1.209 {
1348 execsql {SELECT name FROM sqlite_master}
1349} {t2 i2}
1350do_test auth-1.210 {
1351 proc auth {code arg1 arg2} {
1352 if {$code=="SQLITE_DROP_INDEX"} {
1353 set ::authargs [list $arg1 $arg2]
1354 return SQLITE_IGNORE
1355 }
1356 return SQLITE_OK
1357 }
1358 catchsql {DROP INDEX i2}
1359} {0 {}}
1360do_test auth-1.211 {
1361 set ::authargs
1362} {i2 t2}
1363do_test auth-1.212 {
1364 execsql {SELECT name FROM sqlite_master}
1365} {t2 i2}
1366do_test auth-1.213 {
1367 proc auth {code arg1 arg2} {
1368 if {$code=="SQLITE_DROP_INDEX"} {
1369 set ::authargs [list $arg1 $arg2]
1370 return SQLITE_OK
1371 }
1372 return SQLITE_OK
1373 }
1374 catchsql {DROP INDEX i2}
1375} {0 {}}
1376do_test auth-1.214 {
1377 set ::authargs
1378} {i2 t2}
1379do_test auth-1.215 {
1380 execsql {SELECT name FROM sqlite_master}
1381} {t2}
1382
1383do_test auth-1.216 {
1384 proc auth {code arg1 arg2} {
1385 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1386 return SQLITE_DENY
1387 }
1388 return SQLITE_OK
1389 }
1390 catchsql {DROP INDEX i1}
1391} {1 {not authorized}}
1392do_test auth-1.217 {
1393 execsql {SELECT name FROM sqlite_temp_master}
1394} {t1 i1}
1395do_test auth-1.218 {
1396 proc auth {code arg1 arg2} {
1397 if {$code=="SQLITE_DROP_TEMP_INDEX"} {
1398 set ::authargs [list $arg1 $arg2]
1399 return SQLITE_DENY
1400 }
1401 return SQLITE_OK
1402 }
1403 catchsql {DROP INDEX i1}
1404} {1 {not authorized}}
1405do_test auth-1.219 {
1406 set ::authargs
1407} {i1 t1}
1408do_test auth-1.220 {
1409 execsql {SELECT name FROM sqlite_temp_master}
1410} {t1 i1}
1411do_test auth-1.221 {
1412 proc auth {code arg1 arg2} {
1413 if {$code=="SQLITE_DELETE" && $arg1=="sqlite_temp_master"} {
1414 return SQLITE_IGNORE
1415 }
1416 return SQLITE_OK
1417 }
1418 catchsql {DROP INDEX i1}
1419} {0 {}}
1420do_test auth-1.222 {
1421 execsql {SELECT name FROM sqlite_temp_master}
1422} {t1 i1}
1423do_test auth-1.223 {
1424 proc auth {code arg1 arg2} {
1425 if {$code=="SQLITE_DROP_TEMP_INDEX"} {
1426 set ::authargs [list $arg1 $arg2]
1427 return SQLITE_IGNORE
1428 }
1429 return SQLITE_OK
1430 }
1431 catchsql {DROP INDEX i1}
1432} {0 {}}
1433do_test auth-1.224 {
1434 set ::authargs
1435} {i1 t1}
1436do_test auth-1.225 {
1437 execsql {SELECT name FROM sqlite_temp_master}
1438} {t1 i1}
1439do_test auth-1.226 {
1440 proc auth {code arg1 arg2} {
1441 if {$code=="SQLITE_DROP_TEMP_INDEX"} {
1442 set ::authargs [list $arg1 $arg2]
1443 return SQLITE_OK
1444 }
1445 return SQLITE_OK
1446 }
1447 catchsql {DROP INDEX i1}
1448} {0 {}}
1449do_test auth-1.227 {
1450 set ::authargs
1451} {i1 t1}
1452do_test auth-1.228 {
1453 execsql {SELECT name FROM sqlite_temp_master}
1454} {t1}
1455
1456do_test auth-1.229 {
1457 proc auth {code arg1 arg2} {
1458 if {$code=="SQLITE_PRAGMA"} {
1459 set ::authargs [list $arg1 $arg2]
1460 return SQLITE_DENY
1461 }
1462 return SQLITE_OK
1463 }
1464 catchsql {PRAGMA full_column_names=on}
1465} {1 {not authorized}}
1466do_test auth-1.230 {
1467 set ::authargs
1468} {full_column_names on}
1469do_test auth-1.231 {
1470 execsql2 {SELECT a FROM t2}
1471} {a 11 a 7}
1472do_test auth-1.232 {
1473 proc auth {code arg1 arg2} {
1474 if {$code=="SQLITE_PRAGMA"} {
1475 set ::authargs [list $arg1 $arg2]
1476 return SQLITE_IGNORE
1477 }
1478 return SQLITE_OK
1479 }
1480 catchsql {PRAGMA full_column_names=on}
1481} {0 {}}
1482do_test auth-1.233 {
1483 set ::authargs
1484} {full_column_names on}
1485do_test auth-1.234 {
1486 execsql2 {SELECT a FROM t2}
1487} {a 11 a 7}
1488do_test auth-1.235 {
1489 proc auth {code arg1 arg2} {
1490 if {$code=="SQLITE_PRAGMA"} {
1491 set ::authargs [list $arg1 $arg2]
1492 return SQLITE_OK
1493 }
1494 return SQLITE_OK
1495 }
1496 catchsql {PRAGMA full_column_names=on}
1497} {0 {}}
1498do_test auth-1.236 {
1499 execsql2 {SELECT a FROM t2}
1500} {t2.a 11 t2.a 7}
1501do_test auth-1.237 {
1502 proc auth {code arg1 arg2} {
1503 if {$code=="SQLITE_PRAGMA"} {
1504 set ::authargs [list $arg1 $arg2]
1505 return SQLITE_OK
1506 }
1507 return SQLITE_OK
1508 }
1509 catchsql {PRAGMA full_column_names=OFF}
1510} {0 {}}
1511do_test auth-1.238 {
1512 set ::authargs
1513} {full_column_names OFF}
1514do_test auth-1.239 {
1515 execsql2 {SELECT a FROM t2}
1516} {a 11 a 7}
drhe5f9c642003-01-13 23:27:31 +00001517
drh2c3831c2003-01-14 13:48:20 +00001518do_test auth-1.240 {
1519 proc auth {code arg1 arg2} {
1520 if {$code=="SQLITE_TRANSACTION"} {
1521 set ::authargs [list $arg1 $arg2]
1522 return SQLITE_DENY
1523 }
1524 return SQLITE_OK
1525 }
1526 catchsql {BEGIN}
1527} {1 {not authorized}}
1528do_test auth-1.241 {
1529 set ::authargs
1530} {BEGIN {}}
1531do_test auth-1.242 {
1532 proc auth {code arg1 arg2} {
1533 if {$code=="SQLITE_TRANSACTION" && $arg1!="BEGIN"} {
1534 set ::authargs [list $arg1 $arg2]
1535 return SQLITE_DENY
1536 }
1537 return SQLITE_OK
1538 }
1539 catchsql {BEGIN; INSERT INTO t2 VALUES(44,55,66); COMMIT}
1540} {1 {not authorized}}
1541do_test auth-1.243 {
1542 set ::authargs
1543} {COMMIT {}}
1544do_test auth-1.244 {
1545 execsql {SELECT * FROM t2}
1546} {11 2 33 7 8 9 44 55 66}
1547do_test auth-1.245 {
1548 catchsql {ROLLBACK}
1549} {1 {not authorized}}
1550do_test auth-1.246 {
1551 set ::authargs
1552} {ROLLBACK {}}
1553do_test auth-1.247 {
1554 catchsql {END TRANSACTION}
1555} {1 {not authorized}}
1556do_test auth-1.248 {
1557 set ::authargs
1558} {COMMIT {}}
1559do_test auth-1.249 {
1560 sqlite_set_authorizer $::DB {}
1561 catchsql {ROLLBACK}
1562} {0 {}}
1563do_test auth-1.250 {
1564 execsql {SELECT * FROM t2}
1565} {11 2 33 7 8 9}
1566
1567do_test auth-2.1 {
1568 proc auth {code arg1 arg2} {
1569 if {$code=="SQLITE_READ" && $arg1=="t3" && $arg2=="x"} {
1570 return SQLITE_DENY
1571 }
1572 return SQLITE_OK
1573 }
1574 sqlite_set_authorizer $::DB ::auth
1575 execsql {CREATE TABLE t3(x INTEGER PRIMARY KEY, y, z)}
1576 catchsql {SELECT * FROM t3}
1577} {1 {access to t3.x is prohibited}}
1578do_test auth-2.1 {
1579 catchsql {SELECT y,z FROM t3}
1580} {0 {}}
1581do_test auth-2.2 {
1582 catchsql {SELECT ROWID,y,z FROM t3}
1583} {1 {access to t3.x is prohibited}}
1584do_test auth-2.3 {
1585 catchsql {SELECT OID,y,z FROM t3}
1586} {1 {access to t3.x is prohibited}}
1587do_test auth-2.4 {
1588 proc auth {code arg1 arg2} {
1589 if {$code=="SQLITE_READ" && $arg1=="t3" && $arg2=="x"} {
1590 return SQLITE_IGNORE
1591 }
1592 return SQLITE_OK
1593 }
1594 execsql {INSERT INTO t3 VALUES(44,55,66)}
1595 catchsql {SELECT * FROM t3}
1596} {0 {{} 55 66}}
1597do_test auth-2.5 {
1598 catchsql {SELECT rowid,y,z FROM t3}
1599} {0 {{} 55 66}}
1600do_test auth-2.6 {
1601 proc auth {code arg1 arg2} {
1602 if {$code=="SQLITE_READ" && $arg1=="t3" && $arg2=="ROWID"} {
1603 return SQLITE_IGNORE
1604 }
1605 return SQLITE_OK
1606 }
1607 catchsql {SELECT * FROM t3}
1608} {0 {44 55 66}}
1609do_test auth-2.7 {
1610 catchsql {SELECT ROWID,y,z FROM t3}
1611} {0 {44 55 66}}
1612do_test auth-2.8 {
1613 proc auth {code arg1 arg2} {
1614 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="ROWID"} {
1615 return SQLITE_IGNORE
1616 }
1617 return SQLITE_OK
1618 }
1619 catchsql {SELECT ROWID,b,c FROM t2}
1620} {0 {{} 2 33 {} 8 9}}
drhdcd997e2003-01-31 17:21:49 +00001621do_test auth-2.9.1 {
drh2c3831c2003-01-14 13:48:20 +00001622 proc auth {code arg1 arg2} {
1623 if {$code=="SQLITE_READ" && $arg1=="t2" && $arg2=="ROWID"} {
1624 return bogus
1625 }
1626 return SQLITE_OK
1627 }
1628 catchsql {SELECT ROWID,b,c FROM t2}
1629} {1 {illegal return value (999) from the authorization function - should be SQLITE_OK, SQLITE_IGNORE, or SQLITE_DENY}}
drhdcd997e2003-01-31 17:21:49 +00001630do_test auth-2.9.2 {
1631 db errorcode
1632} {21}
drh2c3831c2003-01-14 13:48:20 +00001633do_test auth-2.10 {
1634 proc auth {code arg1 arg2} {
1635 if {$code=="SQLITE_SELECT"} {
1636 return bogus
1637 }
1638 return SQLITE_OK
1639 }
1640 catchsql {SELECT ROWID,b,c FROM t2}
1641} {1 {illegal return value (1) from the authorization function - should be SQLITE_OK, SQLITE_IGNORE, or SQLITE_DENY}}
1642do_test auth-2.11 {
1643 proc auth {code arg1 arg2} {
1644 if {$code=="SQLITE_READ" && $arg2=="a"} {
1645 return SQLITE_IGNORE
1646 }
1647 return SQLITE_OK
1648 }
1649 catchsql {SELECT * FROM t2, t3}
1650} {0 {{} 2 33 44 55 66 {} 8 9 44 55 66}}
1651do_test auth-2.11 {
1652 proc auth {code arg1 arg2} {
1653 if {$code=="SQLITE_READ" && $arg2=="x"} {
1654 return SQLITE_IGNORE
1655 }
1656 return SQLITE_OK
1657 }
1658 catchsql {SELECT * FROM t2, t3}
1659} {0 {11 2 33 {} 55 66 7 8 9 {} 55 66}}
drhe5f9c642003-01-13 23:27:31 +00001660
drh1962bda2003-01-12 19:33:52 +00001661} ;# End of the "if( db command exists )"
1662
1663finish_test