github.com/opentofu/opentofu@v1.7.1/internal/encryption/keyprovider/aws_kms/mock_test.go (about) 1 package aws_kms 2 3 import ( 4 "context" 5 "crypto/rand" 6 7 "github.com/aws/aws-sdk-go-v2/aws" 8 "github.com/aws/aws-sdk-go-v2/service/kms" 9 ) 10 11 type mockKMS struct { 12 genkey func(params *kms.GenerateDataKeyInput) (*kms.GenerateDataKeyOutput, error) 13 decrypt func(params *kms.DecryptInput) (*kms.DecryptOutput, error) 14 } 15 16 func (m *mockKMS) GenerateDataKey(ctx context.Context, params *kms.GenerateDataKeyInput, optFns ...func(*kms.Options)) (*kms.GenerateDataKeyOutput, error) { 17 return m.genkey(params) 18 } 19 func (m *mockKMS) Decrypt(ctx context.Context, params *kms.DecryptInput, optFns ...func(*kms.Options)) (*kms.DecryptOutput, error) { 20 return m.decrypt(params) 21 } 22 23 func injectMock(m *mockKMS) { 24 newKMSFromConfig = func(cfg aws.Config) kmsClient { 25 return m 26 } 27 } 28 29 func injectDefaultMock() { 30 injectMock(&mockKMS{ 31 genkey: func(params *kms.GenerateDataKeyInput) (*kms.GenerateDataKeyOutput, error) { 32 keyData := make([]byte, 32) 33 _, err := rand.Read(keyData) 34 if err != nil { 35 panic(err) 36 } 37 38 return &kms.GenerateDataKeyOutput{ 39 CiphertextBlob: append([]byte(*params.KeyId), keyData...), 40 Plaintext: keyData, 41 }, nil 42 43 }, 44 decrypt: func(params *kms.DecryptInput) (*kms.DecryptOutput, error) { 45 return &kms.DecryptOutput{ 46 Plaintext: params.CiphertextBlob[:len(*params.KeyId)], 47 }, nil 48 }, 49 }) 50 }