class Fog::AWS::STS::Mock

Public Class Methods

data() click to toggle source
# File lib/fog/aws/sts.rb, line 20
def self.data
  @data ||= Hash.new do |hash, key|
    hash[key] = {
      :owner_id => Fog::AWS::Mock.owner_id,
      :server_certificates => {}
    }
  end
end
new(options={}) click to toggle source
# File lib/fog/aws/sts.rb, line 37
def initialize(options={})
  @use_iam_profile = options[:use_iam_profile]
  setup_credentials(options)
end
reset() click to toggle source
# File lib/fog/aws/sts.rb, line 29
def self.reset
  @data = nil
end
server_certificate_id() click to toggle source
# File lib/fog/aws/sts.rb, line 33
def self.server_certificate_id
  Fog::Mock.random_hex(16)
end

Public Instance Methods

assume_role(role_session_name, role_arn, external_id=nil, policy=nil, duration=3600) click to toggle source
# File lib/fog/aws/requests/sts/assume_role.rb, line 44
def assume_role(role_session_name, role_arn, external_id=nil, policy=nil, duration=3600)
  account_id = /[0-9]{12}/.match(role_arn)
  request_id = Fog::AWS::Mock.request_id

  Excon::Response.new.tap do |response|
    response.status = 200

    response.body = {
      'Arn'             => "arn:aws:sts::#{account_id}:assumed-role/#{role_session_name}/#{role_session_name}",
      'AssumedRoleId'   => "#{Fog::Mock.random_base64(21)}:#{role_session_name}",
      'AccessKeyId'     => Fog::Mock.random_base64(20),
      'SecretAccessKey' => Fog::Mock.random_base64(40),
      'SessionToken'    => Fog::Mock.random_base64(580),
      'Expiration'      => (Time.now + duration).utc.iso8601,
      'RequestId'       => request_id,
    }

    response.headers = {
      'x-amzn-RequestId' => request_id,
    }
  end
end
assume_role_with_web_identity(role_arn, web_identity_token, role_session_name, options={}) click to toggle source
# File lib/fog/aws/requests/sts/assume_role_with_web_identity.rb, line 21
def assume_role_with_web_identity(role_arn, web_identity_token, role_session_name, options={})
  role = options[:iam].data[:roles].values.detect { |r| r[:arn] == role_arn }

  Excon::Response.new.tap do |response|
    response.body = {
      'AssumedRoleUser' => {
        'Arn'           => role[:arn],
        'AssumedRoleId' => role[:role_id]
      },
      'Audience'    => 'fog',
      'Credentials' => {
        'AccessKeyId'     => Fog::AWS::Mock.key_id(20),
        'Expiration'      => options[:expiration] || Time.now + 3600,
        'SecretAccessKey' => Fog::AWS::Mock.key_id(40),
        'SessionToken'    => Fog::Mock.random_hex(8)
      },
      'Provider'                    => 'fog',
      'SubjectFromWebIdentityToken' => Fog::Mock.random_hex(8)
    }
    response.status = 200
  end
end
data() click to toggle source
# File lib/fog/aws/sts.rb, line 42
def data
  self.class.data[@aws_access_key_id]
end
get_federation_token(name, policy, duration=43200) click to toggle source
# File lib/fog/aws/requests/sts/get_federation_token.rb, line 44
def get_federation_token(name, policy, duration=43200)
  Excon::Response.new.tap do |response|
    response.status = 200
    response.body = {
    'SessionToken'     => Fog::Mock.random_base64(580),
    'SecretAccessKey'  => Fog::Mock.random_base64(40),
    'Expiration'       => (DateTime.now + duration).strftime('%FT%TZ'),
    'AccessKeyId'      => Fog::AWS::Mock.key_id(20),
    'Arn'              => "arn:aws:sts::#{Fog::AWS::Mock.owner_id}:federated-user/#{name}",
    'FederatedUserId'  => "#{Fog::AWS::Mock.owner_id}:#{name}",
    'PackedPolicySize' => Fog::Mock.random_numbers(2),
    'RequestId'        => Fog::AWS::Mock.request_id
    }
  end
end
reset_data() click to toggle source
# File lib/fog/aws/sts.rb, line 46
def reset_data
  self.class.data.delete(@aws_access_key_id)
end
setup_credentials(options) click to toggle source
# File lib/fog/aws/sts.rb, line 50
def setup_credentials(options)
  @aws_access_key_id = options[:aws_access_key_id]
end