class Fog::AWS::KMS::Mock
Attributes
account_id[R]
Public Class Methods
data()
click to toggle source
# File lib/fog/aws/kms.rb, line 29 def self.data @data ||= Hash.new do |hash, region| hash[region] = Hash.new do |region_hash, access_key| region_hash[access_key] = { :keys => {}, } end end end
new(options={})
click to toggle source
# File lib/fog/aws/kms.rb, line 45 def initialize(options={}) @use_iam_profile = options[:use_iam_profile] @account_id = Fog::AWS::Mock.owner_id @region = options[:region] || 'us-east-1' setup_credentials(options) Fog::AWS.validate_region!(@region) end
reset()
click to toggle source
# File lib/fog/aws/kms.rb, line 39 def self.reset data.clear end
Public Instance Methods
create_key(policy = nil, description = nil, usage = "ENCRYPT_DECRYPT")
click to toggle source
# File lib/fog/aws/requests/kms/create_key.rb, line 37 def create_key(policy = nil, description = nil, usage = "ENCRYPT_DECRYPT") response = Excon::Response.new key_id = UUID.uuid key_arn = Fog::AWS::Mock.arn("kms", self.account_id, "key/#{key_id}", @region) key = { "KeyUsage" => usage, "AWSAccountId" => self.account_id, "KeyId" => key_id, "Description" => description, "CreationDate" => Time.now, "Arn" => key_arn, "Enabled" => true, } # @todo use default policy self.data[:keys][key_id] = key response.body = { "KeyMetadata" => key } response end
data()
click to toggle source
# File lib/fog/aws/kms.rb, line 62 def data self.class.data[@region][@aws_access_key_id] end
describe_key(identifier)
click to toggle source
# File lib/fog/aws/requests/kms/describe_key.rb, line 17 def describe_key(identifier) response = Excon::Response.new key = self.data[:keys][identifier] response.body = { "KeyMetadata" => key } response end
list_keys(options={})
click to toggle source
# File lib/fog/aws/requests/kms/list_keys.rb, line 27 def list_keys(options={}) limit = options[:limit] marker = options[:marker] if limit if limit > 1_000 raise Fog::AWS::KMS::Error.new( "ValidationError => 1 validation error detected: Value '#{limit}' at 'limit' failed to satisfy constraint: Member must have value less than or equal to 1000" ) elsif limit < 1 raise Fog::AWS::KMS::Error.new( "ValidationError => 1 validation error detected: Value '#{limit}' at 'limit' failed to satisfy constraint: Member must have value greater than or equal to 1" ) end end key_set = if marker self.data[:markers][marker] || [] else self.data[:keys].inject([]) { |r,(k,v)| r << { "KeyId" => k, "KeyArn" => v["Arn"] } } end keys = if limit key_set.slice!(0, limit) else key_set end truncated = keys.size < key_set.size marker = truncated && "metadata/l/#{account_id}/#{UUID.uuid}" response = Excon::Response.new body = { 'Keys' => keys, 'Truncated' => truncated, 'RequestId' => Fog::AWS::Mock.request_id } if marker self.data[:markers][marker] = key_set body.merge!('Marker' => marker) end response.body = body response.status = 200 response end
reset_data()
click to toggle source
# File lib/fog/aws/kms.rb, line 66 def reset_data self.class.data[@region].delete(@aws_access_key_id) end
setup_credentials(options)
click to toggle source
# File lib/fog/aws/kms.rb, line 55 def setup_credentials(options) @aws_access_key_id = options[:aws_access_key_id] @aws_secret_access_key = options[:aws_secret_access_key] @signer = Fog::AWS::SignatureV4.new(@aws_access_key_id, @aws_secret_access_key, @region, 'kms') end