1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

Refactor mock data structure

This commit is contained in:
Edward Muller 2012-02-06 14:55:26 -08:00
parent 7b5602c758
commit d353165a68
3 changed files with 28 additions and 22 deletions

View file

@ -61,7 +61,16 @@ module Fog
@data ||= Hash.new do |hash, key|
hash[key] = {
:owner_id => Fog::AWS::Mock.owner_id,
:server_certificates => {}
:server_certificates => {},
:users => Hash.new do |uhash, ukey|
uhash[ukey] = {
:user_id => Fog::Mock.random_selection('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', 21),
:path => '/',
:arn => "arn:aws:iam::#{Fog::AWS::Mock.owner_id}:user/#{ukey}",
:access_keys => [],
:policies => {}
}
end
}
end
end

View file

@ -36,20 +36,18 @@ module Fog
def create_access_key(options)
#FIXME: Not 100% correct as AWS will use the signing credentials when there is no 'UserName' in the options hash
# Also doesn't raise an error when there are too many keys
data[:users] ||= {}
user_name = options['UserName']
if data[:users].keys.include? user_name
response = Excon::Response.new
user_resp = { 'AccessKey' => { 'SecretAccessKey' => '',
'Status' => 'Active',
'AccessKeyId' => '',
'UserName' => user_name
},
'RequestId' => Fog::AWS::Mock.request_id }
data[:users][user_name][:access_keys] ||= []
data[:users][user_name][:access_keys] << user_resp
key = { 'SecretAccessKey' => '123',
'Status' => 'Active',
'AccessKeyId' => '456',
'UserName' => user_name
}
data[:users][user_name][:access_keys] << key
response.status = 200
response.body = user_resp
response.body = { 'AccessKey' => key,
'RequestId' => Fog::AWS::Mock.request_id }
response
else
raise Fog::AWS::IAM::NotFound.new('The user with name booboboboob cannot be found.')

View file

@ -37,23 +37,22 @@ module Fog
class Mock
def create_user(user_name, path='/')
data[:users] ||= {}
if data[:users].keys.include? user_name
raise Fog::AWS::IAM::EntityAlreadyExists.new "User with name #{user_name} already exists."
else
response = Excon::Response.new
user_resp = { "User" => {
"UserId" => Fog::Mock.random_selection('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', 21),
"Path" => path,
"UserName" => user_name,
"Arn" => "arn:aws:iam::#{Fog::AWS::Mock.owner_id}:user/#{user_name}"
},
"RequestId" => Fog::AWS::Mock.request_id
}
data[:users][user_name][:path] = path
user = {
"UserId" => data[:users][user_name][:user_id],
"Path" => data[:users][user_name][:path],
"UserName" => user_name,
"Arn" => data[:users][user_name][:arn]
}
data[:users][user_name] = user_resp
response.status = 200
response.body = user_resp
response.body = { 'User' => user,
'RequestId' => Fog::AWS::Mock.request_id
}
response
end
end