1package s3crypto 2 3import ( 4 "strings" 5 "testing" 6) 7 8func TestCryptoRegistry_Wrap(t *testing.T) { 9 cr := NewCryptoRegistry() 10 11 mockWrap := WrapEntry(func(envelope Envelope) (CipherDataDecrypter, error) { 12 return nil, nil 13 }) 14 15 if _, ok := cr.GetWrap("foo"); ok { 16 t.Errorf("expected wrapper to not be present") 17 } 18 19 if _, ok := cr.RemoveWrap("foo"); ok { 20 t.Errorf("expected wrapped to not have been removed") 21 } 22 23 if err := cr.AddWrap("foo", nil); err == nil { 24 t.Errorf("expected error, got none") 25 } 26 27 if err := cr.AddWrap("foo", mockWrap); err != nil { 28 t.Errorf("expected no error, got %v", err) 29 } 30 31 if err := cr.AddWrap("foo", mockWrap); err == nil { 32 t.Error("expected error, got none") 33 } 34 35 if v, ok := cr.GetWrap("foo"); !ok || v == nil { 36 t.Error("expected wrapper to be present and not nil") 37 } 38 39 if v, ok := cr.RemoveWrap("foo"); !ok || v == nil { 40 t.Error("expected wrapper to have been removed and not nil") 41 } 42 43 if _, ok := cr.GetWrap("foo"); ok { 44 t.Error("expected wrapper to have been removed and not nil") 45 } 46} 47 48func TestCryptoRegistry_CEK(t *testing.T) { 49 cr := NewCryptoRegistry() 50 51 mockEntry := CEKEntry(func(data CipherData) (ContentCipher, error) { 52 return nil, nil 53 }) 54 55 if _, ok := cr.GetCEK("foo"); ok { 56 t.Errorf("expected wrapper to not be present") 57 } 58 59 if _, ok := cr.RemoveCEK("foo"); ok { 60 t.Errorf("expected wrapped to not have been removed") 61 } 62 63 if err := cr.AddCEK("foo", nil); err == nil { 64 t.Errorf("expected error, got none") 65 } 66 67 if err := cr.AddCEK("foo", mockEntry); err != nil { 68 t.Errorf("expected no error, got %v", err) 69 } 70 71 if err := cr.AddCEK("foo", mockEntry); err == nil { 72 t.Error("expected error, got none") 73 } 74 75 if v, ok := cr.GetCEK("foo"); !ok || v == nil { 76 t.Error("expected wrapper to be present and not nil") 77 } 78 79 if v, ok := cr.RemoveCEK("foo"); !ok || v == nil { 80 t.Error("expected wrapper to have been removed and not nil") 81 } 82 83 if _, ok := cr.GetCEK("foo"); ok { 84 t.Error("expected wrapper to have been removed and not nil") 85 } 86} 87 88func TestCryptoRegistry_Padder(t *testing.T) { 89 cr := NewCryptoRegistry() 90 91 padder := &mockPadder{} 92 93 if _, ok := cr.GetPadder("foo"); ok { 94 t.Errorf("expected wrapper to not be present") 95 } 96 97 if _, ok := cr.RemovePadder("foo"); ok { 98 t.Errorf("expected wrapped to not have been removed") 99 } 100 101 if err := cr.AddPadder("foo", nil); err == nil { 102 t.Errorf("expected error, got none") 103 } 104 105 if err := cr.AddPadder("foo", padder); err != nil { 106 t.Errorf("expected no error, got %v", err) 107 } 108 109 if err := cr.AddPadder("foo", padder); err == nil { 110 t.Error("expected error, got none") 111 } 112 113 if v, ok := cr.GetPadder("foo"); !ok || v == nil { 114 t.Error("expected wrapper to be present and not nil") 115 } 116 117 if v, ok := cr.RemovePadder("foo"); !ok || v == nil { 118 t.Error("expected wrapper to have been removed and not nil") 119 } 120} 121 122func TestCryptoRegistry_valid(t *testing.T) { 123 cr := NewCryptoRegistry() 124 125 if err := cr.valid(); err == nil { 126 t.Errorf("expected error, got none") 127 } else if e, a := "at least one key wrapping algorithms must be provided", err.Error(); !strings.Contains(a, e) { 128 t.Errorf("expected %v, got %v", e, a) 129 } 130 131 if err := cr.AddWrap("foo", func(envelope Envelope) (CipherDataDecrypter, error) { 132 return nil, nil 133 }); err != nil { 134 t.Fatalf("expected no error, got %v", err) 135 } 136 if err := cr.valid(); err == nil { 137 t.Fatalf("expected error, got none") 138 } else if e, a := "least one content decryption algorithms must be provided", err.Error(); !strings.Contains(a, e) { 139 t.Errorf("expected %v, got %v", e, a) 140 } 141 142 if err := cr.AddCEK("foo", func(data CipherData) (ContentCipher, error) { 143 return nil, nil 144 }); err != nil { 145 t.Fatalf("expected no error, got %v", err) 146 } 147 if err := cr.valid(); err != nil { 148 t.Fatalf("expected no error, got %v", err) 149 } 150} 151