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  }