Skip to content

Commit 3b40cbe

Browse files
authored
Merge pull request #145 from nmburgan/maint/master/fix_specs
(maint) Use latest Faraday/webmock, update specs
2 parents 302d52a + f6febc9 commit 3b40cbe

File tree

8 files changed

+66
-30
lines changed

8 files changed

+66
-30
lines changed

Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ group :test do
1212
gem 'rb-readline'
1313
gem 'rspec', '~> 3.10.0'
1414
gem 'rubocop', '~> 1.6'
15-
gem 'webmock', '1.21.0'
15+
gem 'webmock', '~> 3.13'
1616
end

spec/spec_helper.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
require 'simplecov'
44
require 'coveralls'
5+
require 'base64'
56

67
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
78
SimpleCov::Formatter::HTMLFormatter,
@@ -26,3 +27,19 @@ def initialize(values = {})
2627
config.tty = true
2728
config.formatter = :documentation
2829
end
30+
31+
def get_headers(username: nil, password: nil, token: nil, content_type: nil, content_length: nil)
32+
headers = {
33+
'Accept' => '*/*',
34+
'Accept-Encoding' => /gzip/,
35+
'User-Agent' => /Faraday/,
36+
}
37+
if username && password
38+
auth = Base64.encode64("#{username}:#{password}").chomp
39+
headers['Authorization'] = "Basic #{auth}"
40+
end
41+
headers['X-Auth-Token'] = token if token
42+
headers['Content-Type'] = content_type if content_type
43+
headers['Content-Length'] = content_length.to_s if content_length
44+
headers
45+
end

spec/vmfloaty/abs/auth_spec.rb

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33
require 'spec_helper'
44
require_relative '../../../lib/vmfloaty/auth'
55

6+
user = 'first.last'
7+
pass = 'password'
8+
69
describe Pooler do
10+
711
before :each do
812
@abs_url = 'https://abs.example.com/api/v2'
913
end
@@ -15,18 +19,20 @@
1519
end
1620

1721
it 'returns a token from abs' do
18-
stub_request(:post, 'https://first.last:[email protected]/api/v2/token')
22+
stub_request(:post, 'https://abs.example.com/api/v2/token')
23+
.with(headers: get_headers(username: user, password: pass, content_length: 0))
1924
.to_return(status: 200, body: @get_token_response, headers: {})
2025

21-
token = Auth.get_token(false, @abs_url, 'first.last', 'password')
26+
token = Auth.get_token(false, @abs_url, user, pass)
2227
expect(token).to eq @token
2328
end
2429

2530
it 'raises a token error if something goes wrong' do
26-
stub_request(:post, 'https://first.last:[email protected]/api/v2/token')
31+
stub_request(:post, 'https://abs.example.com/api/v2/token')
32+
.with(headers: get_headers(username: user, password: pass, content_length: 0))
2733
.to_return(status: 500, body: '{"ok":false}', headers: {})
2834

29-
expect { Auth.get_token(false, @abs_url, 'first.last', 'password') }.to raise_error(TokenError)
35+
expect { Auth.get_token(false, @abs_url, user, pass) }.to raise_error(TokenError)
3036
end
3137
end
3238

@@ -37,22 +43,24 @@
3743
end
3844

3945
it 'deletes the specified token' do
40-
stub_request(:delete, 'https://first.last:[email protected]/api/v2/token/utpg2i2xswor6h8ttjhu3d47z53yy47y')
46+
stub_request(:delete, 'https://abs.example.com/api/v2/token/utpg2i2xswor6h8ttjhu3d47z53yy47y')
47+
.with(headers: get_headers(username: user, password: pass))
4148
.to_return(status: 200, body: @delete_token_response, headers: {})
4249

43-
expect(Auth.delete_token(false, @abs_url, 'first.last', 'password',
44-
@token)).to eq JSON.parse(@delete_token_response)
50+
expect(Auth.delete_token(false, @abs_url, user, pass,
51+
@token)).to eq JSON.parse(@delete_token_response)
4552
end
4653

4754
it 'raises a token error if something goes wrong' do
48-
stub_request(:delete, 'https://first.last:[email protected]/api/v2/token/utpg2i2xswor6h8ttjhu3d47z53yy47y')
55+
stub_request(:delete, 'https://abs.example.com/api/v2/token/utpg2i2xswor6h8ttjhu3d47z53yy47y')
56+
.with(headers: get_headers(username: user, password: pass))
4957
.to_return(status: 500, body: '{"ok":false}', headers: {})
5058

51-
expect { Auth.delete_token(false, @abs_url, 'first.last', 'password', @token) }.to raise_error(TokenError)
59+
expect { Auth.delete_token(false, @abs_url, user, pass, @token) }.to raise_error(TokenError)
5260
end
5361

5462
it 'raises a token error if no token provided' do
55-
expect { Auth.delete_token(false, @abs_url, 'first.last', 'password', nil) }.to raise_error(TokenError)
63+
expect { Auth.delete_token(false, @abs_url, user, pass, nil) }.to raise_error(TokenError)
5664
end
5765
end
5866

@@ -64,15 +72,15 @@
6472

6573
it 'checks the status of a token' do
6674
stub_request(:get, "#{@abs_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y")
67-
.with(headers: { 'Accept' => '*/*', 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3' })
75+
.with(headers: get_headers)
6876
.to_return(status: 200, body: @token_status_response, headers: {})
6977

7078
expect(Auth.token_status(false, @abs_url, @token)).to eq JSON.parse(@token_status_response)
7179
end
7280

7381
it 'raises a token error if something goes wrong' do
7482
stub_request(:get, "#{@abs_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y")
75-
.with(headers: { 'Accept' => '*/*', 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3' })
83+
.with(headers: get_headers)
7684
.to_return(status: 500, body: '{"ok":false}', headers: {})
7785

7886
expect { Auth.token_status(false, @abs_url, @token) }.to raise_error(TokenError)

spec/vmfloaty/abs_spec.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,11 @@
152152
[
153153
{ "state":"allocated", "last_processed":"2020-01-17 22:29:13 +0000", "allocated_resources":[{"hostname":"craggy-chord.delivery.puppetlabs.net", "type":"centos-7-x86_64", "engine":"vmpooler"}, {"hostname":"visible-revival.delivery.puppetlabs.net", "type":"centos-7-x86_64", "engine":"vmpooler"}], "audit_log":{"2020-01-17 22:28:45 +0000":"Allocated craggy-chord.delivery.puppetlabs.net, visible-revival.delivery.puppetlabs.net for job 1579300120799"}, "request":{"resources":{"centos-7-x86_64":2}, "job":{"id":"1579300120799", "tags":{"user":"test-user"}, "user":"test-user", "time-received":1579300120}, "priority":3}}
154154
]'
155-
@return_request = { '{"job_id":"1579300120799","hosts":{"hostname":"craggy-chord.delivery.puppetlabs.net","type":"centos-7-x86_64","engine":"vmpooler"},{"hostname":"visible-revival.delivery.puppetlabs.net","type":"centos-7-x86_64","engine":"vmpooler"}}' => true }
155+
@return_request = {
156+
"job_id" => "1579300120799",
157+
"hosts" => [{"hostname"=>"craggy-chord.delivery.puppetlabs.net","type"=>"centos-7-x86_64","engine"=>"vmpooler"},
158+
{"hostname"=>"visible-revival.delivery.puppetlabs.net","type"=>"centos-7-x86_64","engine"=>"vmpooler"}]
159+
}
156160
# rubocop:enable Layout/LineLength
157161
@token = 'utpg2i2xswor6h8ttjhu3d47z53yy47y'
158162
@test_user = 'test-user'
@@ -164,7 +168,7 @@
164168
stub_request(:get, 'https://abs.example.com/api/v2/status/queue')
165169
.to_return(status: 200, body: @active_requests_response, headers: {})
166170
stub_request(:post, 'https://abs.example.com/api/v2/return')
167-
.with(body: @return_request)
171+
.with(headers: get_headers(content_type: 'application/x-www-form-urlencoded', token: @token), body: @return_request.to_json)
168172
.to_return(status: 200, body: 'OK', headers: {})
169173

170174
ret = ABS.delete(false, @abs_url, @hosts, @token, @test_user)

spec/vmfloaty/auth_spec.rb

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
require 'spec_helper'
44
require_relative '../../lib/vmfloaty/auth'
55

6+
user = 'first.last'
7+
pass = 'password'
8+
69
describe Pooler do
710
before :each do
811
@vmpooler_url = 'https://vmpooler.example.com'
@@ -15,18 +18,20 @@
1518
end
1619

1720
it 'returns a token from vmpooler' do
18-
stub_request(:post, 'https://first.last:[email protected]/token')
21+
stub_request(:post, 'https://vmpooler.example.com/token')
22+
.with(headers: get_headers(username: user, password: pass, content_length: 0))
1923
.to_return(status: 200, body: @get_token_response, headers: {})
2024

21-
token = Auth.get_token(false, @vmpooler_url, 'first.last', 'password')
25+
token = Auth.get_token(false, @vmpooler_url, user, pass)
2226
expect(token).to eq @token
2327
end
2428

2529
it 'raises a token error if something goes wrong' do
26-
stub_request(:post, 'https://first.last:[email protected]/token')
30+
stub_request(:post, 'https://vmpooler.example.com/token')
31+
.with(headers: get_headers(username: user, password: pass, content_length: 0))
2732
.to_return(status: 500, body: '{"ok":false}', headers: {})
2833

29-
expect { Auth.get_token(false, @vmpooler_url, 'first.last', 'password') }.to raise_error(TokenError)
34+
expect { Auth.get_token(false, @vmpooler_url, user, pass) }.to raise_error(TokenError)
3035
end
3136
end
3237

@@ -37,15 +42,17 @@
3742
end
3843

3944
it 'deletes the specified token' do
40-
stub_request(:delete, 'https://first.last:[email protected]/token/utpg2i2xswor6h8ttjhu3d47z53yy47y')
45+
stub_request(:delete, 'https://vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y')
46+
.with(headers: get_headers(username: user, password: pass))
4147
.to_return(status: 200, body: @delete_token_response, headers: {})
4248

43-
expect(Auth.delete_token(false, @vmpooler_url, 'first.last', 'password',
49+
expect(Auth.delete_token(false, @vmpooler_url, user, pass,
4450
@token)).to eq JSON.parse(@delete_token_response)
4551
end
4652

4753
it 'raises a token error if something goes wrong' do
48-
stub_request(:delete, 'https://first.last:[email protected]/token/utpg2i2xswor6h8ttjhu3d47z53yy47y')
54+
stub_request(:delete, 'https://vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y')
55+
.with(headers: get_headers(username: user, password: pass))
4956
.to_return(status: 500, body: '{"ok":false}', headers: {})
5057

5158
expect { Auth.delete_token(false, @vmpooler_url, 'first.last', 'password', @token) }.to raise_error(TokenError)
@@ -64,13 +71,15 @@
6471

6572
it 'checks the status of a token' do
6673
stub_request(:get, "#{@vmpooler_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y")
74+
.with(headers: get_headers)
6775
.to_return(status: 200, body: @token_status_response, headers: {})
6876

6977
expect(Auth.token_status(false, @vmpooler_url, @token)).to eq JSON.parse(@token_status_response)
7078
end
7179

7280
it 'raises a token error if something goes wrong' do
7381
stub_request(:get, "#{@vmpooler_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y")
82+
.with(headers: get_headers)
7483
.to_return(status: 500, body: '{"ok":false}', headers: {})
7584

7685
expect { Auth.token_status(false, @vmpooler_url, @token) }.to raise_error(TokenError)

spec/vmfloaty/nonstandard_pooler_spec.rb

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@
88
describe NonstandardPooler do
99
before :each do
1010
@nspooler_url = 'https://nspooler.example.com'
11-
@auth_token_headers = {
12-
'X-Auth-Token' => 'token-value'
13-
}
11+
@auth_token_headers = get_headers(token: 'token-value')
1412
end
1513

1614
describe '#list' do
@@ -121,7 +119,7 @@
121119

122120
it 'raises an AuthError if the token is invalid' do
123121
stub_request(:post, "#{@nspooler_url}/host/solaris-11-sparc")
124-
.with(headers: @auth_token_headers)
122+
.with(headers: get_headers(token: 'token-value'))
125123
.to_return(status: 401, body: '{"ok":false,"reason": "token: token-value does not exist"}', headers: {})
126124

127125
vm_hash = { 'solaris-11-sparc' => 1 }
@@ -174,7 +172,7 @@
174172
end
175173

176174
it 'modifies the reason of a vm' do
177-
modify_request_body = { '{"reserved_for_reason":"testing"}' => true }
175+
modify_request_body = { '{"reserved_for_reason":"testing"}' => nil }
178176
stub_request(:put, "#{@nspooler_url}/host/myfakehost")
179177
.with(body: modify_request_body,
180178
headers: @auth_token_headers)

spec/vmfloaty/pooler_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@
119119
it 'modifies the TTL of a vm' do
120120
modify_hash = { lifetime: 12 }
121121
stub_request(:put, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6")
122-
.with(body: { '{"lifetime":12}' => true },
123-
headers: { 'Content-Type' => 'application/x-www-form-urlencoded', 'X-Auth-Token' => 'mytokenfile' })
122+
.with(body: { '{"lifetime":12}' => nil },
123+
headers: get_headers(content_type: 'application/x-www-form-urlencoded', token: 'mytokenfile'))
124124
.to_return(status: 200, body: @modify_response_body_success, headers: {})
125125

126126
modify_req = Pooler.modify(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', modify_hash)

vmfloaty.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@ Gem::Specification.new do |s|
2626

2727
s.add_dependency 'colorize', '~> 0.8.1'
2828
s.add_dependency 'commander', '>= 4.4.3', '< 4.6.0'
29-
s.add_dependency 'faraday', '~> 0.17.0'
29+
s.add_dependency 'faraday', '~> 1.5', '>= 1.5.1'
3030
end

0 commit comments

Comments
 (0)