stacker_bee 2.1.1.pre252 → 2.1.1.pre263

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +8 -8
  2. data/.rubocop.yml +0 -3
  3. data/Rakefile +1 -1
  4. data/bin/stacker_bee +10 -10
  5. data/lib/stacker_bee/api.rb +4 -4
  6. data/lib/stacker_bee/client.rb +24 -24
  7. data/lib/stacker_bee/configuration.rb +13 -7
  8. data/lib/stacker_bee/connection.rb +5 -5
  9. data/lib/stacker_bee/http_middleware/detokenizer.rb +2 -2
  10. data/lib/stacker_bee/http_middleware/signed_query.rb +3 -3
  11. data/lib/stacker_bee/middleware/adapter.rb +1 -1
  12. data/lib/stacker_bee/middleware/base.rb +1 -1
  13. data/lib/stacker_bee/middleware/clean_response.rb +2 -2
  14. data/lib/stacker_bee/middleware/cloud_stack_api.rb +2 -2
  15. data/lib/stacker_bee/middleware/dictionary_flattener.rb +3 -3
  16. data/lib/stacker_bee/middleware/endpoint_normalizer.rb +2 -2
  17. data/lib/stacker_bee/middleware/error_message.rb +3 -3
  18. data/lib/stacker_bee/middleware/log_response.rb +1 -1
  19. data/lib/stacker_bee/middleware/raise_on_http_error.rb +1 -1
  20. data/lib/stacker_bee/middleware/remove_nils.rb +1 -1
  21. data/lib/stacker_bee/rash.rb +3 -3
  22. data/lib/stacker_bee/version.rb +1 -1
  23. data/lib/stacker_bee.rb +2 -2
  24. data/spec/integration/configure_middleware_spec.rb +12 -12
  25. data/spec/integration/console_spec.rb +4 -4
  26. data/spec/integration/request_spec.rb +46 -46
  27. data/spec/spec_helper.rb +4 -4
  28. data/spec/support/vcr.rb +4 -4
  29. data/spec/units/stacker_bee/api_spec.rb +11 -11
  30. data/spec/units/stacker_bee/client_spec.rb +19 -19
  31. data/spec/units/stacker_bee/configuration_spec.rb +28 -28
  32. data/spec/units/stacker_bee/connection_spec.rb +18 -18
  33. data/spec/units/stacker_bee/middleware/adapter_spec.rb +7 -7
  34. data/spec/units/stacker_bee/middleware/base_spec.rb +17 -17
  35. data/spec/units/stacker_bee/middleware/cloudstack_api_spec.rb +9 -9
  36. data/spec/units/stacker_bee/middleware/console_access_spec.rb +10 -10
  37. data/spec/units/stacker_bee/middleware/dictionary_flattener_spec.rb +22 -22
  38. data/spec/units/stacker_bee/middleware/endpoint_normalizer_spec.rb +4 -4
  39. data/spec/units/stacker_bee/middleware/error_message_spec.rb +6 -6
  40. data/spec/units/stacker_bee/middleware/format_keys_spec.rb +2 -2
  41. data/spec/units/stacker_bee/middleware/format_values_spec.rb +2 -2
  42. data/spec/units/stacker_bee/middleware/http_status_spec.rb +2 -2
  43. data/spec/units/stacker_bee/middleware/log_response_spec.rb +15 -15
  44. data/spec/units/stacker_bee/middleware/remove_empty_strings_spec.rb +4 -4
  45. data/spec/units/stacker_bee/middleware/remove_nils_spec.rb +1 -1
  46. data/spec/units/stacker_bee/rash_spec.rb +41 -41
  47. data/spec/units/stacker_bee/request_error_spec.rb +7 -7
  48. data/spec/units/stacker_bee/utilities_spec.rb +30 -30
  49. data/spec/units/stacker_bee_spec.rb +2 -2
  50. data/stacker_bee.gemspec +24 -22
  51. metadata +4 -4
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MjU3MzAwMzBhYzg3NWE5YzQ4ZTYyMzllMzU4MjdlNjk2MjI3ZTA2Yg==
4
+ NGZiMGQ0YTBhNmNhMjAzM2FhOWE1NWRjMmM0MWYxNjBlNjYzMmQwZg==
5
5
  data.tar.gz: !binary |-
6
- YmU0NGU2MmUxNDllYzRmMzI4MmE0NGU1ZThhMWYwNDUwYTQ5M2Y5Mw==
6
+ NmMwOWM4YjdkYTk1NDJhODgzNTM4Yjg3MmIzNzcxMDg4MTA3ZWE1MQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NzA1M2IwZGZkZWU4YTVlMDAyMmRlZmY0NTM0YWRmNzM1YWZmODI2NGQ2Yzdm
10
- ZGUyYjgxMjFjNmEyNTExZDhiMTAyNjE2ZGU0NWU0M2M0ZTI5ZjYzYjUxN2M3
11
- ODljNjZhY2Y1Y2JmNzkyNDc2Yzg1NGRiODBiNTMxZTE3MzBjNTk=
9
+ N2M0M2IxZTAwMTA0NzMzMDNhMTQxNjg5OWViNWM4YzVlM2E4MWYzODNmYThi
10
+ YmYzMzljMGI0Y2FjYzQ4MDVlNTJlNDJjYWNiMzhlODRkY2ZhYzM5MzVhMjFk
11
+ ODNmNmE2YTIwZTRhN2VkZWQ0NGQ5MTAxYTYyNTIwMTY3YWZlMWI=
12
12
  data.tar.gz: !binary |-
13
- MzFhMDM2ZGRhYmI1ZWE2ZTA2NmE4ZGYyYTZmZGQzYzcyZjFlMWM2NTYyZWY0
14
- ZjI1ODdiMDMzMGJkN2RmMTEwZjIzZTE2MzkyYzk4MGNiNjAyOTU1ZDYyZDBi
15
- YzhhZGYwZWY5MTJlZGYyN2YwNzgxMDdkOTE4YTM1YzI0M2ZlYzk=
13
+ NGZkOWNiMjUzODU1YTI3MjFlOTdjYzVjNjgzN2NiMDMzYTk4ZGZkMWYyY2Qy
14
+ YzE3ZjU5YmM0ZTFjZDYyOTg3Y2Y1YTM4Mzk4NmFiZWIxNWI2ZWIxYTUwNzQ3
15
+ YTAyMmVlODU5ODNjNTQ0MjZjNTIxMWM2OTU4YjVkYjRhZWQ3ODU=
data/.rubocop.yml CHANGED
@@ -6,8 +6,5 @@ Documentation:
6
6
  DoubleNegation:
7
7
  Enabled: false
8
8
 
9
- StringLiterals:
10
- Enabled: false
11
-
12
9
  Encoding:
13
10
  Enabled: false
data/Rakefile CHANGED
@@ -5,4 +5,4 @@ require 'rubocop/rake_task'
5
5
  task default: [:spec, :rubocop]
6
6
 
7
7
  RSpec::Core::RakeTask.new
8
- Rubocop::RakeTask.new
8
+ RuboCop::RakeTask.new
data/bin/stacker_bee CHANGED
@@ -1,6 +1,6 @@
1
1
  #! /usr/bin/env ruby
2
2
 
3
- $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
3
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
4
4
 
5
5
  require 'optparse'
6
6
  require 'stacker_bee'
@@ -9,7 +9,7 @@ require 'yaml'
9
9
  require 'irb'
10
10
  require 'irb/completion'
11
11
 
12
- cli_title = "StackerBee CloudStack REPL"
12
+ cli_title = 'StackerBee CloudStack REPL'
13
13
 
14
14
  command = File.basename(__FILE__)
15
15
  options = {}
@@ -21,27 +21,27 @@ optparse = OptionParser.new do |opts|
21
21
  Example: #{command} -u http://localhost:8080 -a MY_API_KEY -s MY_SECRET_KEY
22
22
  BANNER
23
23
 
24
- config_help = "StackerBee configuration file, formatted as YAML"
24
+ config_help = 'StackerBee configuration file, formatted as YAML'
25
25
  opts.on('-c', '--config=/PATH/TO/CONFIG.yml', config_help) do |config|
26
26
  options[:config] = config
27
27
  end
28
- opts.on('-a', '--api_key=API_KEY', "CloudStack API Key") do |key|
28
+ opts.on('-a', '--api_key=API_KEY', 'CloudStack API Key') do |key|
29
29
  options[:api_key] = key
30
30
  end
31
- opts.on('-s', '--secret_key=SECRET_KEY', "CloudStack Secret Key") do |key|
31
+ opts.on('-s', '--secret_key=SECRET_KEY', 'CloudStack Secret Key') do |key|
32
32
  options[:secret_key] = key
33
33
  end
34
- opts.on('-u', '--url=URL', "CloudStack URL") do |url|
34
+ opts.on('-u', '--url=URL', 'CloudStack URL') do |url|
35
35
  options[:url] = url
36
36
  end
37
- opts.on('-v', '--[no-]verbose', 'Run verbosely') do |v|
37
+ opts.on('-v', '--[no-]verbose', 'Run verbosely') do
38
38
  verbose = true
39
39
  end
40
40
  opts.on('-h', '--help', 'Display this screen') do
41
41
  puts opts
42
42
 
43
43
  puts
44
- puts "Example config file:"
44
+ puts 'Example config file:'
45
45
  puts
46
46
  puts "url: 'http://127.0.0.1:1234/client/api'"
47
47
  puts "api_key: 'MY_KEY-MY_KEY-MY_KEY'"
@@ -59,8 +59,8 @@ begin
59
59
  end
60
60
  unless options.keys.include?(:config) ||
61
61
  ([:api_key, :secret_key, :url] - options.keys).empty?
62
- puts "Please specify a config file or all of the following: " \
63
- "--api_key, --secret_key and --url"
62
+ puts 'Please specify a config file or all of the following: ' \
63
+ '--api_key, --secret_key and --url'
64
64
  exit
65
65
  end
66
66
  rescue OptionParser::InvalidOption, OptionParser::MissingArgument
@@ -1,5 +1,5 @@
1
- require "multi_json"
2
- require "stacker_bee/utilities"
1
+ require 'multi_json'
2
+ require 'stacker_bee/utilities'
3
3
 
4
4
  module StackerBee
5
5
  class API
@@ -35,8 +35,8 @@ module StackerBee
35
35
  end
36
36
 
37
37
  def apis_by_endpoint(response)
38
- response["listapisresponse"]["api"].each_with_object({}) do |api, memo|
39
- memo[uncase(api["name"])] = api
38
+ response['listapisresponse']['api'].each_with_object({}) do |api, memo|
39
+ memo[uncase(api['name'])] = api
40
40
  end
41
41
  end
42
42
  end
@@ -1,27 +1,27 @@
1
- require "forwardable"
2
- require "stacker_bee/builder"
3
- require "stacker_bee/configuration"
4
- require "stacker_bee/api"
5
- require "stacker_bee/connection"
6
- require "stacker_bee/middleware/environment"
7
- require "stacker_bee/middleware/base"
8
- require "stacker_bee/middleware/adapter"
9
- require "stacker_bee/middleware/endpoint_normalizer"
10
- require "stacker_bee/middleware/remove_empty_strings"
11
- require "stacker_bee/middleware/cloud_stack_api"
12
- require "stacker_bee/middleware/dictionary_flattener"
13
- require "stacker_bee/middleware/remove_nils"
14
- require "stacker_bee/middleware/format_keys"
15
- require "stacker_bee/middleware/format_values"
16
- require "stacker_bee/middleware/json_body"
17
- require "stacker_bee/middleware/de_namespace"
18
- require "stacker_bee/middleware/rashify_response"
19
- require "stacker_bee/middleware/clean_response"
20
- require "stacker_bee/middleware/raise_on_http_error"
21
- require "stacker_bee/middleware/http_status"
22
- require "stacker_bee/middleware/console_access"
23
- require "stacker_bee/middleware/error_message"
24
- require "stacker_bee/middleware/log_response"
1
+ require 'forwardable'
2
+ require 'stacker_bee/builder'
3
+ require 'stacker_bee/configuration'
4
+ require 'stacker_bee/api'
5
+ require 'stacker_bee/connection'
6
+ require 'stacker_bee/middleware/environment'
7
+ require 'stacker_bee/middleware/base'
8
+ require 'stacker_bee/middleware/adapter'
9
+ require 'stacker_bee/middleware/endpoint_normalizer'
10
+ require 'stacker_bee/middleware/remove_empty_strings'
11
+ require 'stacker_bee/middleware/cloud_stack_api'
12
+ require 'stacker_bee/middleware/dictionary_flattener'
13
+ require 'stacker_bee/middleware/remove_nils'
14
+ require 'stacker_bee/middleware/format_keys'
15
+ require 'stacker_bee/middleware/format_values'
16
+ require 'stacker_bee/middleware/json_body'
17
+ require 'stacker_bee/middleware/de_namespace'
18
+ require 'stacker_bee/middleware/rashify_response'
19
+ require 'stacker_bee/middleware/clean_response'
20
+ require 'stacker_bee/middleware/raise_on_http_error'
21
+ require 'stacker_bee/middleware/http_status'
22
+ require 'stacker_bee/middleware/console_access'
23
+ require 'stacker_bee/middleware/error_message'
24
+ require 'stacker_bee/middleware/log_response'
25
25
 
26
26
  # rubocop:disable ClassLength
27
27
  module StackerBee
@@ -10,19 +10,25 @@ module StackerBee
10
10
  :api_key,
11
11
  :middlewares,
12
12
  :faraday_middlewares,
13
- :logger
13
+ :logger,
14
+ :config
14
15
  ]
15
16
 
16
17
  def initialize(attrs = nil)
17
18
  @attributes = attrs || {}
18
- @attributes.each_pair do |key, value|
19
- next if key == :config
20
- unless ATTRIBUTES.include?(key)
21
- fail NoAttributeError, "No attribute defined: '#{key}'"
22
- end
23
- end
19
+ validate_attributes
24
20
  end
25
21
 
22
+ def validate_attributes
23
+ unknown_attributes = @attributes.keys - ATTRIBUTES
24
+ return if unknown_attributes.empty?
25
+
26
+ attribute_list = unknown_attributes.join(', ')
27
+ message = "No configuration attribute exists: #{attribute_list}"
28
+ fail NoAttributeError, message
29
+ end
30
+ private :validate_attributes
31
+
26
32
  def ssl_verify?
27
33
  attribute :ssl_verify, true
28
34
  end
@@ -1,7 +1,7 @@
1
- require "faraday"
2
- require "uri"
3
- require "stacker_bee/http_middleware/signed_query"
4
- require "stacker_bee/http_middleware/detokenizer"
1
+ require 'faraday'
2
+ require 'uri'
3
+ require 'stacker_bee/http_middleware/signed_query'
4
+ require 'stacker_bee/http_middleware/detokenizer'
5
5
 
6
6
  module StackerBee
7
7
  class ConnectionError < StandardError
@@ -15,7 +15,7 @@ module StackerBee
15
15
 
16
16
  uri = URI.parse(configuration.url)
17
17
  uri.path = ''
18
- fail ConnectionError, "no protocol specified" unless uri.scheme
18
+ fail ConnectionError, 'no protocol specified' unless uri.scheme
19
19
 
20
20
  initialize_faraday(
21
21
  url: uri.to_s,
@@ -1,5 +1,5 @@
1
- require "faraday"
2
- require "base64"
1
+ require 'faraday'
2
+ require 'base64'
3
3
 
4
4
  module StackerBee
5
5
  module HTTPMiddleware
@@ -1,12 +1,12 @@
1
- require "faraday"
2
- require "base64"
1
+ require 'faraday'
2
+ require 'base64'
3
3
 
4
4
  module StackerBee
5
5
  module HTTPMiddleware
6
6
  class SignedQuery < Faraday::Middleware
7
7
  def initialize(app, key)
8
8
  @key = key
9
- fail "Key cannot be nil" unless @key
9
+ fail 'Key cannot be nil' unless @key
10
10
  super app
11
11
  end
12
12
 
@@ -5,7 +5,7 @@ module StackerBee
5
5
  params = env.request.params.to_a.sort
6
6
  env.raw_response = connection.get(env.request.path, params)
7
7
  env.response.content_type =
8
- env.raw_response.env[:response_headers]["content-type"]
8
+ env.raw_response.env[:response_headers]['content-type']
9
9
  env.response.body = env.raw_response.body
10
10
  end
11
11
 
@@ -18,7 +18,7 @@ module StackerBee
18
18
  env.request.params = transform_params(env.request.params)
19
19
  end
20
20
 
21
- def after(env)
21
+ def after(_env)
22
22
  end
23
23
 
24
24
  def transform_params(params)
@@ -18,11 +18,11 @@ module StackerBee
18
18
  end
19
19
 
20
20
  def contains_count?(body)
21
- body.size == 2 && body.key?("count")
21
+ body.size == 2 && body.key?('count')
22
22
  end
23
23
 
24
24
  def remove_count(body)
25
- body.reject { |key, val| key == "count" }.values.first
25
+ body.reject { |key, _| key == 'count' }.values.first
26
26
  end
27
27
 
28
28
  def single_hash?(body)
@@ -1,8 +1,8 @@
1
1
  module StackerBee
2
2
  module Middleware
3
3
  class CloudStackAPI < Base
4
- RESPONSE_TYPE = "json"
5
- DEFAULT_PATH = "/client/api/"
4
+ RESPONSE_TYPE = 'json'
5
+ DEFAULT_PATH = '/client/api/'
6
6
 
7
7
  def before(env)
8
8
  env.request.params.merge!(
@@ -1,8 +1,8 @@
1
1
  module StackerBee
2
2
  module Middleware
3
3
  class DictionaryFlattener < Base
4
- LB = "SBLEFTBRACKET"
5
- RB = "SBRIGHTBRACKET"
4
+ LB = 'SBLEFTBRACKET'
5
+ RB = 'SBRIGHTBRACKET'
6
6
 
7
7
  # TODO: should the tokenizing be separate from the flattener?
8
8
  # it could be a middleware that finds [] in the keys and replaces them
@@ -38,7 +38,7 @@ module StackerBee
38
38
 
39
39
  # TODO: isn't this done with the RemoveEmptyStrings middleware?
40
40
  def remove_falseish(hash)
41
- hash.reject { |_, v| v == "" || v =~ /false/i || !v }
41
+ hash.reject { |_, v| v == '' || v =~ /false/i || !v }
42
42
  end
43
43
  end
44
44
  end
@@ -8,10 +8,10 @@ module StackerBee
8
8
 
9
9
  def endpoint_name_for(name)
10
10
  # TODO: shouldn't this be in the base endpoint?
11
- fail "API required" unless api
11
+ fail 'API required' unless api
12
12
  endpoint_description = api[name]
13
13
  if endpoint_description
14
- endpoint_description.fetch("name")
14
+ endpoint_description.fetch('name')
15
15
  else
16
16
  super
17
17
  end
@@ -2,9 +2,9 @@ module StackerBee
2
2
  module Middleware
3
3
  class ErrorMessage < Base
4
4
  def after(env)
5
- unless env.response.success?
6
- env.response.error = env.response.body[:errortext]
7
- end
5
+ return if env.response.success?
6
+
7
+ env.response.error = env.response.body[:errortext]
8
8
  end
9
9
 
10
10
  def content_types
@@ -4,7 +4,7 @@ module StackerBee
4
4
  def after(env)
5
5
  return unless env.logger
6
6
  params = env.request.params.to_a.sort
7
- command = params.find { |key, _| key == "command" }.last
7
+ command = params.find { |key, _| key == 'command' }.last
8
8
 
9
9
  log(env, params, command)
10
10
  end
@@ -1,4 +1,4 @@
1
- require "stacker_bee/request_error"
1
+ require 'stacker_bee/request_error'
2
2
 
3
3
  module StackerBee
4
4
  module Middleware
@@ -2,7 +2,7 @@ module StackerBee
2
2
  module Middleware
3
3
  class RemoveNils < Base
4
4
  def transform_params(params)
5
- params.reject { |key, val| val.nil? }
5
+ params.reject { |_, val| val.nil? }
6
6
  end
7
7
  end
8
8
  end
@@ -1,5 +1,5 @@
1
- require "forwardable"
2
- require "stacker_bee/utilities"
1
+ require 'forwardable'
2
+ require 'stacker_bee/utilities'
3
3
 
4
4
  module StackerBee
5
5
  class Rash
@@ -78,7 +78,7 @@ module StackerBee
78
78
  end
79
79
 
80
80
  def convert_key(key)
81
- key.kind_of?(Numeric) ? key : uncase(key)
81
+ key.is_a?(Numeric) ? key : uncase(key)
82
82
  end
83
83
 
84
84
  def convert_value(value)
@@ -1,3 +1,3 @@
1
1
  module StackerBee
2
- VERSION = "2.1.1"
2
+ VERSION = '2.1.1'
3
3
  end
data/lib/stacker_bee.rb CHANGED
@@ -1,2 +1,2 @@
1
- require_relative "stacker_bee/version"
2
- require_relative "stacker_bee/client"
1
+ require_relative 'stacker_bee/version'
2
+ require_relative 'stacker_bee/client'
@@ -1,11 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Configuring middlewares" do
3
+ describe 'Configuring middlewares' do
4
4
  let(:configuration) do
5
5
  {
6
- url: "http://garbagestring",
7
- api_key: "HI!",
8
- secret_key: "SECRET",
6
+ url: 'http://garbagestring',
7
+ api_key: 'HI!',
8
+ secret_key: 'SECRET',
9
9
  faraday_middlewares: faraday_middlewares,
10
10
  middlewares: middlewares
11
11
  }
@@ -19,21 +19,21 @@ describe "Configuring middlewares" do
19
19
 
20
20
  let(:body) do
21
21
  proc do
22
- def call(env)
23
- fail "MiddlewareUsed"
22
+ def call(_env)
23
+ fail 'MiddlewareUsed'
24
24
  end
25
25
  end
26
26
  end
27
27
 
28
28
  def self.it_uses_the_middleware
29
- it "uses the middle ware" do
29
+ it 'uses the middle ware' do
30
30
  expect { subject.list_virtual_machines }
31
- .to raise_exception "MiddlewareUsed"
31
+ .to raise_exception 'MiddlewareUsed'
32
32
  end
33
33
  end
34
34
 
35
35
  def self.it_configures_a_faraday_middleware
36
- describe "a Faraday middleware" do
36
+ describe 'a Faraday middleware' do
37
37
  let(:faraday_middlewares) do
38
38
  ->(faraday) { faraday.use faraday_middleware_class }
39
39
  end
@@ -43,7 +43,7 @@ describe "Configuring middlewares" do
43
43
  end
44
44
 
45
45
  def self.it_configures_a_middleware
46
- describe "a StackerBee middleware" do
46
+ describe 'a StackerBee middleware' do
47
47
  let(:middlewares) do
48
48
  ->(builder) { builder.use middleware_class }
49
49
  end
@@ -51,7 +51,7 @@ describe "Configuring middlewares" do
51
51
  end
52
52
  end
53
53
 
54
- describe "via StackerBee::Client.configuration=" do
54
+ describe 'via StackerBee::Client.configuration=' do
55
55
  subject { StackerBee::Client.new }
56
56
  before { StackerBee::Client.configuration = configuration }
57
57
 
@@ -59,7 +59,7 @@ describe "Configuring middlewares" do
59
59
  it_configures_a_faraday_middleware
60
60
  end
61
61
 
62
- describe "via the Client initializer" do
62
+ describe 'via the Client initializer' do
63
63
  subject { StackerBee::Client.new(configuration) }
64
64
 
65
65
  it_configures_a_middleware
@@ -1,9 +1,9 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
- describe "A request sent to CloudStack for console access", :vcr do
3
+ describe 'A request sent to CloudStack for console access', :vcr do
4
4
  subject(:console_access) { client.console_access(vm: vm) }
5
5
 
6
- let(:vm) { "36f9c08b-f17a-4d0e-ac9b-d45ce2d34fcd" }
6
+ let(:vm) { '36f9c08b-f17a-4d0e-ac9b-d45ce2d34fcd' }
7
7
  let(:client) { StackerBee::Client.new(config_hash) }
8
8
  let(:config_hash) do
9
9
  {
@@ -13,7 +13,7 @@ describe "A request sent to CloudStack for console access", :vcr do
13
13
  }
14
14
  end
15
15
 
16
- it "returns html for console access" do
16
+ it 'returns html for console access' do
17
17
  expect(console_access).to match(/<html>.*<frame src=.*<\/html>/)
18
18
  end
19
19
  end