rundeck 0.0.3 → 0.0.4
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 +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +2 -0
- data/lib/rundeck/api.rb +1 -1
- data/lib/rundeck/client.rb +2 -1
- data/lib/rundeck/client/execution.rb +17 -22
- data/lib/rundeck/client/job.rb +3 -2
- data/lib/rundeck/client/project.rb +84 -0
- data/lib/rundeck/objectified_hash.rb +7 -1
- data/lib/rundeck/version.rb +1 -1
- data/rundeck.gemspec +1 -0
- data/spec/cassettes/12/create_project_invalid.yml +43 -0
- data/spec/cassettes/12/create_project_json.yml +55 -0
- data/spec/cassettes/12/create_project_xml.yml +58 -0
- data/spec/cassettes/12/delete_project_invalid.yml +41 -0
- data/spec/cassettes/12/delete_project_valid.yml +32 -0
- data/spec/cassettes/12/project_invalid.yml +41 -0
- data/spec/cassettes/12/project_valid.yml +55 -0
- data/spec/cassettes/12/projects.yml +44 -0
- data/spec/rundeck/client/execution_spec.rb +128 -89
- data/spec/rundeck/client/job_spec.rb +14 -8
- data/spec/rundeck/client/project_spec.rb +117 -0
- data/spec/rundeck/objectified_hash_spec.rb +16 -0
- data/spec/rundeck/request_spec.rb +1 -1
- data/spec/rundeck_spec.rb +1 -1
- data/spec/support/helpers.rb +36 -20
- metadata +36 -2
@@ -0,0 +1,117 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Rundeck::Client do
|
4
|
+
describe '.projects', vcr: { cassette_name: 'projects' } do
|
5
|
+
before do
|
6
|
+
@projects = Rundeck.projects
|
7
|
+
end
|
8
|
+
subject { @projects }
|
9
|
+
|
10
|
+
its(:project) { is_expected.to be_a Rundeck::ObjectifiedHash }
|
11
|
+
|
12
|
+
describe '#project' do
|
13
|
+
subject { @projects.project }
|
14
|
+
|
15
|
+
its(:name) { is_expected.to eq('anvils') }
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'expects a get to have been made' do
|
19
|
+
expect(a_get('/projects')).to have_been_made
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '.create_project' do
|
24
|
+
context 'when project does not yet exist' do
|
25
|
+
before do
|
26
|
+
@project = Rundeck.create_project(content, format)
|
27
|
+
end
|
28
|
+
subject { @project }
|
29
|
+
|
30
|
+
context 'create with json format',
|
31
|
+
vcr: { cassette_name: 'create_project_json' } do
|
32
|
+
let(:content) { project_json }
|
33
|
+
let(:format) { 'json' }
|
34
|
+
|
35
|
+
it { is_expected.to be_a Rundeck::ObjectifiedHash }
|
36
|
+
its(:name) { is_expected.to eq('json_project') }
|
37
|
+
|
38
|
+
it 'expects a post to have been made' do
|
39
|
+
expect(a_post('/projects')).to have_been_made
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'create with xml format',
|
44
|
+
vcr: { cassette_name: 'create_project_xml' } do
|
45
|
+
let(:content) { project_xml }
|
46
|
+
let(:format) { 'xml' }
|
47
|
+
|
48
|
+
it { is_expected.to be_a Rundeck::ObjectifiedHash }
|
49
|
+
its(:name) { is_expected.to eq('xml_project') }
|
50
|
+
|
51
|
+
it 'expects a post to have been made' do
|
52
|
+
expect(a_post('/projects')).to have_been_made
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'when project already exists',
|
58
|
+
vcr: { cassette_name: 'create_project_invalid' } do
|
59
|
+
specify do
|
60
|
+
expect do
|
61
|
+
Rundeck.create_project(project_anvils, 'json')
|
62
|
+
end.to raise_error(Rundeck::Error::Conflict,
|
63
|
+
/project already exists/)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '.project' do
|
69
|
+
context 'when the project exists',
|
70
|
+
vcr: { cassette_name: 'project_valid' } do
|
71
|
+
before do
|
72
|
+
@project = Rundeck.project('anvils')
|
73
|
+
end
|
74
|
+
subject { @project }
|
75
|
+
|
76
|
+
it { is_expected.to be_a Rundeck::ObjectifiedHash }
|
77
|
+
its(:name) { is_expected.to eq('anvils') }
|
78
|
+
end
|
79
|
+
|
80
|
+
context 'when the project does not exist',
|
81
|
+
vcr: { cassette_name: 'project_invalid' } do
|
82
|
+
specify do
|
83
|
+
expect do
|
84
|
+
Rundeck.project('nonexistent')
|
85
|
+
end.to raise_error(Rundeck::Error::NotFound,
|
86
|
+
/project does not exist/)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe '.delete_project' do
|
92
|
+
context 'when a project exists',
|
93
|
+
vcr: { cassette_name: 'delete_project_valid' } do
|
94
|
+
before do
|
95
|
+
@project = Rundeck.delete_project(project)
|
96
|
+
end
|
97
|
+
let(:project) { 'anvils' }
|
98
|
+
subject { @project }
|
99
|
+
|
100
|
+
it { is_expected.to be_nil }
|
101
|
+
|
102
|
+
it 'expects a delete to have been made' do
|
103
|
+
expect(a_delete('/project/anvils')).to have_been_made
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context 'when a project does not exist',
|
108
|
+
vcr: { cassette_name: 'delete_project_invalid' } do
|
109
|
+
specify do
|
110
|
+
expect do
|
111
|
+
Rundeck.delete_project('project1')
|
112
|
+
end.to raise_error(Rundeck::Error::NotFound,
|
113
|
+
/Project does not exist/)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -43,4 +43,20 @@ describe Rundeck::ObjectifiedHash do
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
context 'with arrays of hashes' do
|
48
|
+
before do
|
49
|
+
@hash = { a: 1, b: [{ c: 2, d: 3 }, { e: 4, f: 5 }] }
|
50
|
+
@obj_hash = Rundeck::ObjectifiedHash.new(@hash)
|
51
|
+
end
|
52
|
+
subject { @obj_hash }
|
53
|
+
|
54
|
+
describe 'b' do
|
55
|
+
subject { @obj_hash.b }
|
56
|
+
|
57
|
+
it { is_expected.to be_an Array }
|
58
|
+
its('first') { is_expected.to be_a Rundeck::ObjectifiedHash }
|
59
|
+
its('first.c') { is_expected.to eq(2) }
|
60
|
+
end
|
61
|
+
end
|
46
62
|
end
|
@@ -28,7 +28,7 @@ describe Rundeck::Request do
|
|
28
28
|
before do
|
29
29
|
@rundeck_request = Rundeck::Request.new
|
30
30
|
@rundeck_request
|
31
|
-
|
31
|
+
.set_request_defaults('http://api.example.org', 'secret')
|
32
32
|
end
|
33
33
|
subject { @rundeck_request }
|
34
34
|
|
data/spec/rundeck_spec.rb
CHANGED
data/spec/support/helpers.rb
CHANGED
@@ -7,57 +7,57 @@ module Helpers
|
|
7
7
|
# GET
|
8
8
|
def stub_get(path, fixture, accept = 'xml')
|
9
9
|
stub_request(:get, "#{Rundeck.endpoint}#{path}")
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
.with(headers: { 'Accept' => "application/#{accept}",
|
11
|
+
'X-Rundeck-Auth-Token' => Rundeck.api_token })
|
12
|
+
.to_return(body: load_fixture(fixture))
|
13
13
|
end
|
14
14
|
|
15
15
|
def a_get(path, accept = 'xml')
|
16
16
|
a_request(:get, "#{Rundeck.endpoint}#{path}")
|
17
|
-
|
18
|
-
|
17
|
+
.with(headers: { 'Accept' => "application/#{accept}",
|
18
|
+
'X-Rundeck-Auth-Token' => Rundeck.api_token })
|
19
19
|
end
|
20
20
|
|
21
21
|
# POST
|
22
22
|
def stub_post(path, fixture, status_code = 200, accept = 'xml')
|
23
23
|
stub_request(:post, "#{Rundeck.endpoint}#{path}")
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
.with(headers: { 'Accept' => "application/#{accept}",
|
25
|
+
'X-Rundeck-Auth-Token' => Rundeck.api_token })
|
26
|
+
.to_return(body: load_fixture(fixture), status: status_code)
|
27
27
|
end
|
28
28
|
|
29
29
|
def a_post(path, accept = 'xml')
|
30
30
|
a_request(:post, "#{Rundeck.endpoint}#{path}")
|
31
|
-
|
32
|
-
|
31
|
+
.with(headers: { 'Accept' => "application/#{accept}",
|
32
|
+
'X-Rundeck-Auth-Token' => Rundeck.api_token })
|
33
33
|
end
|
34
34
|
|
35
35
|
# PUT
|
36
36
|
def stub_put(path, fixture, accept = 'xml')
|
37
37
|
stub_request(:put, "#{Rundeck.endpoint}#{path}")
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
.with(headers: { 'Accept' => "application/#{accept}",
|
39
|
+
'X-Rundeck-Auth-Token' => Rundeck.api_token })
|
40
|
+
.to_return(body: load_fixture(fixture))
|
41
41
|
end
|
42
42
|
|
43
43
|
def a_put(path, accept = 'xml')
|
44
44
|
a_request(:put, "#{Rundeck.endpoint}#{path}")
|
45
|
-
|
46
|
-
|
45
|
+
.with(headers: { 'Accept' => "application/#{accept}",
|
46
|
+
'X-Rundeck-Auth-Token' => Rundeck.api_token })
|
47
47
|
end
|
48
48
|
|
49
49
|
# DELETE
|
50
50
|
def stub_delete(path, fixture, accept = 'xml')
|
51
51
|
stub_request(:delete, "#{Rundeck.endpoint}#{path}")
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
.with(headers: { 'Accept' => "application/#{accept}",
|
53
|
+
'X-Rundeck-Auth-Token' => Rundeck.api_token })
|
54
|
+
.to_return(body: load_fixture(fixture))
|
55
55
|
end
|
56
56
|
|
57
57
|
def a_delete(path, accept = 'xml')
|
58
58
|
a_request(:delete, "#{Rundeck.endpoint}#{path}")
|
59
|
-
|
60
|
-
|
59
|
+
.with(headers: { 'Accept' => "application/#{accept}",
|
60
|
+
'X-Rundeck-Auth-Token' => Rundeck.api_token })
|
61
61
|
end
|
62
62
|
|
63
63
|
def job_yaml
|
@@ -96,6 +96,22 @@ module Helpers
|
|
96
96
|
EOS
|
97
97
|
end
|
98
98
|
|
99
|
+
def project_anvils
|
100
|
+
'{ "name": "anvils" }'
|
101
|
+
end
|
102
|
+
|
103
|
+
def project_json
|
104
|
+
'{ "name": "json_project" }'
|
105
|
+
end
|
106
|
+
|
107
|
+
def project_xml
|
108
|
+
<<-EOS
|
109
|
+
<project>
|
110
|
+
<name>xml_project</name>
|
111
|
+
</project>
|
112
|
+
EOS
|
113
|
+
end
|
114
|
+
|
99
115
|
def private_key
|
100
116
|
<<-EOS
|
101
117
|
-----BEGIN RSA PRIVATE KEY-----
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rundeck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Drew A. Blessing
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 1.0.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: webmock
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -190,6 +204,7 @@ files:
|
|
190
204
|
- .rubocop.yml
|
191
205
|
- .rubocop_todo.yml
|
192
206
|
- .travis.yml
|
207
|
+
- CHANGELOG.md
|
193
208
|
- Gemfile
|
194
209
|
- Guardfile
|
195
210
|
- LICENSE.txt
|
@@ -201,6 +216,7 @@ files:
|
|
201
216
|
- lib/rundeck/client/execution.rb
|
202
217
|
- lib/rundeck/client/job.rb
|
203
218
|
- lib/rundeck/client/key.rb
|
219
|
+
- lib/rundeck/client/project.rb
|
204
220
|
- lib/rundeck/configuration.rb
|
205
221
|
- lib/rundeck/error.rb
|
206
222
|
- lib/rundeck/objectified_hash.rb
|
@@ -213,6 +229,9 @@ files:
|
|
213
229
|
- spec/cassettes/12/bulk_delete_executions_invalid.yml
|
214
230
|
- spec/cassettes/12/bulk_delete_executions_valid.yml
|
215
231
|
- spec/cassettes/12/create_private_key.yml
|
232
|
+
- spec/cassettes/12/create_project_invalid.yml
|
233
|
+
- spec/cassettes/12/create_project_json.yml
|
234
|
+
- spec/cassettes/12/create_project_xml.yml
|
216
235
|
- spec/cassettes/12/create_public_key.yml
|
217
236
|
- spec/cassettes/12/delete_execution_invalid.yml
|
218
237
|
- spec/cassettes/12/delete_execution_valid.yml
|
@@ -223,6 +242,8 @@ files:
|
|
223
242
|
- spec/cassettes/12/delete_key_invalid.yml
|
224
243
|
- spec/cassettes/12/delete_key_private.yml
|
225
244
|
- spec/cassettes/12/delete_key_public.yml
|
245
|
+
- spec/cassettes/12/delete_project_invalid.yml
|
246
|
+
- spec/cassettes/12/delete_project_valid.yml
|
226
247
|
- spec/cassettes/12/execution_invalid.yml
|
227
248
|
- spec/cassettes/12/execution_query_invalid.yml
|
228
249
|
- spec/cassettes/12/execution_query_no_params_valid.yml
|
@@ -244,6 +265,9 @@ files:
|
|
244
265
|
- spec/cassettes/12/keys_direct.yml
|
245
266
|
- spec/cassettes/12/keys_multiple.yml
|
246
267
|
- spec/cassettes/12/keys_none.yml
|
268
|
+
- spec/cassettes/12/project_invalid.yml
|
269
|
+
- spec/cassettes/12/project_valid.yml
|
270
|
+
- spec/cassettes/12/projects.yml
|
247
271
|
- spec/cassettes/12/run_job_invalid.yml
|
248
272
|
- spec/cassettes/12/run_job_valid.yml
|
249
273
|
- spec/cassettes/12/running_jobs_multiple.yml
|
@@ -254,6 +278,7 @@ files:
|
|
254
278
|
- spec/rundeck/client/execution_spec.rb
|
255
279
|
- spec/rundeck/client/job_spec.rb
|
256
280
|
- spec/rundeck/client/key_spec.rb
|
281
|
+
- spec/rundeck/client/project_spec.rb
|
257
282
|
- spec/rundeck/client_spec.rb
|
258
283
|
- spec/rundeck/objectified_hash_spec.rb
|
259
284
|
- spec/rundeck/request_spec.rb
|
@@ -291,6 +316,9 @@ test_files:
|
|
291
316
|
- spec/cassettes/12/bulk_delete_executions_invalid.yml
|
292
317
|
- spec/cassettes/12/bulk_delete_executions_valid.yml
|
293
318
|
- spec/cassettes/12/create_private_key.yml
|
319
|
+
- spec/cassettes/12/create_project_invalid.yml
|
320
|
+
- spec/cassettes/12/create_project_json.yml
|
321
|
+
- spec/cassettes/12/create_project_xml.yml
|
294
322
|
- spec/cassettes/12/create_public_key.yml
|
295
323
|
- spec/cassettes/12/delete_execution_invalid.yml
|
296
324
|
- spec/cassettes/12/delete_execution_valid.yml
|
@@ -301,6 +329,8 @@ test_files:
|
|
301
329
|
- spec/cassettes/12/delete_key_invalid.yml
|
302
330
|
- spec/cassettes/12/delete_key_private.yml
|
303
331
|
- spec/cassettes/12/delete_key_public.yml
|
332
|
+
- spec/cassettes/12/delete_project_invalid.yml
|
333
|
+
- spec/cassettes/12/delete_project_valid.yml
|
304
334
|
- spec/cassettes/12/execution_invalid.yml
|
305
335
|
- spec/cassettes/12/execution_query_invalid.yml
|
306
336
|
- spec/cassettes/12/execution_query_no_params_valid.yml
|
@@ -322,6 +352,9 @@ test_files:
|
|
322
352
|
- spec/cassettes/12/keys_direct.yml
|
323
353
|
- spec/cassettes/12/keys_multiple.yml
|
324
354
|
- spec/cassettes/12/keys_none.yml
|
355
|
+
- spec/cassettes/12/project_invalid.yml
|
356
|
+
- spec/cassettes/12/project_valid.yml
|
357
|
+
- spec/cassettes/12/projects.yml
|
325
358
|
- spec/cassettes/12/run_job_invalid.yml
|
326
359
|
- spec/cassettes/12/run_job_valid.yml
|
327
360
|
- spec/cassettes/12/running_jobs_multiple.yml
|
@@ -332,6 +365,7 @@ test_files:
|
|
332
365
|
- spec/rundeck/client/execution_spec.rb
|
333
366
|
- spec/rundeck/client/job_spec.rb
|
334
367
|
- spec/rundeck/client/key_spec.rb
|
368
|
+
- spec/rundeck/client/project_spec.rb
|
335
369
|
- spec/rundeck/client_spec.rb
|
336
370
|
- spec/rundeck/objectified_hash_spec.rb
|
337
371
|
- spec/rundeck/request_spec.rb
|