Class: Aws::KMS::Client
- Inherits:
-
Object
- Object
- Aws::KMS::Client
- Defined in:
- lib/porky_lib/aws/kms/client.rb
Overview
This class is required for unit testing in order to mock response values from the AWS KMS SDK.
Constant Summary collapse
- MOCK_ALIAS_NAME_ALREADY_EXISTS =
'alias/dup'
- MOCK_INVALID_ALIAS_NAME =
'alias/aws'
- MOCK_INVALID_TAG_VALUE =
'bad_value'
- MOCK_NOT_FOUND_KEY_ID =
'bad_key'
- MOCK_VALID_KEY_USAGE =
'AES_256'
- PLAINTEXT_KEY_LENGTH =
32
Instance Method Summary collapse
- #create_alias(target_key_id:, alias_name:) ⇒ Object
- #create_key(key_usage:, origin:, tags:) ⇒ Object
- #decrypt(ciphertext_blob:, encryption_context: nil) ⇒ Object
- #enable_key_rotation(key_id:) ⇒ Object
- #generate_data_key(key_id:, key_spec:, encryption_context: nil) ⇒ Object
- #inspect ⇒ Object
- #list_aliases ⇒ Object
Instance Method Details
#create_alias(target_key_id:, alias_name:) ⇒ Object
38 39 40 41 42 |
# File 'lib/porky_lib/aws/kms/client.rb', line 38 def create_alias(target_key_id:, alias_name:) raise Aws::KMS::Errors::InvalidAliasNameException.new(nil, nil) if alias_name == MOCK_INVALID_ALIAS_NAME raise Aws::KMS::Errors::AlreadyExistsException.new(nil, nil) if alias_name == MOCK_ALIAS_NAME_ALREADY_EXISTS raise Aws::KMS::Errors::NotFoundException.new(nil, nil) if target_key_id.include?(MOCK_NOT_FOUND_KEY_ID) end |
#create_key(key_usage:, origin:, tags:) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/porky_lib/aws/kms/client.rb', line 17 def create_key(key_usage:, origin:, tags:) raise Aws::KMS::Errors::TagException.new(nil, nil) if [0].value?(MOCK_INVALID_TAG_VALUE) Aws::KMS::Types::CreateKeyResponse.new( key_metadata: { aws_account_id: '123', creation_date: Time.now.utc.iso8601, description: '', enabled: true, key_id: SecureRandom.uuid, key_state: 'Enabled', key_usage: key_usage, origin: origin } ) end |
#decrypt(ciphertext_blob:, encryption_context: nil) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/porky_lib/aws/kms/client.rb', line 73 def decrypt(ciphertext_blob:, encryption_context: nil) key_id, decoded_context, plaintext = MessagePack.unpack(ciphertext_blob.reverse) decoded_context = Hash[decoded_context.map { |k, v| [k.to_sym, v] }] if decoded_context raise Aws::KMS::Errors::InvalidCiphertextException.new(nil, nil) unless decoded_context == encryption_context Aws::KMS::Types::DecryptResponse.new( key_id: key_id, plaintext: plaintext ) rescue MessagePack::MalformedFormatError raise Aws::KMS::Errors::InvalidCiphertextException.new(nil, nil) end |
#enable_key_rotation(key_id:) ⇒ Object
34 35 36 |
# File 'lib/porky_lib/aws/kms/client.rb', line 34 def enable_key_rotation(key_id:) raise Aws::KMS::Errors::NotFoundException.new(nil, nil) if key_id.include?(MOCK_NOT_FOUND_KEY_ID) end |
#generate_data_key(key_id:, key_spec:, encryption_context: nil) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/porky_lib/aws/kms/client.rb', line 61 def generate_data_key(key_id:, key_spec:, encryption_context: nil) raise Aws::KMS::Errors::InvalidKeyUsageException.new(nil, nil) unless key_spec == 'AES_256' raise Aws::KMS::Errors::NotFoundException.new(nil, nil) if key_id.include?(MOCK_NOT_FOUND_KEY_ID) plaintext = SecureRandom.random_bytes(PLAINTEXT_KEY_LENGTH) Aws::KMS::Types::GenerateDataKeyResponse.new( key_id: key_id, plaintext: plaintext, ciphertext_blob: [key_id, encryption_context, plaintext].to_msgpack.reverse ) end |
#inspect ⇒ Object
86 87 88 |
# File 'lib/porky_lib/aws/kms/client.rb', line 86 def inspect '#<Aws::KMS::Client (mocked)>' end |
#list_aliases ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/porky_lib/aws/kms/client.rb', line 44 def list_aliases { aliases: [ { alias_arn: 'arn:aws:kms:us-east-2:111122223333:alias/example1', alias_name: 'alias/example1', target_key_id: "4da1e216-62d0-46c5-a7c0-5f3a3d2f8046" }, { alias_arn: 'arn:aws:kms:us-east-2:444455556666:alias/new_key', alias_name: 'alias/new_key', target_key_id: "4da1e216-62d0-46c5-a7c0-5f3a3d2f8046" } ] } end |