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  }