github.com/aavshr/aws-sdk-go@v1.41.3/service/s3/s3crypto/mock_test.go (about) 1 package s3crypto 2 3 import ( 4 "bytes" 5 "fmt" 6 "io" 7 "io/ioutil" 8 9 "github.com/aavshr/aws-sdk-go/aws" 10 "github.com/aavshr/aws-sdk-go/service/kms/kmsiface" 11 ) 12 13 type mockGenerator struct{} 14 15 func (m mockGenerator) GenerateCipherData(keySize, ivSize int) (CipherData, error) { 16 cd := CipherData{ 17 Key: make([]byte, keySize), 18 IV: make([]byte, ivSize), 19 } 20 return cd, nil 21 } 22 23 func (m mockGenerator) DecryptKey(key []byte) ([]byte, error) { 24 return make([]byte, 16), nil 25 } 26 27 type mockGeneratorV2 struct{} 28 29 func (m mockGeneratorV2) GenerateCipherDataWithCEKAlg(ctx aws.Context, keySize int, ivSize int, cekAlg string) (CipherData, error) { 30 cd := CipherData{ 31 Key: make([]byte, keySize), 32 IV: make([]byte, ivSize), 33 } 34 return cd, nil 35 } 36 37 func (m mockGeneratorV2) DecryptKey(key []byte) ([]byte, error) { 38 return make([]byte, 16), nil 39 } 40 41 func (m mockGeneratorV2) isEncryptionVersionCompatible(version clientVersion) error { 42 if version != v2ClientVersion { 43 return fmt.Errorf("mock error about version") 44 } 45 return nil 46 } 47 48 type mockCipherBuilder struct { 49 generator CipherDataGenerator 50 } 51 52 func (builder mockCipherBuilder) isEncryptionVersionCompatible(version clientVersion) error { 53 if version != v1ClientVersion { 54 return fmt.Errorf("mock error about version") 55 } 56 return nil 57 } 58 59 func (builder mockCipherBuilder) ContentCipher() (ContentCipher, error) { 60 cd, err := builder.generator.GenerateCipherData(32, 16) 61 if err != nil { 62 return nil, err 63 } 64 return &mockContentCipher{cd}, nil 65 } 66 67 type mockCipherBuilderV2 struct { 68 generator CipherDataGeneratorWithCEKAlg 69 } 70 71 func (builder mockCipherBuilderV2) isEncryptionVersionCompatible(version clientVersion) error { 72 if version != v2ClientVersion { 73 return fmt.Errorf("mock error about version") 74 } 75 return nil 76 } 77 78 func (builder mockCipherBuilderV2) ContentCipher() (ContentCipher, error) { 79 cd, err := builder.generator.GenerateCipherDataWithCEKAlg(aws.BackgroundContext(), 32, 16, "mock-cek-alg") 80 if err != nil { 81 return nil, err 82 } 83 return &mockContentCipher{cd}, nil 84 } 85 86 type mockContentCipher struct { 87 cd CipherData 88 } 89 90 func (cipher *mockContentCipher) GetCipherData() CipherData { 91 return cipher.cd 92 } 93 94 func (cipher *mockContentCipher) EncryptContents(src io.Reader) (io.Reader, error) { 95 b, err := ioutil.ReadAll(src) 96 if err != nil { 97 return nil, err 98 } 99 size := len(b) 100 b = bytes.Repeat([]byte{1}, size) 101 return bytes.NewReader(b), nil 102 } 103 104 func (cipher *mockContentCipher) DecryptContents(src io.ReadCloser) (io.ReadCloser, error) { 105 b, err := ioutil.ReadAll(src) 106 if err != nil { 107 return nil, err 108 } 109 size := len(b) 110 return ioutil.NopCloser(bytes.NewReader(make([]byte, size))), nil 111 } 112 113 type mockKMS struct { 114 kmsiface.KMSAPI 115 } 116 117 type mockPadder struct { 118 } 119 120 func (m mockPadder) Pad(i []byte, i2 int) ([]byte, error) { 121 return i, nil 122 } 123 124 func (m mockPadder) Unpad(i []byte) ([]byte, error) { 125 return i, nil 126 } 127 128 func (m mockPadder) Name() string { 129 return "mockPadder" 130 }