rundeck 0.0.4 → 1.0.1

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.
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rundeck::Client do
4
+ describe '.tokens' do
5
+ before do
6
+ @tokens = Rundeck.tokens(user)
7
+ end
8
+ subject { @tokens }
9
+
10
+ context 'when user is nil' do
11
+ let(:user) { nil }
12
+
13
+ context 'when a single token is returned',
14
+ vcr: { cassette_name: 'tokens_single' } do
15
+ it { is_expected.to be_a Rundeck::ObjectifiedHash }
16
+ its(:token) { is_expected.to be_a Rundeck::ObjectifiedHash }
17
+ its(:allusers) { is_expected.to eq('true') }
18
+
19
+ it 'expects a get to have been made' do
20
+ expect(a_get('/tokens')).to have_been_made
21
+ end
22
+ end
23
+
24
+ context 'when multiple tokens are returned',
25
+ vcr: { cassette_name: 'tokens_multiple' } do
26
+ it { is_expected.to be_a Rundeck::ObjectifiedHash }
27
+ its(:token) { is_expected.to be_an Array }
28
+ its(:allusers) { is_expected.to eq('true') }
29
+ end
30
+ end
31
+
32
+ context 'when user is specified', vcr: { cassette_name: 'tokens_user' } do
33
+ let(:user) { 'admin' }
34
+
35
+ it { is_expected.to be_a Rundeck::ObjectifiedHash }
36
+ its(:user) { is_expected.to eq('admin') }
37
+
38
+ describe '#token' do
39
+ subject { @tokens.token }
40
+
41
+ it_behaves_like 'a token'
42
+ its(:user) { is_expected.to eq('admin') }
43
+ end
44
+ end
45
+ end
46
+
47
+ describe '.token' do
48
+ context 'when a token exists', vcr: { cassette_name: 'token' } do
49
+ before do
50
+ @token = Rundeck.token('cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd')
51
+ end
52
+ subject { @token }
53
+
54
+ it_behaves_like 'a token'
55
+
56
+ it 'expects a get to have been made' do
57
+ expect(a_get('/token/cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd')).to have_been_made
58
+ end
59
+ end
60
+
61
+ context 'when a token does not exist',
62
+ vcr: { cassette_name: 'token_invalid' } do
63
+ specify do
64
+ expect do
65
+ Rundeck.token('123456')
66
+ end.to raise_error(Rundeck::Error::NotFound,
67
+ /Token does not exist: 123456/)
68
+ end
69
+ end
70
+ end
71
+
72
+ describe '.create_token' do
73
+ context 'when the user exists', vcr: { cassette_name: 'create_token' } do
74
+ before do
75
+ @token = Rundeck.create_token('admin')
76
+ end
77
+ subject { @token }
78
+
79
+ it_behaves_like 'a token'
80
+
81
+ it 'expects a post to have been made' do
82
+ expect(a_post('/tokens/admin')).to have_been_made
83
+ end
84
+ end
85
+ end
86
+
87
+ describe '.delete_token' do
88
+ context 'when a token exists', vcr: { cassette_name: 'delete_token' } do
89
+ before do
90
+ @token = Rundeck.delete_token('cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd')
91
+ end
92
+ subject { @token }
93
+
94
+ it { is_expected.to be_nil }
95
+
96
+ it 'expects a delete to have been made' do
97
+ expect(
98
+ a_delete('/token/cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd')
99
+ ).to have_been_made
100
+ end
101
+ end
102
+
103
+ context 'when a token does not exist',
104
+ vcr: { cassette_name: 'delete_token_invalid' } do
105
+ specify do
106
+ expect do
107
+ Rundeck.delete_token('123456')
108
+ end.to raise_error(Rundeck::Error::NotFound,
109
+ /Token does not exist: 123456/)
110
+ end
111
+ end
112
+ end
113
+ end
@@ -32,7 +32,10 @@ describe Rundeck::Request do
32
32
  end
33
33
  subject { @rundeck_request }
34
34
 
35
- it { expect(Rundeck::Request.base_uri).to eq('http://api.example.org') }
35
+ it do
36
+ expect(Rundeck::Request.base_uri)
37
+ .to eq("http://api.example.org/api/#{Rundeck.api_version}")
38
+ end
36
39
  its(:api_token) { is_expected.to eq('secret') }
37
40
  end
38
41
  end
data/spec/rundeck_spec.rb CHANGED
@@ -45,10 +45,9 @@ describe Rundeck do
45
45
  Rundeck.configure do |config|
46
46
  config.send("#{key}=", key)
47
47
  end
48
- @key = key == :endpoint ? "#{key}/api/#{Rundeck.api_version}" : key
49
48
  end
50
49
 
51
- it { is_expected.to eq(@key) }
50
+ it { is_expected.to eq(key) }
52
51
  end
53
52
  end
54
53
  end
data/spec/spec_helper.rb CHANGED
@@ -8,6 +8,7 @@ require 'codeclimate-test-reporter'
8
8
  CodeClimate::TestReporter.start
9
9
 
10
10
  require 'support/helpers'
11
+ require 'support/shared_examples'
11
12
 
12
13
  require File.expand_path('../../lib/rundeck', __FILE__)
13
14
 
@@ -19,7 +20,7 @@ RSpec.configure do |config|
19
20
  config.before(:each) do
20
21
  # Configuration for Anvils Demo Vagrant Box. API token might change.
21
22
  Rundeck.endpoint = 'http://192.168.50.2:4440'
22
- Rundeck.api_token = 'cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd'
23
+ Rundeck.api_token = 'cbsQgUIZBOyCgoipJAwKd1YgfcwPJ0FY'
23
24
  WebMock.reset!
24
25
  end
25
26
  end
@@ -4,58 +4,38 @@ module Helpers
4
4
  File.new(File.dirname(__FILE__) + "/../fixtures/#{name}.xml")
5
5
  end
6
6
 
7
- # GET
8
- def stub_get(path, fixture, accept = 'xml')
9
- stub_request(:get, "#{Rundeck.endpoint}#{path}")
10
- .with(headers: { 'Accept' => "application/#{accept}",
11
- 'X-Rundeck-Auth-Token' => Rundeck.api_token })
12
- .to_return(body: load_fixture(fixture))
7
+ def endpoint
8
+ "#{Rundeck.endpoint}/api/#{Rundeck.api_version}"
13
9
  end
14
10
 
11
+ # GET
15
12
  def a_get(path, accept = 'xml')
16
- a_request(:get, "#{Rundeck.endpoint}#{path}")
13
+ a_request(:get, "#{endpoint}#{path}")
17
14
  .with(headers: { 'Accept' => "application/#{accept}",
18
15
  'X-Rundeck-Auth-Token' => Rundeck.api_token })
19
16
  end
20
17
 
21
18
  # POST
22
- def stub_post(path, fixture, status_code = 200, accept = 'xml')
23
- stub_request(:post, "#{Rundeck.endpoint}#{path}")
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
- end
28
-
29
19
  def a_post(path, accept = 'xml')
30
- a_request(:post, "#{Rundeck.endpoint}#{path}")
20
+ a_request(:post, "#{endpoint}#{path}")
31
21
  .with(headers: { 'Accept' => "application/#{accept}",
32
22
  'X-Rundeck-Auth-Token' => Rundeck.api_token })
33
23
  end
34
24
 
35
- # PUT
36
- def stub_put(path, fixture, accept = 'xml')
37
- stub_request(:put, "#{Rundeck.endpoint}#{path}")
38
- .with(headers: { 'Accept' => "application/#{accept}",
39
- 'X-Rundeck-Auth-Token' => Rundeck.api_token })
40
- .to_return(body: load_fixture(fixture))
25
+ def a_simple_post(path)
26
+ a_request(:post, "#{endpoint}#{path}")
41
27
  end
42
28
 
29
+ # PUT
43
30
  def a_put(path, accept = 'xml')
44
- a_request(:put, "#{Rundeck.endpoint}#{path}")
31
+ a_request(:put, "#{endpoint}#{path}")
45
32
  .with(headers: { 'Accept' => "application/#{accept}",
46
33
  'X-Rundeck-Auth-Token' => Rundeck.api_token })
47
34
  end
48
35
 
49
36
  # DELETE
50
- def stub_delete(path, fixture, accept = 'xml')
51
- stub_request(:delete, "#{Rundeck.endpoint}#{path}")
52
- .with(headers: { 'Accept' => "application/#{accept}",
53
- 'X-Rundeck-Auth-Token' => Rundeck.api_token })
54
- .to_return(body: load_fixture(fixture))
55
- end
56
-
57
37
  def a_delete(path, accept = 'xml')
58
- a_request(:delete, "#{Rundeck.endpoint}#{path}")
38
+ a_request(:delete, "#{endpoint}#{path}")
59
39
  .with(headers: { 'Accept' => "application/#{accept}",
60
40
  'X-Rundeck-Auth-Token' => Rundeck.api_token })
61
41
  end
@@ -0,0 +1,40 @@
1
+ shared_examples 'a job' do
2
+ it { is_expected.to be_a Rundeck::ObjectifiedHash }
3
+ it { is_expected.to respond_to(:id) }
4
+ it { is_expected.to respond_to(:name) }
5
+ it { is_expected.to respond_to(:group) }
6
+ it { is_expected.to respond_to(:description) }
7
+ end
8
+
9
+ shared_examples 'a job with a project attribute' do
10
+ it_behaves_like 'a job'
11
+ it { is_expected.to respond_to(:project) }
12
+ end
13
+
14
+ shared_examples 'a job import' do
15
+ it { is_expected.to be_a Rundeck::ObjectifiedHash }
16
+ it { is_expected.to respond_to(:id) }
17
+ it { is_expected.to respond_to(:name) }
18
+ it { is_expected.to respond_to(:group) }
19
+ it { is_expected.to respond_to(:project) }
20
+ it { is_expected.to respond_to(:url) }
21
+ end
22
+
23
+ shared_examples 'an execution' do
24
+ it { is_expected.to be_a Rundeck::ObjectifiedHash }
25
+ it { is_expected.to respond_to(:user) }
26
+ it { is_expected.to respond_to(:date_started) }
27
+ it { is_expected.to respond_to(:description) }
28
+ it { is_expected.to respond_to(:argstring) }
29
+ end
30
+
31
+ shared_examples 'a past execution' do
32
+ it_behaves_like 'an execution'
33
+ it { is_expected.to respond_to(:date_ended) }
34
+ end
35
+
36
+ shared_examples 'a token' do
37
+ it { is_expected.to be_a Rundeck::ObjectifiedHash }
38
+ it { is_expected.to respond_to(:id) }
39
+ it { is_expected.to respond_to(:user) }
40
+ end
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
4
+ version: 1.0.1
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-04 00:00:00.000000000 Z
11
+ date: 2014-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -217,6 +217,7 @@ files:
217
217
  - lib/rundeck/client/job.rb
218
218
  - lib/rundeck/client/key.rb
219
219
  - lib/rundeck/client/project.rb
220
+ - lib/rundeck/client/token.rb
220
221
  - lib/rundeck/configuration.rb
221
222
  - lib/rundeck/error.rb
222
223
  - lib/rundeck/objectified_hash.rb
@@ -233,6 +234,7 @@ files:
233
234
  - spec/cassettes/12/create_project_json.yml
234
235
  - spec/cassettes/12/create_project_xml.yml
235
236
  - spec/cassettes/12/create_public_key.yml
237
+ - spec/cassettes/12/create_token.yml
236
238
  - spec/cassettes/12/delete_execution_invalid.yml
237
239
  - spec/cassettes/12/delete_execution_valid.yml
238
240
  - spec/cassettes/12/delete_job_executions.yml
@@ -244,6 +246,8 @@ files:
244
246
  - spec/cassettes/12/delete_key_public.yml
245
247
  - spec/cassettes/12/delete_project_invalid.yml
246
248
  - spec/cassettes/12/delete_project_valid.yml
249
+ - spec/cassettes/12/delete_token.yml
250
+ - spec/cassettes/12/delete_token_invalid.yml
247
251
  - spec/cassettes/12/execution_invalid.yml
248
252
  - spec/cassettes/12/execution_query_invalid.yml
249
253
  - spec/cassettes/12/execution_query_no_params_valid.yml
@@ -273,18 +277,25 @@ files:
273
277
  - spec/cassettes/12/running_jobs_multiple.yml
274
278
  - spec/cassettes/12/running_jobs_none.yml
275
279
  - spec/cassettes/12/running_jobs_single.yml
280
+ - spec/cassettes/12/token.yml
281
+ - spec/cassettes/12/token_invalid.yml
282
+ - spec/cassettes/12/tokens_multiple.yml
283
+ - spec/cassettes/12/tokens_single.yml
284
+ - spec/cassettes/12/tokens_user.yml
276
285
  - spec/cassettes/12/update_private_key.yml
277
286
  - spec/cassettes/12/update_public_key.yml
278
287
  - spec/rundeck/client/execution_spec.rb
279
288
  - spec/rundeck/client/job_spec.rb
280
289
  - spec/rundeck/client/key_spec.rb
281
290
  - spec/rundeck/client/project_spec.rb
291
+ - spec/rundeck/client/token_spec.rb
282
292
  - spec/rundeck/client_spec.rb
283
293
  - spec/rundeck/objectified_hash_spec.rb
284
294
  - spec/rundeck/request_spec.rb
285
295
  - spec/rundeck_spec.rb
286
296
  - spec/spec_helper.rb
287
297
  - spec/support/helpers.rb
298
+ - spec/support/shared_examples.rb
288
299
  homepage: http://dblessing.github.io/rundeck-ruby
289
300
  licenses:
290
301
  - BSD-2-Clause
@@ -320,6 +331,7 @@ test_files:
320
331
  - spec/cassettes/12/create_project_json.yml
321
332
  - spec/cassettes/12/create_project_xml.yml
322
333
  - spec/cassettes/12/create_public_key.yml
334
+ - spec/cassettes/12/create_token.yml
323
335
  - spec/cassettes/12/delete_execution_invalid.yml
324
336
  - spec/cassettes/12/delete_execution_valid.yml
325
337
  - spec/cassettes/12/delete_job_executions.yml
@@ -331,6 +343,8 @@ test_files:
331
343
  - spec/cassettes/12/delete_key_public.yml
332
344
  - spec/cassettes/12/delete_project_invalid.yml
333
345
  - spec/cassettes/12/delete_project_valid.yml
346
+ - spec/cassettes/12/delete_token.yml
347
+ - spec/cassettes/12/delete_token_invalid.yml
334
348
  - spec/cassettes/12/execution_invalid.yml
335
349
  - spec/cassettes/12/execution_query_invalid.yml
336
350
  - spec/cassettes/12/execution_query_no_params_valid.yml
@@ -360,16 +374,23 @@ test_files:
360
374
  - spec/cassettes/12/running_jobs_multiple.yml
361
375
  - spec/cassettes/12/running_jobs_none.yml
362
376
  - spec/cassettes/12/running_jobs_single.yml
377
+ - spec/cassettes/12/token.yml
378
+ - spec/cassettes/12/token_invalid.yml
379
+ - spec/cassettes/12/tokens_multiple.yml
380
+ - spec/cassettes/12/tokens_single.yml
381
+ - spec/cassettes/12/tokens_user.yml
363
382
  - spec/cassettes/12/update_private_key.yml
364
383
  - spec/cassettes/12/update_public_key.yml
365
384
  - spec/rundeck/client/execution_spec.rb
366
385
  - spec/rundeck/client/job_spec.rb
367
386
  - spec/rundeck/client/key_spec.rb
368
387
  - spec/rundeck/client/project_spec.rb
388
+ - spec/rundeck/client/token_spec.rb
369
389
  - spec/rundeck/client_spec.rb
370
390
  - spec/rundeck/objectified_hash_spec.rb
371
391
  - spec/rundeck/request_spec.rb
372
392
  - spec/rundeck_spec.rb
373
393
  - spec/spec_helper.rb
374
394
  - spec/support/helpers.rb
395
+ - spec/support/shared_examples.rb
375
396
  has_rdoc: