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  }