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  }