github.com/perlchild/DBShield@v0.0.0-20170924200059-c888d9e40e13/dbshield/sql/sql_test.go (about) 1 package sql_test 2 3 import ( 4 "bytes" 5 "testing" 6 "time" 7 8 "github.com/nim4/DBShield/dbshield/sql" 9 ) 10 11 func TestQueryContext(t *testing.T) { 12 c := sql.QueryContext{ 13 Query: []byte("select * from test;"), 14 Database: []byte("test"), 15 User: []byte("test"), 16 Client: []byte("127.0.0.1"), 17 Time: time.Now(), 18 } 19 r := c 20 b := c.Marshal() 21 c.Unmarshal(b) 22 23 if bytes.Compare(c.Query, r.Query) != 0 { 24 t.Error("Expected Query:", r.Query, "got", c.Query) 25 } 26 27 if bytes.Compare(c.Query, r.Query) != 0 { 28 t.Error("Expected Database:", r.Database, "got", c.Database) 29 } 30 31 if bytes.Compare(c.User, r.User) != 0 { 32 t.Error("Expected User:", r.User, "got", c.User) 33 } 34 35 if bytes.Compare(c.Client, r.Client) != 0 { 36 t.Error("Expected Client:", r.Client, "got", c.Client) 37 } 38 39 if c.Time.Unix() != r.Time.Unix() { 40 t.Error("Expected Time:", r.Time, "got", c.Time) 41 } 42 } 43 44 func TestPattern(t *testing.T) { 45 p := sql.Pattern([]byte("select * from X;")) 46 if len(p) < 4 { 47 t.Error("Unexpected Pattern") 48 } 49 } 50 51 func BenchmarkPattern(b *testing.B) { 52 q := []byte("select * from test;") 53 b.ReportAllocs() 54 b.ResetTimer() 55 for i := 0; i < b.N; i++ { 56 sql.Pattern(q) 57 } 58 }