puppet-blacksmith 3.0.1 → 3.0.2
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.
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YzQxNDUxMzM4OGFmNmUyZTg5YjIzNjA1MDM5ZmJkZTYyYTgzNjIwMA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OWNjODg5OGY5MTI1YTI1YjY1NzRjNDZiZDJkNjZiNGI2Y2Q5NTNjMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjBlMjZkYmVkYjdhZGVkYTFmNzIwODY2OTdmZmQwZTc1NzIyY2M1NWMyMjE1
|
10
|
+
ZjFiMTU2N2E5NmQyM2M1ZDFmNjdkM2Y1YTY5MDM4YjMxNzE2YmI2NzE3M2Zi
|
11
|
+
NWEwN2YyYjJiYjc4MDE1NWUwOGNiY2ZjZDdiYTY4ZjNhMjQ3MTM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDVjZDU2NTIyODM0MjMwZDFmNzI5ODg4ZWYxNGQ2YTgzMjU0ZTc1MDlmYTg0
|
14
|
+
MDRlY2E4ZTUzZjEyZjMwZGU2MTk3Y2UwYTJiYzI5NTE4Nzc0Mzg2Yzc4Y2Y3
|
15
|
+
NTNlMDlhOGI5NjFiNzJjMWFiYTU3Zjg2NzY3ZTYwYmRlOTNmMDA=
|
@@ -37,20 +37,28 @@ module Blacksmith
|
|
37
37
|
raise Errno::ENOENT, "File does not exist: #{package}" unless File.exists?(package)
|
38
38
|
|
39
39
|
# login to the puppet forge
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
begin
|
41
|
+
response = RestClient.post("#{url}/oauth/token", {
|
42
|
+
'client_id' => client_id,
|
43
|
+
'client_secret' => client_secret,
|
44
|
+
'username' => username,
|
45
|
+
'password' => password,
|
46
|
+
'grant_type' => 'password'
|
47
|
+
}, HEADERS)
|
48
|
+
rescue RestClient::Exception => e
|
49
|
+
raise Blacksmith::Error, "Error login to the forge #{url} as #{username} [#{e.message}]: #{e.response}"
|
50
|
+
end
|
47
51
|
login_data = JSON.parse(response)
|
48
52
|
access_token = login_data['access_token']
|
49
53
|
|
50
54
|
# upload the file
|
51
|
-
|
52
|
-
|
53
|
-
|
55
|
+
begin
|
56
|
+
response = RestClient.post("#{url}/v2/releases",
|
57
|
+
{:file => File.new(package, 'rb')},
|
58
|
+
HEADERS.merge({'Authorization' => "Bearer #{access_token}"}))
|
59
|
+
rescue RestClient::Exception => e
|
60
|
+
raise Blacksmith::Error, "Error uploading #{package} to the forge #{url} [#{e.message}]: #{e.response}"
|
61
|
+
end
|
54
62
|
end
|
55
63
|
|
56
64
|
private
|
@@ -62,7 +70,7 @@ module Blacksmith
|
|
62
70
|
Could not find Puppet Forge credentials file '#{credentials_file}'
|
63
71
|
Please create it
|
64
72
|
---
|
65
|
-
url: https://
|
73
|
+
url: https://forgeapi.puppetlabs.com
|
66
74
|
username: myuser
|
67
75
|
password: mypassword
|
68
76
|
eos
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require_relative 'forge_shared'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
# Run tests against the real Forge staging API
|
6
|
+
describe 'Blacksmith::Forge', :live => true do
|
7
|
+
include_context 'forge'
|
8
|
+
let(:username) { nil }
|
9
|
+
|
10
|
+
describe 'push' do
|
11
|
+
before { create_tarball }
|
12
|
+
include_examples 'forge_push'
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
RSpec.shared_examples 'forge_push' do |collection_class|
|
5
|
+
it "should push the module" do
|
6
|
+
subject.push!(module_name, package)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
RSpec.shared_context "forge" do
|
11
|
+
subject { Blacksmith::Forge.new(username, password, forge) }
|
12
|
+
let(:username) { 'johndoe' }
|
13
|
+
let(:password) { 'secret' }
|
14
|
+
let(:forge) { "https://forgestagingapi.puppetlabs.com" }
|
15
|
+
let(:module_name) { "test" }
|
16
|
+
let(:version) { "1.0.0" }
|
17
|
+
let(:module_name) { "maestrodev-test" }
|
18
|
+
let(:spec_data) { File.join(File.dirname(__FILE__), '/../data') }
|
19
|
+
let(:spec_module) { File.join(spec_data, module_name) }
|
20
|
+
let(:target) { File.expand_path(File.join(__FILE__, "../../..", "pkg", module_name)) }
|
21
|
+
let(:package) { "#{target}.tar.gz" }
|
22
|
+
|
23
|
+
let(:headers) { { 'User-Agent' => %r{^Blacksmith/#{Blacksmith::VERSION} Ruby/.* \(.*\)$} } }
|
24
|
+
|
25
|
+
def create_tarball
|
26
|
+
FileUtils.mkdir_p(target)
|
27
|
+
|
28
|
+
# update version
|
29
|
+
f = File.join(spec_module, "metadata.json")
|
30
|
+
metadata = JSON.parse File.read(f)
|
31
|
+
metadata['version'] = "1.0.#{Random.rand(9999999)}"
|
32
|
+
File.open(File.join(target, "metadata.json"),"w") do |file|
|
33
|
+
file.write(JSON.pretty_generate(metadata))
|
34
|
+
end
|
35
|
+
`cd #{target}/..; tar -czf #{module_name}.tar.gz #{module_name}`
|
36
|
+
end
|
37
|
+
end
|
@@ -1,20 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require_relative 'forge_shared'
|
2
3
|
require 'fileutils'
|
3
4
|
require 'webmock/rspec'
|
4
5
|
|
5
6
|
describe 'Blacksmith::Forge' do
|
6
|
-
|
7
|
-
subject { Blacksmith::Forge.new(username, password, forge) }
|
8
|
-
let(:username) { 'johndoe' }
|
9
|
-
let(:password) { 'secret' }
|
10
|
-
let(:forge) { "https://forgestagingapi.puppetlabs.com" }
|
11
|
-
let(:module_name) { "test" }
|
12
|
-
let(:version) { "1.0.0" }
|
13
|
-
let(:module_name) { "maestrodev-test" }
|
14
|
-
let(:spec_data) { File.join(File.dirname(__FILE__), '/../data') }
|
15
|
-
let(:spec_module) { File.join(spec_data, module_name) }
|
16
|
-
let(:target) { File.expand_path(File.join(__FILE__, "../../..", "pkg", module_name)) }
|
17
|
-
let(:package) { "#{target}.tar.gz" }
|
7
|
+
include_context 'forge'
|
18
8
|
|
19
9
|
describe 'missing credentials file' do
|
20
10
|
before do
|
@@ -27,39 +17,27 @@ describe 'Blacksmith::Forge' do
|
|
27
17
|
end
|
28
18
|
|
29
19
|
it "should raise an error" do
|
30
|
-
expect { foo = Blacksmith::Forge.new(nil, password, forge) }.to raise_error(/Could not find Puppet Forge credentials file '\/home\/mr\_puppet\/.puppetforge.yml'\s*Please create it\s*---\s*url: https:\/\/
|
20
|
+
expect { foo = Blacksmith::Forge.new(nil, password, forge) }.to raise_error(/Could not find Puppet Forge credentials file '\/home\/mr\_puppet\/.puppetforge.yml'\s*Please create it\s*---\s*url: https:\/\/forgeapi.puppetlabs.com\s*username: myuser\s*password: mypassword/)
|
31
21
|
end
|
32
22
|
end
|
33
23
|
|
34
24
|
end
|
35
25
|
|
36
|
-
describe 'push'
|
37
|
-
let(:
|
26
|
+
describe 'push' do
|
27
|
+
let(:login_body) {{
|
28
|
+
"client_id"=>"b93eb708fd942cfc7b4ed71db6ce219b814954619dbe537ddfd208584e8cff8d",
|
29
|
+
"client_secret"=>"216648059ad4afec3e4d77bd9e67817c095b2dcf94cdec18ac3d00584f863180",
|
30
|
+
"grant_type"=>"password",
|
31
|
+
"password"=>"secret",
|
32
|
+
"username"=>"johndoe"
|
33
|
+
}}
|
38
34
|
|
39
|
-
before
|
40
|
-
FileUtils.mkdir_p(target)
|
41
|
-
|
42
|
-
# update version
|
43
|
-
f = File.join(spec_module, "metadata.json")
|
44
|
-
metadata = JSON.parse File.read(f)
|
45
|
-
metadata['version'] = "1.0.#{Random.rand(9999999)}"
|
46
|
-
File.open(File.join(target, "metadata.json"),"w") do |file|
|
47
|
-
file.write(JSON.pretty_generate(metadata))
|
48
|
-
end
|
49
|
-
`cd #{target}/..; tar -czf #{module_name}.tar.gz #{module_name}`
|
50
|
-
end
|
35
|
+
before { create_tarball }
|
51
36
|
|
52
37
|
context "when using username and password" do
|
53
38
|
before do
|
54
|
-
|
55
39
|
stub_request(:post, "#{forge}/oauth/token").with(
|
56
|
-
:body =>
|
57
|
-
"client_id"=>"b93eb708fd942cfc7b4ed71db6ce219b814954619dbe537ddfd208584e8cff8d",
|
58
|
-
"client_secret"=>"216648059ad4afec3e4d77bd9e67817c095b2dcf94cdec18ac3d00584f863180",
|
59
|
-
"grant_type"=>"password",
|
60
|
-
"password"=>"secret",
|
61
|
-
"username"=>"johndoe"
|
62
|
-
},
|
40
|
+
:body => login_body,
|
63
41
|
:headers => headers
|
64
42
|
).to_return(
|
65
43
|
:status => 200,
|
@@ -71,14 +49,27 @@ describe 'Blacksmith::Forge' do
|
|
71
49
|
:headers => headers.merge({'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'Authorization'=>'Bearer e52f78b62e97cb8d8db6659a73aa522cca0f5c74d4714e0ed0bdd10000000000', 'Content-Type'=>%r{multipart/form-data;}})
|
72
50
|
).to_return(:status => 200, :body => File.read(File.join(spec_data, "response.json")), :headers => {})
|
73
51
|
|
74
|
-
subject.push!(module_name, package)
|
75
52
|
end
|
76
53
|
|
77
|
-
|
54
|
+
include_examples 'forge_push'
|
55
|
+
end
|
78
56
|
|
57
|
+
context "when using bad credentials" do
|
58
|
+
before do
|
59
|
+
stub_request(:post, "#{forge}/oauth/token").with(
|
60
|
+
:body => login_body,
|
61
|
+
:headers => headers
|
62
|
+
).to_return(
|
63
|
+
:status => 400,
|
64
|
+
:body => {"error"=>"invalid_grant","error_description"=>"Username/password do not match"}.to_json,
|
65
|
+
:headers => {})
|
79
66
|
end
|
80
|
-
end
|
81
67
|
|
68
|
+
it "should push the module" do
|
69
|
+
expect { subject.push!(module_name, package) }.to raise_error(Blacksmith::Error, "Error login to the forge #{forge} as #{username} [400 Bad Request]: {\"error\":\"invalid_grant\",\"error_description\":\"Username/password do not match\"}")
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
82
73
|
end
|
83
74
|
end
|
84
75
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-blacksmith
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MaestroDev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -142,6 +142,8 @@ files:
|
|
142
142
|
- spec/data/maestrodev-test/metadata.json
|
143
143
|
- spec/data/metadata.json
|
144
144
|
- spec/data/response.json
|
145
|
+
- spec/puppet_blacksmith/forge_live_spec.rb
|
146
|
+
- spec/puppet_blacksmith/forge_shared.rb
|
145
147
|
- spec/puppet_blacksmith/forge_spec.rb
|
146
148
|
- spec/puppet_blacksmith/git_spec.rb
|
147
149
|
- spec/puppet_blacksmith/modulefile_spec.rb
|
@@ -176,5 +178,7 @@ test_files:
|
|
176
178
|
- spec/data/Modulefile
|
177
179
|
- spec/data/maestrodev-test/metadata.json
|
178
180
|
- spec/puppet_blacksmith/forge_spec.rb
|
181
|
+
- spec/puppet_blacksmith/forge_shared.rb
|
182
|
+
- spec/puppet_blacksmith/forge_live_spec.rb
|
179
183
|
- spec/puppet_blacksmith/modulefile_spec.rb
|
180
184
|
- spec/puppet_blacksmith/git_spec.rb
|