Skip to content

Commit 89dd8a7

Browse files
authored
Merge pull request #52 from cipherstash/fix/add-tests-for-null-checks
Add test coverage for go zero value reads writes
2 parents 9f45218 + d4ff035 commit 89dd8a7

File tree

3 files changed

+166
-3
lines changed

3 files changed

+166
-3
lines changed

languages/go/xorm/e2e_test.go

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,170 @@ func TestJsonbTermsOp(t *testing.T) {
551551
t.Fatalf("Could not unmarshal %v", err)
552552
}
553553
assert.Equal(t, expected_id, jsonData)
554+
}
555+
556+
func TestJsonbNullWriteRead(t *testing.T) {
557+
engine := proxyEngine()
558+
truncateDb(engine)
559+
560+
example_one := Example{
561+
NonEncryptedField: "sydney",
562+
EncryptedTextField: "test@gmail.com",
563+
EncryptedIntField: 42,
564+
EncryptedJsonbField: nil,
565+
EncryptedBoolField: true,
566+
}
567+
568+
example_two := Example{
569+
NonEncryptedField: "melbourne",
570+
EncryptedIntField: 42,
571+
EncryptedTextField: "someone@gmail.com",
572+
EncryptedJsonbField: make(map[string]interface{}),
573+
EncryptedBoolField: false,
574+
}
575+
576+
examples := []Example{
577+
example_one,
578+
example_two,
579+
}
580+
581+
inserted, err := engine.Insert(&examples)
582+
583+
if err != nil {
584+
t.Errorf("Error inserting examples: %v", err)
585+
}
586+
587+
assert.Equal(t, int64(2), inserted, "Expected to insert 2 rows")
588+
589+
var returnedExamples []Example
590+
err = engine.Where("encrypted_jsonb_field IS NULL").Find(&returnedExamples)
591+
if err != nil {
592+
t.Fatalf("Could not retrieve example: %v", err)
593+
}
594+
595+
for i := range returnedExamples {
596+
assert.Equal(t, EncryptedJsonbField(nil), returnedExamples[i].EncryptedJsonbField)
597+
}
598+
}
599+
600+
func TestTextNullWriteRead(t *testing.T) {
601+
engine := proxyEngine()
602+
truncateDb(engine)
603+
604+
example_one := Example{
605+
NonEncryptedField: "sydney",
606+
EncryptedIntField: 42,
607+
EncryptedJsonbField: generateJsonbData("first", "second", "third"),
608+
EncryptedBoolField: true,
609+
}
610+
611+
example_two := Example{
612+
NonEncryptedField: "melbourne",
613+
EncryptedTextField: "someone@gmail.com",
614+
EncryptedIntField: 42,
615+
EncryptedJsonbField: make(map[string]interface{}),
616+
EncryptedBoolField: false,
617+
}
618+
619+
examples := []Example{
620+
example_one,
621+
example_two,
622+
}
623+
624+
inserted, err := engine.Insert(&examples)
625+
626+
if err != nil {
627+
t.Errorf("Error inserting examples: %v", err)
628+
}
629+
630+
assert.Equal(t, int64(2), inserted, "Expected to insert 2 rows")
631+
632+
results, err := engine.Query("select * from examples")
633+
if err != nil {
634+
t.Fatalf("Could not retrieve examples: %v", err)
635+
}
554636

637+
assert.Equal(t, 2, len(results))
638+
}
639+
640+
func TestIntNullWriteRead(t *testing.T) {
641+
engine := proxyEngine()
642+
truncateDb(engine)
643+
644+
example_one := Example{
645+
NonEncryptedField: "sydney",
646+
EncryptedTextField: "test@gmail.com",
647+
EncryptedJsonbField: generateJsonbData("first", "second", "third"),
648+
EncryptedBoolField: true,
649+
}
650+
651+
example_two := Example{
652+
NonEncryptedField: "melbourne",
653+
EncryptedTextField: "someone@gmail.com",
654+
EncryptedIntField: 42,
655+
EncryptedJsonbField: make(map[string]interface{}),
656+
EncryptedBoolField: false,
657+
}
658+
659+
examples := []Example{
660+
example_one,
661+
example_two,
662+
}
663+
664+
inserted, err := engine.Insert(&examples)
665+
666+
if err != nil {
667+
t.Errorf("Error inserting examples: %v", err)
668+
}
669+
670+
assert.Equal(t, int64(2), inserted, "Expected to insert 2 rows")
671+
672+
results, err := engine.Query("select * from examples")
673+
if err != nil {
674+
t.Fatalf("Could not retrieve examples: %v", err)
675+
}
676+
677+
assert.Equal(t, 2, len(results))
678+
}
679+
680+
func TestBooleanNullWriteRead(t *testing.T) {
681+
engine := proxyEngine()
682+
truncateDb(engine)
683+
684+
// Remove boolean field
685+
example_one := Example{
686+
NonEncryptedField: "sydney",
687+
EncryptedTextField: "test@gmail.com",
688+
EncryptedJsonbField: generateJsonbData("first", "second", "third"),
689+
}
690+
691+
example_two := Example{
692+
NonEncryptedField: "melbourne",
693+
EncryptedTextField: "someone@gmail.com",
694+
EncryptedIntField: 42,
695+
EncryptedJsonbField: make(map[string]interface{}),
696+
EncryptedBoolField: false,
697+
}
698+
699+
examples := []Example{
700+
example_one,
701+
example_two,
702+
}
703+
704+
inserted, err := engine.Insert(&examples)
705+
706+
if err != nil {
707+
t.Errorf("Error inserting examples: %v", err)
708+
}
709+
710+
assert.Equal(t, int64(2), inserted, "Expected to insert 2 rows")
711+
712+
results, err := engine.Query("select * from examples")
713+
if err != nil {
714+
t.Fatalf("Could not retrieve examples: %v", err)
715+
}
716+
717+
assert.Equal(t, 2, len(results))
555718
}
556719

557720
func TestOreStringRangeQuery(t *testing.T) {

languages/go/xorm/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.21.3
55
require github.com/stretchr/testify v1.9.0
66

77
require (
8-
github.com/cipherstash/goeql v0.1.3
8+
github.com/cipherstash/goeql v0.1.4
99
github.com/cockroachdb/apd v1.1.0 // indirect
1010
github.com/davecgh/go-spew v1.1.1 // indirect
1111
github.com/gofrs/uuid v4.0.0+incompatible // indirect

languages/go/xorm/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
22
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
3-
github.com/cipherstash/goeql v0.1.3 h1:tZrTOnPEL1KA63mw47o+FL4nQ4gOXj+PjfdFfnJKQKY=
4-
github.com/cipherstash/goeql v0.1.3/go.mod h1:ZCxu+TEwv3Zb82EJI/Sm8UrNKLEKg/D19Tkf08D6tCU=
3+
github.com/cipherstash/goeql v0.1.4 h1:Q/Vx716egrny3Hrmn1u7F9ooIJdd2VHe3qtMpJvMoUk=
4+
github.com/cipherstash/goeql v0.1.4/go.mod h1:ZCxu+TEwv3Zb82EJI/Sm8UrNKLEKg/D19Tkf08D6tCU=
55
github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I=
66
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
77
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

0 commit comments

Comments
 (0)