diff options
author | mattn <mattn.jp@gmail.com> | 2018-09-11 09:39:02 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-11 09:39:02 +0900 |
commit | 0eec847b70cde89021ef4884356f1189d3e8401c (patch) | |
tree | 1d1805988ed6fe617c3c78f533385ef02479fdc7 /sqlite3_test.go | |
parent | Merge pull request #621 from AndrewMurrell/master (diff) | |
parent | clearer const formatting (diff) | |
download | golite-0eec847b70cde89021ef4884356f1189d3e8401c.tar.gz golite-0eec847b70cde89021ef4884356f1189d3e8401c.tar.xz |
Merge pull request #623 from graf0/feature/#619
implementation of set_authorizer interface
Diffstat (limited to 'sqlite3_test.go')
-rw-r--r-- | sqlite3_test.go | 41 |
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 { |