rundeck 1.2.0 → 1.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/DEVELOPMENT.md +35 -0
- data/lib/rundeck/client/execution.rb +7 -1
- data/lib/rundeck/version.rb +1 -1
- data/spec/cassettes/12/key/contents_direct.yml +67 -0
- data/spec/cassettes/12/key/contents_multiple.yml +38 -0
- data/spec/cassettes/12/{key_contents_private.yml → key/contents_private.yml} +5 -5
- data/spec/cassettes/12/{create_private_key.yml → key/create_private.yml} +5 -5
- data/spec/cassettes/12/{create_public_key.yml → key/create_public.yml} +5 -5
- data/spec/cassettes/12/{delete_key_invalid.yml → key/delete_error.yml} +3 -3
- data/spec/cassettes/12/{delete_key_private.yml → key/delete_private.yml} +3 -3
- data/spec/cassettes/12/{delete_key_public.yml → key/delete_public.yml} +3 -3
- data/spec/cassettes/12/{keys_direct.yml → key/key_direct.yml} +5 -5
- data/spec/cassettes/12/{keys_none.yml → key/key_error.yml} +4 -4
- data/spec/cassettes/12/key/key_multiple.yml +38 -0
- data/spec/cassettes/12/{key_metadata_direct.yml → key/metadata_direct.yml} +5 -5
- data/spec/cassettes/12/key/metadata_multiple.yml +38 -0
- data/spec/cassettes/12/{update_private_key.yml → key/update_private.yml} +10 -10
- data/spec/cassettes/12/{update_public_key.yml → key/update_public.yml} +10 -10
- data/spec/cassettes/12/{create_project_invalid.yml → project/create_error.yml} +3 -3
- data/spec/cassettes/12/{create_project_json.yml → project/create_json.yml} +3 -3
- data/spec/cassettes/12/{create_project_xml.yml → project/create_xml.yml} +3 -3
- data/spec/cassettes/12/{delete_token.yml → project/delete.yml} +4 -4
- data/spec/cassettes/12/project/delete_error.yml +41 -0
- data/spec/cassettes/12/{project_valid.yml → project/project.yml} +3 -5
- data/spec/cassettes/12/{project_invalid.yml → project/project_error.yml} +3 -3
- data/spec/cassettes/12/{projects.yml → project/projects.yml} +3 -3
- data/spec/cassettes/12/{delete_token_invalid.yml → token/delete_error.yml} +3 -3
- data/spec/cassettes/12/{token.yml → token/token.yml} +5 -5
- data/spec/cassettes/12/{create_token.yml → token/token_create.yml} +5 -5
- data/spec/cassettes/12/token/token_delete.yml +32 -0
- data/spec/cassettes/12/{token_invalid.yml → token/token_error.yml} +3 -3
- data/spec/cassettes/12/{tokens_multiple.yml → token/tokens_multiple.yml} +6 -6
- data/spec/cassettes/12/{tokens_single.yml → token/tokens_single.yml} +5 -5
- data/spec/cassettes/12/{tokens_user.yml → token/tokens_user.yml} +7 -6
- data/spec/rundeck/client/key_spec.rb +25 -23
- data/spec/rundeck/client/project_spec.rb +12 -9
- data/spec/rundeck/client/token_spec.rb +28 -18
- data/spec/spec_helper.rb +5 -4
- data/spec/support/helpers.rb +29 -0
- metadata +65 -60
- data/spec/cassettes/12/key_contents_direct.yml +0 -67
- data/spec/cassettes/12/key_contents_multiple.yml +0 -38
- data/spec/cassettes/12/key_metadata_multiple.yml +0 -38
- data/spec/cassettes/12/keys_multiple.yml +0 -38
@@ -2,13 +2,13 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: post
|
5
|
-
uri: http://192.168.50.2:4440/api/12/tokens/
|
5
|
+
uri: http://192.168.50.2:4440/api/12/tokens/dev
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
X-Rundeck-Auth-Token:
|
11
|
-
-
|
11
|
+
- OPIfQ6MOnevhlFThG1af4GAcbPdAgh0B
|
12
12
|
Accept:
|
13
13
|
- application/xml
|
14
14
|
response:
|
@@ -17,7 +17,7 @@ http_interactions:
|
|
17
17
|
message: Created
|
18
18
|
headers:
|
19
19
|
Set-Cookie:
|
20
|
-
- JSESSIONID=
|
20
|
+
- JSESSIONID=nrtyr7wl9xfx2yon44aglrlh;Path=/
|
21
21
|
Expires:
|
22
22
|
- Thu, 01 Jan 1970 00:00:00 GMT
|
23
23
|
X-Rundeck-Api-Xml-Response-Wrapper:
|
@@ -32,7 +32,7 @@ http_interactions:
|
|
32
32
|
- Jetty(7.6.0.v20120127)
|
33
33
|
body:
|
34
34
|
encoding: UTF-8
|
35
|
-
string: <token id='
|
35
|
+
string: "<token id='X52YPTWGsfivVPQWb6gXyTtAYjITJy0g' user='dev' />"
|
36
36
|
http_version:
|
37
|
-
recorded_at: Sun,
|
37
|
+
recorded_at: Sun, 18 Jan 2015 00:33:05 GMT
|
38
38
|
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,32 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: delete
|
5
|
+
uri: http://192.168.50.2:4440/api/12/token/eJ17Hkuu7PCTdKAMzMcLAR0yzdzkscQX
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
X-Rundeck-Auth-Token:
|
11
|
+
- OPIfQ6MOnevhlFThG1af4GAcbPdAgh0B
|
12
|
+
Accept:
|
13
|
+
- application/xml
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 204
|
17
|
+
message: No Content
|
18
|
+
headers:
|
19
|
+
Set-Cookie:
|
20
|
+
- JSESSIONID=1o1l2lq5rwpt5w8vebv2ryef8;Path=/
|
21
|
+
Expires:
|
22
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
23
|
+
Content-Type:
|
24
|
+
- text/html;charset=UTF-8
|
25
|
+
Server:
|
26
|
+
- Jetty(7.6.0.v20120127)
|
27
|
+
body:
|
28
|
+
encoding: UTF-8
|
29
|
+
string: ''
|
30
|
+
http_version:
|
31
|
+
recorded_at: Sun, 18 Jan 2015 04:55:22 GMT
|
32
|
+
recorded_with: VCR 2.9.3
|
@@ -8,7 +8,7 @@ http_interactions:
|
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
X-Rundeck-Auth-Token:
|
11
|
-
-
|
11
|
+
- vDCT9dP6evCJYHtWoivruQtymkLTGJXq
|
12
12
|
Accept:
|
13
13
|
- application/xml
|
14
14
|
response:
|
@@ -17,7 +17,7 @@ http_interactions:
|
|
17
17
|
message: Not Found
|
18
18
|
headers:
|
19
19
|
Set-Cookie:
|
20
|
-
- JSESSIONID=
|
20
|
+
- JSESSIONID=vyo63pc7bb4t1keqipdw36amh;Path=/
|
21
21
|
Expires:
|
22
22
|
- Thu, 01 Jan 1970 00:00:00 GMT
|
23
23
|
Content-Type:
|
@@ -37,5 +37,5 @@ http_interactions:
|
|
37
37
|
</error>
|
38
38
|
</result>
|
39
39
|
http_version:
|
40
|
-
recorded_at:
|
40
|
+
recorded_at: Sat, 17 Jan 2015 22:11:44 GMT
|
41
41
|
recorded_with: VCR 2.9.3
|
@@ -8,7 +8,7 @@ http_interactions:
|
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
X-Rundeck-Auth-Token:
|
11
|
-
-
|
11
|
+
- vDCT9dP6evCJYHtWoivruQtymkLTGJXq
|
12
12
|
Accept:
|
13
13
|
- application/xml
|
14
14
|
response:
|
@@ -17,7 +17,7 @@ http_interactions:
|
|
17
17
|
message: OK
|
18
18
|
headers:
|
19
19
|
Set-Cookie:
|
20
|
-
- JSESSIONID=
|
20
|
+
- JSESSIONID=1tec3q64941ofui9caz43bdpf;Path=/
|
21
21
|
Expires:
|
22
22
|
- Thu, 01 Jan 1970 00:00:00 GMT
|
23
23
|
X-Rundeck-Api-Xml-Response-Wrapper:
|
@@ -33,10 +33,10 @@ http_interactions:
|
|
33
33
|
body:
|
34
34
|
encoding: UTF-8
|
35
35
|
string: |-
|
36
|
-
<tokens count='
|
37
|
-
<token id='
|
38
|
-
<token id='
|
36
|
+
<tokens count='5' allusers='true'>
|
37
|
+
<token id='vDCT9dP6evCJYHtWoivruQtymkLTGJXq' user='admin' />
|
38
|
+
<token id='GAO3Z9U73Yow3MlDC41JmU8Z2bMmAZaV' user='dev' />
|
39
39
|
</tokens>
|
40
40
|
http_version:
|
41
|
-
recorded_at:
|
41
|
+
recorded_at: Sat, 17 Jan 2015 22:36:41 GMT
|
42
42
|
recorded_with: VCR 2.9.3
|
@@ -8,7 +8,7 @@ http_interactions:
|
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
X-Rundeck-Auth-Token:
|
11
|
-
-
|
11
|
+
- vDCT9dP6evCJYHtWoivruQtymkLTGJXq
|
12
12
|
Accept:
|
13
13
|
- application/xml
|
14
14
|
response:
|
@@ -17,7 +17,7 @@ http_interactions:
|
|
17
17
|
message: OK
|
18
18
|
headers:
|
19
19
|
Set-Cookie:
|
20
|
-
- JSESSIONID=
|
20
|
+
- JSESSIONID=kqe2pxi1f10u1fmrz86b9c4r7;Path=/
|
21
21
|
Expires:
|
22
22
|
- Thu, 01 Jan 1970 00:00:00 GMT
|
23
23
|
X-Rundeck-Api-Xml-Response-Wrapper:
|
@@ -33,9 +33,9 @@ http_interactions:
|
|
33
33
|
body:
|
34
34
|
encoding: UTF-8
|
35
35
|
string: |-
|
36
|
-
<tokens count='
|
37
|
-
<token id='
|
36
|
+
<tokens count='5' allusers='true'>
|
37
|
+
<token id='vDCT9dP6evCJYHtWoivruQtymkLTGJXq' user='admin' />
|
38
38
|
</tokens>
|
39
39
|
http_version:
|
40
|
-
recorded_at:
|
40
|
+
recorded_at: Sat, 17 Jan 2015 22:36:40 GMT
|
41
41
|
recorded_with: VCR 2.9.3
|
@@ -2,13 +2,13 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: http://192.168.50.2:4440/api/12/tokens/
|
5
|
+
uri: http://192.168.50.2:4440/api/12/tokens/dev
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
X-Rundeck-Auth-Token:
|
11
|
-
-
|
11
|
+
- OPIfQ6MOnevhlFThG1af4GAcbPdAgh0B
|
12
12
|
Accept:
|
13
13
|
- application/xml
|
14
14
|
response:
|
@@ -17,7 +17,7 @@ http_interactions:
|
|
17
17
|
message: OK
|
18
18
|
headers:
|
19
19
|
Set-Cookie:
|
20
|
-
- JSESSIONID=
|
20
|
+
- JSESSIONID=ng8vxyg7q5qqjipbu295jctq;Path=/
|
21
21
|
Expires:
|
22
22
|
- Thu, 01 Jan 1970 00:00:00 GMT
|
23
23
|
X-Rundeck-Api-Xml-Response-Wrapper:
|
@@ -33,9 +33,10 @@ http_interactions:
|
|
33
33
|
body:
|
34
34
|
encoding: UTF-8
|
35
35
|
string: |-
|
36
|
-
<tokens count='
|
37
|
-
<token id='
|
36
|
+
<tokens count='5' user='dev'>
|
37
|
+
<token id='eJ17Hkuu7PCTdKAMzMcLAR0yzdzkscQX' user='dev' />
|
38
|
+
<token id='XnMEQWugSGz5hDmLtOiQ5NeqGveBQqwz' user='dev' />
|
38
39
|
</tokens>
|
39
40
|
http_version:
|
40
|
-
recorded_at: Sun,
|
41
|
+
recorded_at: Sun, 18 Jan 2015 00:30:08 GMT
|
41
42
|
recorded_with: VCR 2.9.3
|
@@ -2,21 +2,21 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Rundeck::Client do
|
4
4
|
describe '.keys' do
|
5
|
-
# The anvils demo doesn't have any keys by default.
|
6
|
-
# Create a public key at path /path/to/key and a private key
|
7
|
-
# at /path/to/private_key using the data from the helper methods.
|
8
|
-
# Create the public key first.
|
9
5
|
context 'with a path containing multiple keys',
|
10
|
-
vcr: { cassette_name: '
|
6
|
+
vcr: { cassette_name: 'key/key_multiple' } do
|
11
7
|
before do
|
8
|
+
prepare do
|
9
|
+
Rundeck.create_public_key('path/to/key', public_key)
|
10
|
+
Rundeck.create_private_key('path/to/private_key', private_key)
|
11
|
+
end
|
12
12
|
@keys = Rundeck.keys('path/to')
|
13
13
|
end
|
14
14
|
subject { @keys }
|
15
15
|
|
16
16
|
it { is_expected.to be_an Array }
|
17
17
|
|
18
|
-
context 'the
|
19
|
-
subject { @keys.
|
18
|
+
context 'the public key' do
|
19
|
+
subject { @keys.detect { |key| key.name == 'key' } }
|
20
20
|
|
21
21
|
its(:name) { is_expected.to eq('key') }
|
22
22
|
its(:type) { is_expected.to eq('file') }
|
@@ -24,9 +24,11 @@ describe Rundeck::Client do
|
|
24
24
|
it { is_expected.to respond_to(:path) }
|
25
25
|
|
26
26
|
describe '#resource_meta' do
|
27
|
-
subject { @keys.
|
27
|
+
subject { @keys.detect { |key| key.name == 'key' }.resource_meta }
|
28
28
|
|
29
|
-
its(:rundeck_content_type)
|
29
|
+
its(:rundeck_content_type) do
|
30
|
+
is_expected.to eq('application/pgp-key')
|
31
|
+
end
|
30
32
|
end
|
31
33
|
end
|
32
34
|
|
@@ -36,7 +38,7 @@ describe Rundeck::Client do
|
|
36
38
|
end
|
37
39
|
|
38
40
|
context 'with a path containing no keys',
|
39
|
-
vcr: { cassette_name: '
|
41
|
+
vcr: { cassette_name: 'key/key_error' } do
|
40
42
|
specify do
|
41
43
|
expect do
|
42
44
|
Rundeck.keys('path/to/nowhere')
|
@@ -45,7 +47,7 @@ describe Rundeck::Client do
|
|
45
47
|
end
|
46
48
|
|
47
49
|
context 'with a direct path to a key',
|
48
|
-
vcr: { cassette_name: '
|
50
|
+
vcr: { cassette_name: 'key/key_direct' } do
|
49
51
|
specify do
|
50
52
|
expect do
|
51
53
|
Rundeck.keys('path/to/key')
|
@@ -58,7 +60,7 @@ describe Rundeck::Client do
|
|
58
60
|
|
59
61
|
describe '.key_metadata' do
|
60
62
|
context 'with a direct path to a key',
|
61
|
-
vcr: { cassette_name: '
|
63
|
+
vcr: { cassette_name: 'key/metadata_direct' } do
|
62
64
|
before do
|
63
65
|
@key = Rundeck.key_metadata('path/to/key')
|
64
66
|
end
|
@@ -73,7 +75,7 @@ describe Rundeck::Client do
|
|
73
75
|
end
|
74
76
|
|
75
77
|
context 'with a path containing multiple keys',
|
76
|
-
vcr: { cassette_name: '
|
78
|
+
vcr: { cassette_name: 'key/metadata_multiple' } do
|
77
79
|
specify do
|
78
80
|
expect do
|
79
81
|
Rundeck.key_metadata('path/to')
|
@@ -86,7 +88,7 @@ describe Rundeck::Client do
|
|
86
88
|
|
87
89
|
describe '.key_contents' do
|
88
90
|
context 'with a direct path to a key',
|
89
|
-
vcr: { cassette_name: '
|
91
|
+
vcr: { cassette_name: 'key/contents_direct' } do
|
90
92
|
before do
|
91
93
|
@key = Rundeck.key_contents('path/to/key')
|
92
94
|
end
|
@@ -104,7 +106,7 @@ describe Rundeck::Client do
|
|
104
106
|
end
|
105
107
|
|
106
108
|
context 'with a path containing multiple keys',
|
107
|
-
vcr: { cassette_name: '
|
109
|
+
vcr: { cassette_name: 'key/contents_multiple' } do
|
108
110
|
specify do
|
109
111
|
expect do
|
110
112
|
Rundeck.key_contents('path/to')
|
@@ -115,7 +117,7 @@ describe Rundeck::Client do
|
|
115
117
|
end
|
116
118
|
|
117
119
|
context 'with a path to a private key',
|
118
|
-
vcr: { cassette_name: '
|
120
|
+
vcr: { cassette_name: 'key/contents_private' } do
|
119
121
|
specify do
|
120
122
|
expect do
|
121
123
|
Rundeck.key_contents('path/to/private_key')
|
@@ -127,7 +129,7 @@ describe Rundeck::Client do
|
|
127
129
|
end
|
128
130
|
|
129
131
|
describe '.create_private_key',
|
130
|
-
vcr: { cassette_name: '
|
132
|
+
vcr: { cassette_name: 'key/create_private' } do
|
131
133
|
before do
|
132
134
|
@key = Rundeck.create_private_key('path/to/private_key2', private_key)
|
133
135
|
end
|
@@ -144,7 +146,7 @@ describe Rundeck::Client do
|
|
144
146
|
end
|
145
147
|
|
146
148
|
describe '.update_private_key',
|
147
|
-
vcr: { cassette_name: '
|
149
|
+
vcr: { cassette_name: 'key/update_private' } do
|
148
150
|
before do
|
149
151
|
@key = Rundeck.update_private_key('path/to/private_key2', private_key)
|
150
152
|
end
|
@@ -162,7 +164,7 @@ describe Rundeck::Client do
|
|
162
164
|
end
|
163
165
|
|
164
166
|
describe '.create_public_key',
|
165
|
-
vcr: { cassette_name: '
|
167
|
+
vcr: { cassette_name: 'key/create_public' } do
|
166
168
|
before do
|
167
169
|
@key = Rundeck.create_public_key('path/to/public_key2', public_key)
|
168
170
|
end
|
@@ -179,7 +181,7 @@ describe Rundeck::Client do
|
|
179
181
|
end
|
180
182
|
|
181
183
|
describe '.update_public_key',
|
182
|
-
vcr: { cassette_name: '
|
184
|
+
vcr: { cassette_name: 'key/update_public' } do
|
183
185
|
before do
|
184
186
|
@key = Rundeck.update_public_key('path/to/public_key2', public_key)
|
185
187
|
end
|
@@ -204,7 +206,7 @@ describe Rundeck::Client do
|
|
204
206
|
subject { @key }
|
205
207
|
|
206
208
|
context 'public key path',
|
207
|
-
vcr: { cassette_name: '
|
209
|
+
vcr: { cassette_name: 'key/delete_public' } do
|
208
210
|
let(:path) { 'path/to/public_key2' }
|
209
211
|
|
210
212
|
it { is_expected.to be_nil }
|
@@ -214,7 +216,7 @@ describe Rundeck::Client do
|
|
214
216
|
end
|
215
217
|
|
216
218
|
context 'private key path',
|
217
|
-
vcr: { cassette_name: '
|
219
|
+
vcr: { cassette_name: 'key/delete_private' } do
|
218
220
|
let(:path) { 'path/to/private_key2' }
|
219
221
|
|
220
222
|
it { is_expected.to be_nil }
|
@@ -225,7 +227,7 @@ describe Rundeck::Client do
|
|
225
227
|
end
|
226
228
|
|
227
229
|
context 'with a bad path',
|
228
|
-
vcr: { cassette_name: '
|
230
|
+
vcr: { cassette_name: 'key/delete_error' } do
|
229
231
|
specify do
|
230
232
|
expect do
|
231
233
|
Rundeck.delete_key('path/to/nowhere')
|
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Rundeck::Client do
|
4
|
-
describe '.projects', vcr: { cassette_name: 'projects' } do
|
4
|
+
describe '.projects', vcr: { cassette_name: 'project/projects' } do
|
5
5
|
before do
|
6
|
+
prepare { Rundeck.create_project(project_anvils, 'json') }
|
6
7
|
@projects = Rundeck.projects
|
7
8
|
end
|
8
9
|
subject { @projects }
|
@@ -28,7 +29,7 @@ describe Rundeck::Client do
|
|
28
29
|
subject { @project }
|
29
30
|
|
30
31
|
context 'create with json format',
|
31
|
-
vcr: { cassette_name: '
|
32
|
+
vcr: { cassette_name: 'project/create_json' } do
|
32
33
|
let(:content) { project_json }
|
33
34
|
let(:format) { 'json' }
|
34
35
|
|
@@ -41,7 +42,7 @@ describe Rundeck::Client do
|
|
41
42
|
end
|
42
43
|
|
43
44
|
context 'create with xml format',
|
44
|
-
vcr: { cassette_name: '
|
45
|
+
vcr: { cassette_name: 'project/create_xml' } do
|
45
46
|
let(:content) { project_xml }
|
46
47
|
let(:format) { 'xml' }
|
47
48
|
|
@@ -55,7 +56,7 @@ describe Rundeck::Client do
|
|
55
56
|
end
|
56
57
|
|
57
58
|
context 'when project already exists',
|
58
|
-
vcr: { cassette_name: '
|
59
|
+
vcr: { cassette_name: 'project/create_error' } do
|
59
60
|
specify do
|
60
61
|
expect do
|
61
62
|
Rundeck.create_project(project_anvils, 'json')
|
@@ -67,7 +68,7 @@ describe Rundeck::Client do
|
|
67
68
|
|
68
69
|
describe '.project' do
|
69
70
|
context 'when the project exists',
|
70
|
-
vcr: { cassette_name: '
|
71
|
+
vcr: { cassette_name: 'project/project' } do
|
71
72
|
before do
|
72
73
|
@project = Rundeck.project('anvils')
|
73
74
|
end
|
@@ -78,7 +79,7 @@ describe Rundeck::Client do
|
|
78
79
|
end
|
79
80
|
|
80
81
|
context 'when the project does not exist',
|
81
|
-
vcr: { cassette_name: '
|
82
|
+
vcr: { cassette_name: 'project/project_error' } do
|
82
83
|
specify do
|
83
84
|
expect do
|
84
85
|
Rundeck.project('nonexistent')
|
@@ -90,10 +91,12 @@ describe Rundeck::Client do
|
|
90
91
|
|
91
92
|
describe '.delete_project' do
|
92
93
|
context 'when a project exists',
|
93
|
-
vcr: { cassette_name: '
|
94
|
+
vcr: { cassette_name: 'project/delete' } do
|
94
95
|
before do
|
96
|
+
prepare { Rundeck.create_project(project_deleteme) }
|
95
97
|
@project = Rundeck.delete_project(project)
|
96
98
|
end
|
99
|
+
|
97
100
|
let(:project) { 'anvils' }
|
98
101
|
subject { @project }
|
99
102
|
|
@@ -105,10 +108,10 @@ describe Rundeck::Client do
|
|
105
108
|
end
|
106
109
|
|
107
110
|
context 'when a project does not exist',
|
108
|
-
vcr: { cassette_name: '
|
111
|
+
vcr: { cassette_name: 'project/delete_error' } do
|
109
112
|
specify do
|
110
113
|
expect do
|
111
|
-
Rundeck.delete_project('
|
114
|
+
Rundeck.delete_project('nonexistent')
|
112
115
|
end.to raise_error(Rundeck::Error::NotFound,
|
113
116
|
/Project does not exist/)
|
114
117
|
end
|
@@ -11,7 +11,7 @@ describe Rundeck::Client do
|
|
11
11
|
let(:user) { nil }
|
12
12
|
|
13
13
|
context 'when a single token is returned',
|
14
|
-
vcr: { cassette_name: 'tokens_single' } do
|
14
|
+
vcr: { cassette_name: 'token/tokens_single' } do
|
15
15
|
it { is_expected.to be_a Rundeck::ObjectifiedHash }
|
16
16
|
its(:token) { is_expected.to be_a Rundeck::ObjectifiedHash }
|
17
17
|
its(:allusers) { is_expected.to eq('true') }
|
@@ -22,44 +22,48 @@ describe Rundeck::Client do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
context 'when multiple tokens are returned',
|
25
|
-
vcr: { cassette_name: 'tokens_multiple' } do
|
25
|
+
vcr: { cassette_name: 'token/tokens_multiple' } do
|
26
|
+
before { prepare { Rundeck.create_token('dev') } }
|
27
|
+
|
26
28
|
it { is_expected.to be_a Rundeck::ObjectifiedHash }
|
27
29
|
its(:token) { is_expected.to be_an Array }
|
28
30
|
its(:allusers) { is_expected.to eq('true') }
|
29
31
|
end
|
30
32
|
end
|
31
33
|
|
32
|
-
context 'when user is specified',
|
33
|
-
|
34
|
+
context 'when user is specified',
|
35
|
+
vcr: { cassette_name: 'token/tokens_user' } do
|
36
|
+
before { prepare { Rundeck.create_token('dev') } }
|
37
|
+
let(:user) { 'dev' }
|
34
38
|
|
35
39
|
it { is_expected.to be_a Rundeck::ObjectifiedHash }
|
36
|
-
its(:user) { is_expected.to eq(
|
40
|
+
its(:user) { is_expected.to eq(user) }
|
37
41
|
|
38
42
|
describe '#token' do
|
39
|
-
subject { @tokens.token }
|
43
|
+
subject { @tokens.token.first }
|
40
44
|
|
41
45
|
it_behaves_like 'a token'
|
42
|
-
its(:user) { is_expected.to eq(
|
46
|
+
its(:user) { is_expected.to eq(user) }
|
43
47
|
end
|
44
48
|
end
|
45
49
|
end
|
46
50
|
|
47
51
|
describe '.token' do
|
48
|
-
context 'when a token exists', vcr: { cassette_name: 'token' } do
|
52
|
+
context 'when a token exists', vcr: { cassette_name: 'token/token' } do
|
49
53
|
before do
|
50
|
-
@token = Rundeck.token(
|
54
|
+
@token = Rundeck.token(Rundeck.api_token)
|
51
55
|
end
|
52
56
|
subject { @token }
|
53
57
|
|
54
58
|
it_behaves_like 'a token'
|
55
59
|
|
56
60
|
it 'expects a get to have been made' do
|
57
|
-
expect(a_get(
|
61
|
+
expect(a_get("/token/#{Rundeck.api_token}")).to have_been_made
|
58
62
|
end
|
59
63
|
end
|
60
64
|
|
61
65
|
context 'when a token does not exist',
|
62
|
-
vcr: { cassette_name: '
|
66
|
+
vcr: { cassette_name: 'token/token_error' } do
|
63
67
|
specify do
|
64
68
|
expect do
|
65
69
|
Rundeck.token('123456')
|
@@ -70,24 +74,30 @@ describe Rundeck::Client do
|
|
70
74
|
end
|
71
75
|
|
72
76
|
describe '.create_token' do
|
73
|
-
context 'when the user exists',
|
77
|
+
context 'when the user exists',
|
78
|
+
vcr: { cassette_name: 'token/token_create' } do
|
74
79
|
before do
|
75
|
-
@token = Rundeck.create_token('
|
80
|
+
@token = Rundeck.create_token('dev')
|
76
81
|
end
|
77
82
|
subject { @token }
|
78
83
|
|
79
84
|
it_behaves_like 'a token'
|
80
85
|
|
81
86
|
it 'expects a post to have been made' do
|
82
|
-
expect(a_post('/tokens/
|
87
|
+
expect(a_post('/tokens/dev')).to have_been_made
|
83
88
|
end
|
84
89
|
end
|
85
90
|
end
|
86
91
|
|
87
92
|
describe '.delete_token' do
|
88
|
-
context 'when a token exists',
|
93
|
+
context 'when a token exists',
|
94
|
+
vcr: { cassette_name: 'token/token_delete',
|
95
|
+
match_requests_on: [:method] } do
|
89
96
|
before do
|
90
|
-
|
97
|
+
VCR.use_cassette('token/tokens_user') do
|
98
|
+
@dev_tokens = Rundeck.tokens('dev')
|
99
|
+
end
|
100
|
+
@token = Rundeck.delete_token(@dev_tokens.token.first.id)
|
91
101
|
end
|
92
102
|
subject { @token }
|
93
103
|
|
@@ -95,13 +105,13 @@ describe Rundeck::Client do
|
|
95
105
|
|
96
106
|
it 'expects a delete to have been made' do
|
97
107
|
expect(
|
98
|
-
a_delete(
|
108
|
+
a_delete("/token/#{@dev_tokens.token.first.id}")
|
99
109
|
).to have_been_made
|
100
110
|
end
|
101
111
|
end
|
102
112
|
|
103
113
|
context 'when a token does not exist',
|
104
|
-
vcr: { cassette_name: '
|
114
|
+
vcr: { cassette_name: 'token/delete_error' } do
|
105
115
|
specify do
|
106
116
|
expect do
|
107
117
|
Rundeck.delete_token('123456')
|