1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/tests/rackspace/requests/identity/user_tests.rb

107 lines
2.7 KiB
Ruby
Raw Normal View History

Shindo.tests('Fog::Rackspace::Identity | users', ['rackspace']) do
pending if Fog.mock?
USER_INFO = {
'id' => String,
'username' => String,
'email' => Fog::Nullable::String,
'enabled' => Fog::Boolean,
'OS-KSADM:password' => Fog::Nullable::String,
'created' => Fog::Nullable::String,
'updated' => Fog::Nullable::String
}
USER_FORMAT = {
'user' => USER_INFO
}
USERS_FORMAT = {
'users' => [USER_INFO]
}
CREDENTIAL_FORMAT = {
'RAX-KSKEY:apiKeyCredentials' => {
'username' => String,
'apiKey' => String
}
}
CREDENTIALS_FORMAT = {
'credentials' => [CREDENTIAL_FORMAT]
}
ROLES_FORMAT = {
'roles' => [{
'id' => String,
'name' => String,
'description' => String
}]
}
service = Fog::Rackspace::Identity.new
id = nil
username = "fog#{Time.now.to_i.to_s}"
email = 'fog_user@example.com'
enabled = true
password = 'Fog_password1'
tests('success') do
tests('#create_user').formats(USER_FORMAT) do
data = service.create_user(username, email, enabled).body
id = data['user']['id']
data
end
tests('#delete_user').succeeds do
service.delete_user(id)
end
# there appears to be a werid caching issue. It's just easier to create a new username and continue on
username = "fog#{Time.now.to_i.to_s}"
tests('#create_user with password').succeeds do
data = service.create_user(username, email, enabled, :password => password ).body
id = data['user']['id']
data
end
tests('#get_user_by_name').formats(USER_FORMAT) do
data = service.get_user_by_name(username).body
id = data['user']['id']
data
end
tests('#get_user_by_id').formats(USER_FORMAT) do
service.get_user_by_id(id).body
end
tests('#list_users').formats(USERS_FORMAT) do
service.list_users().body
end
tests('#update_user').formats(USER_FORMAT) do
service.update_user(id, username, 'updated_user@example.com', enabled).body
end
tests('#update_user with password').succeeds do
service.update_user(id, username, email, enabled, :password => password).body
end
tests('#list_user_roles').formats(ROLES_FORMAT) do
service.list_user_roles(id).body
end
service.delete_user(id)
# Users are only authorized to request their own credentials,
# so perform credential tests with the ID of the user running tests.
credential_username = Fog.credentials[:rackspace_username]
credential_id = service.get_user_by_name(credential_username).body['user']['id']
tests('#list_credentials').formats(CREDENTIALS_FORMAT) do
service.list_credentials(credential_id).body
end
end
end