2012-06-23 14:58:19 -04:00
|
|
|
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
|
2013-06-20 17:23:19 -04:00
|
|
|
username = "fog#{Time.now.to_i.to_s}"
|
2012-06-23 14:58:19 -04:00
|
|
|
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
|
|
|
|
|
2013-06-20 17:23:19 -04:00
|
|
|
# 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}"
|
|
|
|
|
2012-06-23 14:58:19 -04:00
|
|
|
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
|