github.com/aavshr/aws-sdk-go@v1.41.3/service/s3/s3crypto/aes_cbc_content_cipher_test.go (about) 1 package s3crypto 2 3 import ( 4 "strings" 5 "testing" 6 ) 7 8 func TestAESCBCBuilder(t *testing.T) { 9 generator := mockGenerator{} 10 builder := AESCBCContentCipherBuilder(generator, NoPadder) 11 if builder == nil { 12 t.Fatal(builder) 13 } 14 15 _, err := builder.ContentCipher() 16 if err != nil { 17 t.Fatal(err) 18 } 19 } 20 21 func TestAesCBCContentCipher_isFixtureEncryptionCompatible(t *testing.T) { 22 generator := mockGenerator{} 23 builder := AESCBCContentCipherBuilder(generator, NoPadder) 24 if builder == nil { 25 t.Fatal("expected builder to not be nil") 26 } 27 28 compatibility, ok := builder.(compatibleEncryptionFixture) 29 if !ok { 30 t.Fatal("expected builder to implement compatibleEncryptionFixture interface") 31 } 32 33 if err := compatibility.isEncryptionVersionCompatible(v1ClientVersion); err != nil { 34 t.Errorf("expected builder to be compatible with v1 client") 35 } 36 37 if err := compatibility.isEncryptionVersionCompatible(v2ClientVersion); err == nil { 38 t.Errorf("expected builder to not be compatible with v2 client") 39 } 40 } 41 42 func TestRegisterAESCBCContentCipher(t *testing.T) { 43 cr := NewCryptoRegistry() 44 padder := AESCBCPadder 45 err := RegisterAESCBCContentCipher(cr, padder) 46 if err != nil { 47 t.Fatalf("expected no error, got %v", err) 48 } 49 50 if v, ok := cr.GetCEK("AES/CBC/PKCS5Padding"); !ok { 51 t.Fatal("expected cek algorithm handler to registered") 52 } else if v == nil { 53 t.Fatal("expected non-nil cek handler to be registered") 54 } 55 56 if v, ok := cr.GetPadder("AES/CBC/PKCS5Padding"); !ok { 57 t.Fatal("expected padder to be registered") 58 } else if v != padder { 59 t.Fatal("padder did not match provided value") 60 } 61 62 // try to register padder again 63 err = RegisterAESCBCContentCipher(cr, padder) 64 if err == nil { 65 t.Fatal("expected error, got none") 66 } else if !strings.Contains(err.Error(), "duplicate cek registry entry") { 67 t.Errorf("expected duplicate cek entry, got %v", err) 68 } 69 70 // try to regster padder with cek removed but padder entry still present 71 if _, ok := cr.RemoveCEK("AES/CBC/PKCS5Padding"); !ok { 72 t.Fatalf("expected value to be removed") 73 } 74 err = RegisterAESCBCContentCipher(cr, padder) 75 if err == nil { 76 t.Fatal("expected error, got none") 77 } else if !strings.Contains(err.Error(), "duplicate padder registry entry") { 78 t.Errorf("expected duplicate padder entry, got %v", err) 79 } 80 }