From ca4f7a1330c12a49c042d6eba67383a21be883c3 Mon Sep 17 00:00:00 2001 From: Janusz Bialy Date: Fri, 22 Mar 2019 15:00:57 -0400 Subject: add tests --- aws/kms_test.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 aws/kms_test.go (limited to 'aws') diff --git a/aws/kms_test.go b/aws/kms_test.go new file mode 100644 index 00000000..9475a4bf --- /dev/null +++ b/aws/kms_test.go @@ -0,0 +1,52 @@ +package aws + +import ( + "strings" + "testing" + + "github.com/aws/aws-sdk-go/service/kms" + b64 "github.com/hairyhenderson/gomplate/base64" + "github.com/stretchr/testify/assert" +) + +// MockKMS is a mock KMSAPI implementation +type MockKMS struct{} + +// Mocks Encrypt operation returns an upper case version of plaintext +func (m *MockKMS) Encrypt(input *kms.EncryptInput) (*kms.EncryptOutput, error) { + return &kms.EncryptOutput{ + CiphertextBlob: []byte(strings.ToUpper(string(input.Plaintext))), + }, nil +} + +// Mocks Decrypt operation +func (m *MockKMS) Decrypt(input *kms.DecryptInput) (*kms.DecryptOutput, error) { + s := []byte(strings.ToLower(string(input.CiphertextBlob))) + return &kms.DecryptOutput{ + Plaintext: s, + }, nil +} + +func TestEncrypt(t *testing.T) { + // create a mock KMS client + c := &MockKMS{} + kmsClient := &KMS{Client: c} + + // Success + resp, err := kmsClient.Encrypt("dummykey", "plaintextvalue") + assert.NoError(t, err) + expectedResp, _ := b64.Encode([]byte("PLAINTEXTVALUE")) + assert.EqualValues(t, expectedResp, resp) +} + +func TestDecrypt(t *testing.T) { + // create a mock KMS client + c := &MockKMS{} + kmsClient := &KMS{Client: c} + encodedCiphertextBlob, _ := b64.Encode([]byte("CIPHERVALUE")) + + // Success + resp, err := kmsClient.Decrypt(encodedCiphertextBlob) + assert.NoError(t, err) + assert.EqualValues(t, "ciphervalue", resp) +} -- cgit v1.2.3