class Fog::Identity::OpenStack::Mock

Public Class Methods

data() click to toggle source
# File lib/fog/openstack/identity.rb, line 57
def self.data
  @data ||= Hash.new do |hash, key|
    hash[key] = {
      :users => {},
      :roles => {},
      :tenants => {}
    }
  end
end
new(options={}) click to toggle source
# File lib/fog/openstack/identity.rb, line 71
def initialize(options={})
  @openstack_username = options[:openstack_username]

  @data ||= { :users => {}}
  unless @data[:users].find {|u| u['name'] == options[:openstack_username]}
    id = Fog::Mock.random_numbers(6).to_s
    @data[:users][id] = {
      'id'       => id,
      'name'     => options[:openstack_username],
      'email'    => "#{options[:openstack_username]}@mock.com",
      'tenantId' => Fog::Mock.random_numbers(6).to_s,
      'enabled'  => true
    }
  end
end
reset() click to toggle source
# File lib/fog/openstack/identity.rb, line 67
def self.reset
  @data = nil
end

Public Instance Methods

add_user_to_tenant(tenant_id, user_id, role_id) click to toggle source
# File lib/fog/openstack/requests/identity/add_user_to_tenant.rb, line 15
def add_user_to_tenant(tenant_id, user_id, role_id)
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'role' => {
      'id' => '503df61a99d6461fb247cdb6a3f3a4dd',
      'name' => 'admin'
    }
  }
  response
end
create_role(name) click to toggle source
# File lib/fog/openstack/requests/identity/create_role.rb, line 22
def create_role(name)
  response = Excon::Response.new
  response.status = 202
  data = {
    'id'   => Fog::Mock.random_numbers(6).to_s,
    'name' => name
  }
  self.data[:roles][data['id']] = data
  response.body = { 'role' => data }
  response
end
create_tenant(attributes) click to toggle source
# File lib/fog/openstack/requests/identity/create_tenant.rb, line 18
def create_tenant(attributes)
  response = Excon::Response.new
  response.status = [200, 204][rand(1)]
  response.body = {
    'tenant' => {
      'id' => '1',
      'description' => 'Has access to everything',
      'enabled' => true,
      'name' => 'admin'
    }
  }
  response
end
create_user(name, password, email, tenantId=nil, enabled=true) click to toggle source
# File lib/fog/openstack/requests/identity/create_user.rb, line 29
def create_user(name, password, email, tenantId=nil, enabled=true)
  response = Excon::Response.new
  response.status = 200
  data = {
    'id'       => Fog::Mock.random_numbers(6).to_s,
    'name'     => name,
    'email'    => email,
    'tenantId' => tenantId,
    'enabled'  => enabled
  }
  self.data[:users][data['id']] = data
  response.body = { 'user' => data }
  response
end
create_user_role(tenant_id, user_id, role_id) click to toggle source
# File lib/fog/openstack/requests/identity/create_user_role.rb, line 17
def create_user_role(tenant_id, user_id, role_id)
  response = Excon::Response.new
  response.status = 200
  response
end
credentials() click to toggle source
# File lib/fog/openstack/identity.rb, line 95
def credentials
  { :provider                 => 'openstack',
    :openstack_auth_url       => @openstack_auth_uri.to_s,
    :openstack_auth_token     => @auth_token,
    :openstack_management_url => @openstack_management_url,
    :openstack_current_user_id => @openstack_current_user_id}
end
data() click to toggle source
# File lib/fog/openstack/identity.rb, line 87
def data
  self.class.data[@openstack_username]
end
delete_role(role_id) click to toggle source
# File lib/fog/openstack/requests/identity/delete_role.rb, line 18
def delete_role(role_id)
  response = Excon::Response.new
  if role = list_roles.body['roles'][role_id]
    self.data[:roles].delete(role_id)
    response.status = 204
    response
  else
    raise Fog::Identity::OpenStack::NotFound
  end
end
delete_tenant(attributes) click to toggle source
# File lib/fog/openstack/requests/identity/delete_tenant.rb, line 15
def delete_tenant(attributes)
  response = Excon::Response.new
  response.status = [200, 204][rand(1)]
  response.body = {
    'tenant' => {
      'id' => '1',
      'description' => 'Has access to everything',
      'enabled' => true,
      'name' => 'admin'
    }
  }
  response
end
delete_user(user_id) click to toggle source
# File lib/fog/openstack/requests/identity/delete_user.rb, line 18
def delete_user(user_id)
  self.data[:users].delete(
    list_users.body['users'].find {|x| x['id'] == user_id }['id'])

  response = Excon::Response.new
  response.status = 204
  response
rescue
  raise Fog::Identity::OpenStack::NotFound
end
delete_user_role(tenant_id, user_id, role_id) click to toggle source
# File lib/fog/openstack/requests/identity/delete_user_role.rb, line 17
def delete_user_role(tenant_id, user_id, role_id)
  response = Excon::Response.new
  response.status = 200
  response
end
get_role(id) click to toggle source
# File lib/fog/openstack/requests/identity/get_role.rb, line 15
def get_role(id)
  response = Excon::Response.new
  if data = self.data[:roles][id]
    response.status = 200
    response.body = { 'role' => data }
    response
  else
    raise Fog::Identity::OpenStack::NotFound
  end
end
get_tenant(id) click to toggle source
# File lib/fog/openstack/requests/identity/get_tenant.rb, line 15
def get_tenant(id)
  response = Excon::Response.new
  response.status = [200, 204][rand(1)]
  response.body = {
    'tenant' => {
      'id' => '1',
      'description' => 'Has access to everything',
      'enabled' => true,
      'name' => 'admin'
    }
  }
  response
end
get_user_by_id(user_id) click to toggle source
# File lib/fog/openstack/requests/identity/get_user_by_id.rb, line 17
def get_user_by_id(user_id)
  response = Excon::Response.new
  response.status = 200

  existing_user = self.data[:users].find do |u|
      u[0] == user_id || u[1]['name'] == 'mock'
    end
  existing_user = existing_user[1] if existing_user

  response.body = {
    'user' => existing_user || create_user('mock', 'mock', 'mock@email.com').body['user']
  }
  response
end
list_roles() click to toggle source
# File lib/fog/openstack/requests/identity/list_roles.rb, line 18
def list_roles
  response = Excon::Response.new
  response.status = 200
  response.body = { 'roles' => self.data[:roles] }
  response
end
list_roles_for_user_on_tenant(tenant_id, user_id) click to toggle source
# File lib/fog/openstack/requests/identity/list_roles_for_user_on_tenant.rb, line 15
def list_roles_for_user_on_tenant(tenant_id, user_id)
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'roles' => self.data[:roles]
  }
  response
end
list_tenants() click to toggle source
# File lib/fog/openstack/requests/identity/list_tenants.rb, line 20
def list_tenants
  response = Excon::Response.new
  response.status = [200, 204][rand(1)]
  response.body = {
    'tenants' => [
      {'id' => '1',
       'description' => 'Has access to everything',
       'enabled' => true,
       'name' => 'admin'},
      {'id' => '2',
       'description' => 'Normal tenant',
       'enabled' => true,
       'name' => 'default'},
      {'id' => '3',
       'description' => 'Disabled tenant',
       'enabled' => false,
       'name' => 'disabled'}
    ]
  }
  response
end
list_users(tenant_id = nil) click to toggle source
# File lib/fog/openstack/requests/identity/list_users.rb, line 16
def list_users(tenant_id = nil)
  response = Excon::Response.new
  response.status = 200
  response.body = { 'users' => self.data[:users].values }
  response
end
remove_user_from_tenant(tenant_id, user_id, role_id) click to toggle source
# File lib/fog/openstack/requests/identity/remove_user_from_tenant.rb, line 15
def remove_user_from_tenant(tenant_id, user_id, role_id)
end
reset_data() click to toggle source
# File lib/fog/openstack/identity.rb, line 91
def reset_data
  self.class.data.delete(@openstack_username)
end
update_tenant(id, attributes) click to toggle source
# File lib/fog/openstack/requests/identity/update_tenant.rb, line 18
def update_tenant(id, attributes)
  response = Excon::Response.new
  response.status = [200, 204][rand(1)]
  attributes = {'enabled' => true, 'id' => '1'}.merge(attributes)
  response.body = {
    'tenant' => attributes
  }
  response
end
update_user(user_id, options) click to toggle source
# File lib/fog/openstack/requests/identity/update_user.rb, line 20
def update_user(user_id, options)
  response = Excon::Response.new
  if user = list_users.body['users'][user_id]
    if options['name']
      user['name'] = options['name']
    end
    self.data[:users][data['id']] = user
    response.status = 200
    response
  else
    raise Fog::Identity::OpenStack::NotFound
  end
end