Sha256: 00d1ee3dcb613e3679706e8a29e8c6b15e4a85fe17bfb800f039c61ad4f03ae3

Contents?: true

Size: 1.13 KB

Versions: 5

Compression:

Stored size: 1.13 KB

Contents

require 'multi_json'
require 'engineyard-cloud-client/rest_client_ext'
require 'engineyard-cloud-client/test'
require 'engineyard-cloud-client/test/fake_awsm'
require 'engineyard-cloud-client/test/ui'

module EY::CloudClient::Test
  class Scenario
    def self.[](name)
      scenarios[name] or raise "Scenario #{name.inspect} not found in:\n\t#{scenarios.keys.join("\n\t")}"
    end

    def self.scenarios
      @scenarios ||= load_scenarios
    end

    def self.load_scenarios
      response = ::RestClient.get(EY::CloudClient::Test::FakeAwsm.uri.sub(/\/?$/,'/scenarios'))
      data = MultiJson.decode(response)
      data['scenarios'].inject({}) do |hsh, scenario|
        hsh[scenario['name']] = new(scenario)
        hsh
      end
    end

    attr_reader :email, :password, :api_token

    def initialize(options)
      @name      = options['name']
      @email     = options['email']
      @password  = options['password']
      @api_token = options['api_token']
    end

    def cloud_client(ui = EY::CloudClient::Test::UI.new)
      EY::CloudClient.new(@api_token, ui)
    end

    def inspect
      "#<Test::Scenario name:#@name>"
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
engineyard-cloud-client-1.0.2 lib/engineyard-cloud-client/test/scenario.rb
engineyard-cloud-client-1.0.1 lib/engineyard-cloud-client/test/scenario.rb
engineyard-cloud-client-1.0.0 lib/engineyard-cloud-client/test/scenario.rb
engineyard-cloud-client-0.1.4 lib/engineyard-cloud-client/test/scenario.rb
engineyard-cloud-client-0.1.2 lib/engineyard-cloud-client/test/scenario.rb