@@ -551,7 +551,170 @@ func TestJsonbTermsOp(t *testing.T) {
551
551
t .Fatalf ("Could not unmarshal %v" , err )
552
552
}
553
553
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
+ }
554
636
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 ))
555
718
}
556
719
557
720
func TestOreStringRangeQuery (t * testing.T ) {
0 commit comments