aboutsummaryrefslogtreecommitdiff
path: root/sqlite3_test.go
diff options
context:
space:
mode:
authorGrzegorz Marszałek <gm@itbce.com>2018-08-25 20:25:16 +0200
committerGrzegorz Marszałek <gm@itbce.com>2018-08-25 20:25:16 +0200
commite30f9ffa3a5542b36b683f75e443b0598b33813b (patch)
treeb9d993aec1f6aa203686ba727908c150d2e2dea5 /sqlite3_test.go
parentEnsure that SqliteStmt.closed property is guarded. (diff)
downloadgolite-e30f9ffa3a5542b36b683f75e443b0598b33813b.tar.gz
golite-e30f9ffa3a5542b36b683f75e443b0598b33813b.tar.xz
implementation of set_authorizer interface
Diffstat (limited to 'sqlite3_test.go')
-rw-r--r--sqlite3_test.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/sqlite3_test.go b/sqlite3_test.go
index 75d8f52..bfed027 100644
--- a/sqlite3_test.go
+++ b/sqlite3_test.go
@@ -1574,6 +1574,47 @@ func TestUpdateAndTransactionHooks(t *testing.T) {
}
}
+func TestAuthorizer(t *testing.T) {
+ var authorizerReturn = 0
+
+ sql.Register("sqlite3_Authorizer", &SQLiteDriver{
+ ConnectHook: func(conn *SQLiteConn) error {
+ conn.RegisterAuthorizer(func(op int, arg1, arg2, arg3 string) int {
+ return authorizerReturn
+ })
+ return nil
+ },
+ })
+ db, err := sql.Open("sqlite3_Authorizer", ":memory:")
+ if err != nil {
+ t.Fatal("Failed to open database:", err)
+ }
+ defer db.Close()
+
+ statements := []string{
+ "create table foo (id integer primary key, name varchar)",
+ "insert into foo values (9, 'test9')",
+ "update foo set name = 'test99' where id = 9",
+ "select * from foo",
+ }
+
+ authorizerReturn = SQLITE_OK
+ for _, statement := range statements {
+ _, err = db.Exec(statement)
+ if err != nil {
+ t.Fatalf("No error expected [%v]: %v", statement, err)
+ }
+ }
+
+ authorizerReturn = SQLITE_DENY
+ for _, statement := range statements {
+ _, err = db.Exec(statement)
+ if err == nil {
+ t.Fatalf("Authorizer didn't worked - nil received, but error expected: [%v]", statement)
+ }
+ }
+}
+
func TestNilAndEmptyBytes(t *testing.T) {
db, err := sql.Open("sqlite3", ":memory:")
if err != nil {