github.com/aavshr/aws-sdk-go@v1.41.3/service/s3/s3crypto/crypto_registry_test.go (about)

     1  package s3crypto
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  )
     7  
     8  func 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  
    48  func 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  
    88  func 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  
   122  func 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  }