stacker_bee 2.1.0.pre184 → 2.1.0.pre185

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTdiMDdkZTNmMzdmMjc4MTU0ZmNkYTg5ODg0NmU0NDBiNjA4ZDc1OQ==
4
+ YmVlYmQ2ZjAzM2Y3NDRmYzMxYzFkMzYxZDQwMTFmMDU0NjU1OWI5Nw==
5
5
  data.tar.gz: !binary |-
6
- M2NiZDc0NDhmZGFjZDkxOGRhOTRmZmIwNmVhMDk3MzEyNzMxNTExNg==
6
+ MzIwMjlkNWE4NWE5NDg4MzM3YmRhNjQ5OTFlYjc4MjJiZjc1OGFjMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MThiNzJhMDdhNjgzZjUxZGU3MDAxYTk3MTZiODdhMGQ4ODkxZTJhOTBiZjkx
10
- Zjc2NTcwMDBmOWFlMDIxMmQ1YzI0N2EwYzcyMzMxYjg1MmU4NzBjMzhmMTMw
11
- ZjEzM2IyNGI5ODcwZGZmYjczZDYxNzYwOTgyMDRlOWE2ZWFmNTM=
9
+ ZDE4OWMyYTQ1NWY1M2RiOThlZjZlMDNhM2EwYjM4MzY2N2UxYjM1NDU0M2Ey
10
+ YWQyNDIxNjcxNGViNDRmZjEzYTg4OWNiYjA1ZjI4MzIyYjM1ZWQyOTM0ZDll
11
+ ZjEzNmE1ODVmYjMzYWJiNzlkOWExNGZmMzAyM2ZmODQ1MDg5YzY=
12
12
  data.tar.gz: !binary |-
13
- ZjZlMjE5MmI4MjYyYTFiNjZkMTViZTBiNWQ0ZGQ0ZThkMGEzMjU0OTk5MDBm
14
- YWFhZDM1OTVhYjk5MGY2MDk4YmYxYTdjY2VhYjVhZjJmYTg2N2MzMzI3M2Y3
15
- NTlmODkwY2E2YWUyYTY3NTA1ZTRjYjc2YjYxYzI0NWU0ZjFlNzA=
13
+ MmVlODRhMTA5OTRlNTQ1YTBkYjg2ZmNkYzIyYmQ5ODAzZWY5OTQ4NmFlYWZl
14
+ MWRhMzkwMTRkNDM1ZjZkM2VhNzA2ZTliZWYxMzFmYWMzMzdhODI4Njg5Y2U2
15
+ MzIwZGJlODU0YzJhYjk4N2VhZDQzZGQwMmI1NjgyMTQ4MTFkYTU=
@@ -11,7 +11,7 @@ module StackerBee
11
11
 
12
12
  def detokenize(uri)
13
13
  uri.query =
14
- StackerBee::Middleware::DictionaryFlattener.detokenize uri.query
14
+ StackerBee::Middleware::DictionaryFlattener.detokenize(uri.query)
15
15
  end
16
16
  end
17
17
  end
@@ -7,18 +7,18 @@ module StackerBee
7
7
  def initialize(app, key)
8
8
  @key = key
9
9
  fail "Key cannot be nil" unless @key
10
- super(app)
10
+ super app
11
11
  end
12
12
 
13
13
  def call(env)
14
- sign_uri(env[:url])
14
+ sign_uri env[:url]
15
15
  @app.call(env)
16
16
  end
17
17
 
18
18
  def sign_uri(uri)
19
19
  downcased = uri.query.downcase
20
20
  nonplussed = downcased.gsub('+', '%20')
21
- signed = OpenSSL::HMAC.digest 'sha1', @key, nonplussed
21
+ signed = OpenSSL::HMAC.digest('sha1', @key, nonplussed)
22
22
  encoded = Base64.encode64(signed).chomp
23
23
  escaped = CGI.escape(encoded)
24
24
 
@@ -32,11 +32,11 @@ module StackerBee
32
32
  end
33
33
 
34
34
  def select(*args, &block)
35
- Rash.new @hash.select(*args, &block)
35
+ Rash.new(@hash.select(*args, &block))
36
36
  end
37
37
 
38
38
  def reject(*args, &block)
39
- Rash.new @hash.reject(*args, &block)
39
+ Rash.new(@hash.reject(*args, &block))
40
40
  end
41
41
 
42
42
  def values_at(*keys)
@@ -5,7 +5,7 @@ module StackerBee
5
5
  def initialize(env)
6
6
  self.env = env
7
7
  self.status = env.response.status
8
- super(env.response.error)
8
+ super env.response.error
9
9
  end
10
10
 
11
11
  def self.for(env)
@@ -1,6 +1,10 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe "A request sent to CloudStack for console access", :vcr do
4
+ subject(:console_access) { client.console_access(vm: vm) }
5
+
6
+ let(:vm) { "36f9c08b-f17a-4d0e-ac9b-d45ce2d34fcd" }
7
+ let(:client) { StackerBee::Client.new(config_hash) }
4
8
  let(:config_hash) do
5
9
  {
6
10
  url: CONFIG['url'],
@@ -9,12 +13,6 @@ describe "A request sent to CloudStack for console access", :vcr do
9
13
  }
10
14
  end
11
15
 
12
- let(:client) { StackerBee::Client.new(config_hash) }
13
-
14
- let(:vm) { "36f9c08b-f17a-4d0e-ac9b-d45ce2d34fcd" }
15
-
16
- subject(:console_access) { client.console_access(vm: vm) }
17
-
18
16
  it "returns html for console access" do
19
17
  expect(console_access).to match(/<html>.*<frame src=.*<\/html>/)
20
18
  end
@@ -2,6 +2,8 @@ require "spec_helper"
2
2
  require "logger"
3
3
 
4
4
  describe "A response to a request sent to the CloudStack API", :vcr do
5
+ subject { client.list_accounts }
6
+
5
7
  let(:url) { CONFIG["url"] }
6
8
  let(:config_hash) do
7
9
  {
@@ -18,8 +20,6 @@ describe "A response to a request sent to the CloudStack API", :vcr do
18
20
  StackerBee::Client.new(config_hash)
19
21
  end
20
22
 
21
- subject { client.list_accounts }
22
-
23
23
  it { should_not be_empty }
24
24
 
25
25
  context "first item" do
@@ -47,10 +47,8 @@ describe "A response to a request sent to the CloudStack API", :vcr do
47
47
  end
48
48
 
49
49
  context "space character in a request parameter", :regression do
50
+ subject { client.list_accounts(params) }
50
51
  let(:params) { { name: "stacker bee" } }
51
- subject do
52
- client.list_accounts(params)
53
- end
54
52
 
55
53
  it "properly signs the request" do
56
54
  expect { subject }.not_to raise_error
@@ -58,10 +56,8 @@ describe "A response to a request sent to the CloudStack API", :vcr do
58
56
  end
59
57
 
60
58
  context "a nil request parameter" do
59
+ subject { client.list_accounts(params) }
61
60
  let(:params) { { name: nil } }
62
- subject do
63
- client.list_accounts(params)
64
- end
65
61
 
66
62
  it "properly executes the request" do
67
63
  expect { subject }.not_to raise_error
@@ -69,10 +65,8 @@ describe "A response to a request sent to the CloudStack API", :vcr do
69
65
  end
70
66
 
71
67
  context "a request parameter with and empty string", :regression do
68
+ subject { client.list_accounts(params) }
72
69
  let(:params) { { name: '' } }
73
- subject do
74
- client.list_accounts(params)
75
- end
76
70
 
77
71
  it "properly executes the request" do
78
72
  expect { subject }.not_to raise_error
@@ -89,10 +83,8 @@ describe "A response to a request sent to the CloudStack API", :vcr do
89
83
  end
90
84
 
91
85
  context "a request parameter with an Array", :regression do
86
+ subject { client.list_hosts(params).first.keys }
92
87
  let(:params) { { page: 1, pagesize: 1, details: [:events, :stats] } }
93
- subject do
94
- client.list_hosts(params).first.keys
95
- end
96
88
  it { should include "cpuused" }
97
89
  it { should include "events" }
98
90
  it { should_not include "cpuallocated" }
@@ -100,11 +92,13 @@ describe "A response to a request sent to the CloudStack API", :vcr do
100
92
 
101
93
  context "a request parameter with a map" do
102
94
  let(:zone_id) { client.list_zones.first["id"] }
95
+ let(:service_offering_id) { service_offerings.first["id"] }
103
96
 
104
- let(:service_offering_id) do
97
+ let(:service_offerings) do
105
98
  client.list_network_offerings(
106
99
  supported_services: 'sourcenat',
107
- type: 'isolated').first["id"]
100
+ type: 'isolated'
101
+ )
108
102
  end
109
103
 
110
104
  let(:network) do
@@ -28,7 +28,7 @@ RSpec.configure do |config|
28
28
  # --seed 1234
29
29
  config.order = 'random'
30
30
 
31
- config.after(:each) do
31
+ config.before :each do
32
32
  StackerBee::Client.reset!
33
33
  end
34
34
  end
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
  describe StackerBee::API do
4
4
  subject { api }
5
5
 
6
- let(:api) { StackerBee::API.new(api_path: api_path) }
6
+ let(:api) { described_class.new(api_path: api_path) }
7
7
  let(:api_path) do
8
8
  File.join(File.dirname(__FILE__), '../../fixtures/simple.json')
9
9
  end
@@ -2,19 +2,19 @@ require "spec_helper"
2
2
  require "ostruct"
3
3
 
4
4
  describe StackerBee::Client, ".api" do
5
+ subject { described_class }
5
6
  let(:api) { double }
6
7
  before do
7
- StackerBee::API.stub(:new) { api }
8
- StackerBee::Client.api_path = nil
8
+ StackerBee::API.stub new: api
9
+ described_class.api_path = nil
9
10
  end
10
- subject { StackerBee::Client }
11
11
  its(:api_path) { should_not be_nil }
12
12
  its(:api) { should eq api }
13
13
  end
14
14
 
15
15
  describe StackerBee::Client, "calling endpoint" do
16
16
  let(:client) do
17
- StackerBee::Client.new(
17
+ described_class.new(
18
18
  url: "http://example.com",
19
19
  middlewares: lambda do |builder|
20
20
  builder.before middleware_class,
@@ -92,20 +92,20 @@ describe StackerBee::Client, "configuration" do
92
92
  StackerBee::Configuration.new(instance_config_hash)
93
93
  end
94
94
  before do
95
- StackerBee::Configuration.stub(:new) do |options|
95
+ StackerBee::Configuration.stub(:new) do
96
96
  fail "Unexpected Configuration instantiation: \n#{args.inspect}"
97
97
  end
98
- StackerBee::Configuration.stub(:new).with(default_config_hash) do
98
+ StackerBee::Configuration.stub(:new).with(default_config_hash) do
99
99
  default_configuration
100
100
  end
101
101
  StackerBee::Configuration.stub(:new).with(instance_config_hash) do
102
102
  instance_configuration
103
103
  end
104
- StackerBee::Client.configuration = default_config_hash
104
+ described_class.configuration = default_config_hash
105
105
  end
106
106
 
107
107
  describe ".new" do
108
- subject { StackerBee::Client.new }
108
+ subject { described_class.new }
109
109
 
110
110
  context "with default, class configuration" do
111
111
  its(:url) { should eq default_url }
@@ -114,7 +114,7 @@ describe StackerBee::Client, "configuration" do
114
114
  end
115
115
 
116
116
  context "with instance-specific configuration" do
117
- subject { StackerBee::Client.new(instance_config_hash) }
117
+ subject { described_class.new(instance_config_hash) }
118
118
  its(:configuration) { should eq instance_configuration }
119
119
  its(:url) { should eq instance_url }
120
120
  its(:api_key) { should eq instance_api_key }
@@ -122,7 +122,7 @@ describe StackerBee::Client, "configuration" do
122
122
  end
123
123
 
124
124
  context "with instance-specific configuration that's not a hash" do
125
- subject { StackerBee::Client.new(config) }
125
+ subject { described_class.new(config) }
126
126
  let(:config) { double(to_hash: instance_config_hash) }
127
127
  its(:configuration) { should eq instance_configuration }
128
128
  its(:url) { should eq instance_url }
@@ -1,7 +1,7 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe StackerBee::Configuration do
4
- its(:url) { should be_nil }
5
- its(:api_key) { should be_nil }
6
- its(:secret_key) { should be_nil }
4
+ its(:url) { should be_nil }
5
+ its(:api_key) { should be_nil }
6
+ its(:secret_key) { should be_nil }
7
7
  end
@@ -1,21 +1,19 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe StackerBee::Connection do
4
+ subject(:get) { connection.get(path, query_params) }
5
+ before { Faraday.stub new: faraday }
6
+
4
7
  let(:url) { "http://test.com:1234/foo/bar/" }
5
8
  let(:path) { "/foo/bar" }
6
9
  let(:secret_key) { "shhh" }
7
10
  let(:query_params) { [[:foo, :bar]] }
8
11
  let(:response) { double(:response) }
9
12
  let(:faraday) { double(:faraday, get: response) }
10
- let(:connection) { StackerBee::Connection.new(configuration) }
13
+ let(:connection) { described_class.new(configuration) }
11
14
  let(:configuration) do
12
15
  double(url: url, secret_key: secret_key, ssl_verify: nil)
13
16
  end
14
- subject(:get) { connection.get(path, query_params) }
15
-
16
- before do
17
- Faraday.stub(:new) { faraday }
18
- end
19
17
 
20
18
  context "successfully connecting" do
21
19
  before do
@@ -34,16 +32,14 @@ describe StackerBee::Connection do
34
32
  faraday.stub(:get) { fail Faraday::Error::ConnectionFailed, "boom" }
35
33
  end
36
34
  it "raises a helpful exception" do
37
- klass = StackerBee::ConnectionError
38
- expect { get }.to raise_error klass, /#{url}/
35
+ expect { get }.to raise_error StackerBee::ConnectionError, /#{url}/
39
36
  end
40
37
  end
41
38
 
42
39
  context "no protocol specified in URL" do
43
40
  let(:url) { "wrong.com" }
44
41
  it "raises a helpful exception" do
45
- klass = StackerBee::ConnectionError
46
- expect { get }.to raise_error klass, /no protocol/
42
+ expect { get }.to raise_error StackerBee::ConnectionError, /no protocol/
47
43
  end
48
44
  end
49
45
 
@@ -57,7 +53,7 @@ describe StackerBee::Connection do
57
53
 
58
54
  context "when verifying an ssl connection" do
59
55
  let(:configuration) do
60
- double url: url, secret_key: secret_key, ssl_verify: false
56
+ double(url: url, secret_key: secret_key, ssl_verify: false)
61
57
  end
62
58
  it "specifies the ssl verify option when creating a connection" do
63
59
  get
@@ -10,7 +10,7 @@ describe StackerBee::Middleware::Base do
10
10
 
11
11
  let(:middleware) { subclass.new(app: app) }
12
12
 
13
- let(:subclass) { Class.new(StackerBee::Middleware::Base, &subclass_body) }
13
+ let(:subclass) { Class.new(described_class, &subclass_body) }
14
14
  let(:subclass_body) { proc {} }
15
15
 
16
16
  describe "#call" do
@@ -17,6 +17,8 @@ describe StackerBee::Middleware::DictionaryFlattener do
17
17
  end
18
18
 
19
19
  describe ".new" do
20
+ subject { described_class.new.params(params) }
21
+
20
22
  def prefix(number)
21
23
  described_class.tokenize "rebels[#{number}]"
22
24
  end
@@ -26,17 +28,13 @@ describe StackerBee::Middleware::DictionaryFlattener do
26
28
  "rebels" => { "r2" => "d2", "r1" => "", "father" => false } }
27
29
  end
28
30
 
29
- subject do
30
- described_class.new.params(params)
31
- end
32
-
33
31
  it "flattens objects in the manner that cloudstack expects" do
34
32
  subject["#{prefix(0)}.name"].should eq "r2"
35
33
  subject["#{prefix(0)}.key"].should eq "r2"
36
34
  subject["#{prefix(0)}.value"].should eq "d2"
37
35
  end
38
36
 
39
- it "doesnt flatten empty hashes" do
37
+ it "does not flatten empty hashes" do
40
38
  subject.should_not have_key "#{prefix(2)}.name"
41
39
  end
42
40
 
@@ -5,9 +5,7 @@ describe StackerBee::Middleware::EndpointNormalizer do
5
5
  let(:app) { double(:app) }
6
6
 
7
7
  let(:env) do
8
- StackerBee::Middleware::Environment.new(
9
- endpoint_name: endpoint_name
10
- )
8
+ StackerBee::Middleware::Environment.new(endpoint_name: endpoint_name)
11
9
  end
12
10
 
13
11
  context "when it doesn't match" do
@@ -5,6 +5,8 @@ shared_examples_for "a Rash" do |mapping|
5
5
  end
6
6
 
7
7
  describe StackerBee::Rash do
8
+ subject { rash }
9
+
8
10
  let(:wiz) { [{ "aB_C" => "abc" }, { "X_yZ" => "xyz" }] }
9
11
  let(:ziz) do
10
12
  {
@@ -28,15 +30,14 @@ describe StackerBee::Rash do
28
30
  end
29
31
  end
30
32
  let(:dissimilar_hash) { hash.dup.tap { |loud| loud.delete "foo" } }
31
- let(:rash) { StackerBee::Rash.new hash }
32
- subject { rash }
33
+ let(:rash) { described_class.new(hash) }
33
34
 
34
35
  it { should include "FOO" }
35
36
 
36
37
  it { should == subject }
37
38
  it { should == subject.dup }
38
39
  it { should == hash }
39
- it { should == StackerBee::Rash.new(hash) }
40
+ it { should == described_class.new(hash) }
40
41
  it { should == similar_hash }
41
42
  it { should_not == dissimilar_hash }
42
43
 
@@ -67,14 +68,14 @@ describe StackerBee::Rash do
67
68
 
68
69
  describe "#select" do
69
70
  subject { rash.select { |key, value| value.is_a? String } }
70
- it { should be_a StackerBee::Rash }
71
+ it { should be_a described_class }
71
72
  it { should include "FOO" }
72
73
  it { should_not include "WIZ" }
73
74
  end
74
75
 
75
76
  describe "#reject" do
76
77
  subject { rash.reject { |key, value| value.is_a? String } }
77
- it { should be_a StackerBee::Rash }
78
+ it { should be_a described_class }
78
79
  it { should include "WIZ" }
79
80
  it { should_not include "FOO" }
80
81
  end
@@ -83,5 +84,4 @@ describe StackerBee::Rash do
83
84
  subject { rash.values_at "FOO", "WIZ", "WRONG" }
84
85
  it { should == ["foo", wiz, nil] }
85
86
  end
86
-
87
87
  end
@@ -1,13 +1,13 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe "An error occuring" do
4
- let(:env) { double response: response }
5
- let(:response) { double status: status, error: error_text }
4
+ let(:env) { double(response: response) }
5
+ let(:response) { double(status: status, error: error_text) }
6
6
  let(:error_text) { "There was an error!" }
7
7
  let(:status) { 431 }
8
8
 
9
9
  describe StackerBee::RequestError, ".for" do
10
- subject { StackerBee::RequestError.for env }
10
+ subject { described_class.for(env) }
11
11
 
12
12
  context "HTTP status in the 400s" do
13
13
  let(:status) { 431 }
@@ -24,7 +24,7 @@ describe "An error occuring" do
24
24
  end
25
25
 
26
26
  describe StackerBee::RequestError do
27
- subject { StackerBee::ClientError.new(env) }
27
+ subject { described_class.new(env) }
28
28
 
29
29
  its(:status) { should eq status }
30
30
  its(:to_s) { should eq error_text }
@@ -2,6 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe StackerBee::Utilities, "#uncase" do
4
4
  include StackerBee::Utilities
5
+
5
6
  it { uncase("Foo Bar").should eq "foobar" }
6
7
  it { uncase("foo_bar").should eq "foobar" }
7
8
  it { uncase("foo-bar").should eq "foobar" }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stacker_bee
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.pre184
4
+ version: 2.1.0.pre185
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Sterndale
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-04-08 00:00:00.000000000 Z
12
+ date: 2014-04-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday