mirror of
https://github.com/raseels-repos/golang-saas-starter-kit.git
synced 2025-06-06 23:46:29 +02:00
65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
|
package web
|
||
|
|
||
|
import (
|
||
|
"github.com/google/go-cmp/cmp"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestExtractWhereArgs(t *testing.T) {
|
||
|
|
||
|
var queryTests = []struct {
|
||
|
where string
|
||
|
redacted string
|
||
|
args []interface{}
|
||
|
}{
|
||
|
{
|
||
|
"name = 'xxxx' or name = :test",
|
||
|
"name = :redacted1 or name = :test",
|
||
|
[]interface{}{"xxxx"},
|
||
|
},
|
||
|
{
|
||
|
"name = 'xxxx' or name is null",
|
||
|
"name = :redacted1 or name is null",
|
||
|
[]interface{}{"xxxx"},
|
||
|
},
|
||
|
{
|
||
|
"name = 'xxxx' or name in ('yyyy', 'zzzz')",
|
||
|
"name = :redacted1 or name in ::redacted2",
|
||
|
[]interface{}{"xxxx", []interface{}{"yyyy", "zzzz"}},
|
||
|
},
|
||
|
{
|
||
|
"id = 3232 or id in (2323, 3239, 483484)",
|
||
|
"id = :redacted1 or id in ::redacted2",
|
||
|
[]interface{}{"3232", []interface{}{"2323", "3239", "483484"}},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Log("Given the need to ensure values are correctly extracted from a where query string.")
|
||
|
{
|
||
|
for i, tt := range queryTests {
|
||
|
t.Logf("\tTest: %d\tWhen running test: #%d", i, i)
|
||
|
{
|
||
|
res, args, err := ExtractWhereArgs(tt.where)
|
||
|
if err != nil {
|
||
|
t.Log("\t\tGot :", err)
|
||
|
t.Fatalf("\t\tExtract failed.")
|
||
|
}
|
||
|
|
||
|
if res != tt.redacted {
|
||
|
t.Logf("\t\tGot : %+v", res)
|
||
|
t.Logf("\t\tWant: %+v", tt.redacted)
|
||
|
t.Fatalf("\t\tResulting where does not match expected.")
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.args, args); diff != "" {
|
||
|
t.Logf("\t\tGot : %+v", args)
|
||
|
t.Logf("\t\tWant: %+v", tt.args)
|
||
|
t.Fatalf("\t\tResulting args does not match expected. Diff:\n%s", diff)
|
||
|
}
|
||
|
|
||
|
t.Logf("\t\tOk.")
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|