github.com/jdgcs/sqlite3@v1.12.1-0.20210908114423-bc5f96e4dd51/testdata/tcl/alterauth.test (about)

     1  # 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  
    13  set testdir [file dirname $argv0]
    14  
    15  source $testdir/tester.tcl
    16  
    17  # If SQLITE_OMIT_ALTERTABLE is defined, omit this file.
    18  ifcapable !altertable {
    19    finish_test
    20    return
    21  }
    22  set testprefix alterauth
    23  
    24  set ::auth [list]
    25  proc xAuth {type args} {
    26    if {$type == "SQLITE_ALTER_TABLE"} {
    27      lappend ::auth [concat $type [lrange $args 0 3]]
    28    }
    29    return SQLITE_OK
    30  }
    31  db auth xAuth
    32  
    33  do_execsql_test 1.0 { CREATE TABLE t1(a, b, c); }
    34  
    35  do_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  
    41  do_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  
    47  do_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  
    53  proc xAuth {type args} {
    54    if {$type == "SQLITE_ALTER_TABLE"} {
    55      return SQLITE_DENY
    56    }
    57    return SQLITE_OK
    58  }
    59  
    60  do_test 2.1 {
    61    catchsql { ALTER TABLE t2 RENAME TO t3 }
    62  } {1 {not authorized}}
    63  
    64  do_test 2.2 {
    65    catchsql { ALTER TABLE t2 RENAME d TO ddd }
    66  } {1 {not authorized}}
    67  
    68  do_test 2.3 {
    69    catchsql { ALTER TABLE t2 ADD COLUMN e }
    70  } {1 {not authorized}}
    71  
    72  finish_test