Skip to content

Commit 8c5b754

Browse files
committed
add test coverage for null inserts reads
1 parent 9154678 commit 8c5b754

File tree

1 file changed

+163
-0
lines changed

1 file changed

+163
-0
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) {

0 commit comments

Comments
 (0)