module Fog
  module Identity
    class OpenStack
      class Real
        def add_user_to_tenant(tenant_id, user_id, role_id)
          request(
            :expects => 200,
            :method  => 'PUT',
            :path    => "/tenants/#{tenant_id}/users/#{user_id}/roles/OS-KSADM/#{role_id}"
          )
        end
      end # class Real

      class Mock
        def add_user_to_tenant(tenant_id, user_id, role_id)
          role = self.data[:roles][role_id]
          self.data[:user_tenant_membership][tenant_id] ||= {}
          self.data[:user_tenant_membership][tenant_id][user_id] ||= []
          self.data[:user_tenant_membership][tenant_id][user_id].push(role['id']).uniq!

          response = Excon::Response.new
          response.status = 200
          response.body = {
            'role' => {
              'id'   => role['id'],
              'name' => role['name']
            }
          }
          response
        end # def add_user_to_tenant
      end # class Mock
    end # class OpenStack
  end # module Identity
end
