diff --git a/spec/cassettes/12/job/delete_invalid.yml b/spec/cassettes/12/job/delete_invalid.yml
new file mode 100644
index 0000000..3b4bf16
--- /dev/null
+++ b/spec/cassettes/12/job/delete_invalid.yml
@@ -0,0 +1,41 @@
+---
+http_interactions:
+- request:
+ method: delete
+ uri: http://192.168.50.2:4440/api/12/job/123456
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ X-Rundeck-Auth-Token:
+ - 0qLDNZvlobR43k48d5rTaFORFWDOK96s
+ Accept:
+ - application/xml
+ response:
+ status:
+ code: 404
+ message: Not Found
+ headers:
+ Set-Cookie:
+ - JSESSIONID=1l8t87puu5zdf1e4y1hry068lf;Path=/
+ Expires:
+ - Thu, 01 Jan 1970 00:00:00 GMT
+ Content-Type:
+ - text/xml;charset=UTF-8
+ X-Rundeck-Api-Version:
+ - '13'
+ Transfer-Encoding:
+ - chunked
+ Server:
+ - Jetty(7.6.0.v20120127)
+ body:
+ encoding: UTF-8
+ string: |-
+
+
+ Job ID does not exist: 123456
+
+
+ http_version:
+ recorded_at: Tue, 07 Jul 2015 00:49:38 GMT
+recorded_with: VCR 2.9.3
diff --git a/spec/cassettes/12/job/delete_valid.yml b/spec/cassettes/12/job/delete_valid.yml
new file mode 100644
index 0000000..150f6d5
--- /dev/null
+++ b/spec/cassettes/12/job/delete_valid.yml
@@ -0,0 +1,30 @@
+---
+http_interactions:
+- request:
+ method: delete
+ uri: http://192.168.50.2:4440/api/12/job/8065ac12-aa0e-4c24-a409-912b79f457a1
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ X-Rundeck-Auth-Token:
+ - 0qLDNZvlobR43k48d5rTaFORFWDOK96s
+ Accept:
+ - application/xml
+ response:
+ status:
+ code: 204
+ message: No Content
+ headers:
+ Set-Cookie:
+ - JSESSIONID=4r8bhnmkslxoc3r7liaco5ne;Path=/
+ Expires:
+ - Thu, 01 Jan 1970 00:00:00 GMT
+ Server:
+ - Jetty(7.6.0.v20120127)
+ body:
+ encoding: UTF-8
+ string: ''
+ http_version:
+ recorded_at: Tue, 07 Jul 2015 00:49:38 GMT
+recorded_with: VCR 2.9.3
diff --git a/spec/cassettes/12/job/job.yml b/spec/cassettes/12/job/job.yml
new file mode 100644
index 0000000..aca3073
--- /dev/null
+++ b/spec/cassettes/12/job/job.yml
@@ -0,0 +1,52 @@
+---
+http_interactions:
+- request:
+ method: get
+ uri: http://192.168.50.2:4440/api/12/job/8065ac12-aa0e-4c24-a409-912b79f457a1
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ X-Rundeck-Auth-Token:
+ - 0qLDNZvlobR43k48d5rTaFORFWDOK96s
+ Accept:
+ - application/xml
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Set-Cookie:
+ - JSESSIONID=jr6wrp27zqvum3hkkid4jtht;Path=/
+ Expires:
+ - Thu, 01 Jan 1970 00:00:00 GMT
+ Content-Type:
+ - text/xml;charset=UTF-8
+ Transfer-Encoding:
+ - chunked
+ Server:
+ - Jetty(7.6.0.v20120127)
+ body:
+ encoding: UTF-8
+ string: |-
+
+
+ 8065ac12-aa0e-4c24-a409-912b79f457a1
+ INFO
+
+
+ echo 'hello world'
+
+
+ Check the status of anvils
+ My XML Job
+
+ anvils
+
+ 8065ac12-aa0e-4c24-a409-912b79f457a1
+ anvils
+
+
+ http_version:
+ recorded_at: Tue, 07 Jul 2015 00:49:38 GMT
+recorded_with: VCR 2.9.3
diff --git a/spec/cassettes/12/job/jobs.yml b/spec/cassettes/12/job/jobs.yml
new file mode 100644
index 0000000..2c0cb57
--- /dev/null
+++ b/spec/cassettes/12/job/jobs.yml
@@ -0,0 +1,52 @@
+---
+http_interactions:
+- request:
+ method: get
+ uri: http://192.168.50.2:4440/api/12/project/anvils/jobs
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ X-Rundeck-Auth-Token:
+ - 0qLDNZvlobR43k48d5rTaFORFWDOK96s
+ Accept:
+ - application/xml
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Set-Cookie:
+ - JSESSIONID=9vm21e4rognh1gelxpry68z2a;Path=/
+ Expires:
+ - Thu, 01 Jan 1970 00:00:00 GMT
+ X-Rundeck-Api-Xml-Response-Wrapper:
+ - 'false'
+ Content-Type:
+ - application/xml;charset=UTF-8
+ X-Rundeck-Api-Version:
+ - '13'
+ Transfer-Encoding:
+ - chunked
+ Server:
+ - Jetty(7.6.0.v20120127)
+ body:
+ encoding: UTF-8
+ string: |-
+
+
+ My XML Job
+ anvils
+ anvils
+ Check the status of anvils
+
+
+ My YAML Job
+ anvils
+ anvils
+ Check the status of anvils
+
+
+ http_version:
+ recorded_at: Tue, 07 Jul 2015 00:49:37 GMT
+recorded_with: VCR 2.9.3
diff --git a/spec/cassettes/12/token/token_create.yml b/spec/cassettes/12/token/create.yml
similarity index 100%
rename from spec/cassettes/12/token/token_create.yml
rename to spec/cassettes/12/token/create.yml
diff --git a/spec/cassettes/12/token/token_delete.yml b/spec/cassettes/12/token/delete.yml
similarity index 91%
rename from spec/cassettes/12/token/token_delete.yml
rename to spec/cassettes/12/token/delete.yml
index 17b0ba7..4cf325d 100644
--- a/spec/cassettes/12/token/token_delete.yml
+++ b/spec/cassettes/12/token/delete.yml
@@ -2,7 +2,7 @@
http_interactions:
- request:
method: delete
- uri: http://192.168.50.2:4440/api/12/token/eJ17Hkuu7PCTdKAMzMcLAR0yzdzkscQX
+ uri: http://192.168.50.2:4440/api/12/token/eB17Hkuu7PCTdKAMzMcLAR0yzdzkscQX
body:
encoding: US-ASCII
string: ''
diff --git a/spec/cassettes/12/token/token_error.yml b/spec/cassettes/12/token/error.yml
similarity index 100%
rename from spec/cassettes/12/token/token_error.yml
rename to spec/cassettes/12/token/error.yml
diff --git a/spec/cassettes/12/token/tokens_multiple.yml b/spec/cassettes/12/token/multiple.yml
similarity index 100%
rename from spec/cassettes/12/token/tokens_multiple.yml
rename to spec/cassettes/12/token/multiple.yml
diff --git a/spec/cassettes/12/token/tokens_single.yml b/spec/cassettes/12/token/single.yml
similarity index 100%
rename from spec/cassettes/12/token/tokens_single.yml
rename to spec/cassettes/12/token/single.yml
diff --git a/spec/cassettes/12/token/tokens_user.yml b/spec/cassettes/12/token/user.yml
similarity index 100%
rename from spec/cassettes/12/token/tokens_user.yml
rename to spec/cassettes/12/token/user.yml
diff --git a/spec/rundeck/client/job_spec.rb b/spec/rundeck/client/job_spec.rb
index 8ec671d..5fe26ed 100644
--- a/spec/rundeck/client/job_spec.rb
+++ b/spec/rundeck/client/job_spec.rb
@@ -1,8 +1,13 @@
require 'spec_helper'
describe Rundeck::Client do
- describe '.jobs', vcr: { cassette_name: 'jobs' } do
+ describe '.jobs', vcr: { cassette_name: 'job/jobs' } do
before do
+ prepare do
+ Rundeck.create_project(project_anvils, 'json')
+ Rundeck.import_jobs(job_yaml, 'yaml')
+ Rundeck.import_jobs(job_xml, 'xml')
+ end
@jobs = Rundeck.jobs('anvils')
end
subject { @jobs }
@@ -13,7 +18,7 @@
subject { @jobs.job }
it { is_expected.to be_an Array }
- its(:length) { is_expected.to eq(6) }
+ its(:length) { is_expected.to eq(2) }
context 'the first job' do
subject { @jobs.job[0] }
@@ -28,9 +33,14 @@
end
end
- describe '.job', vcr: { cassette_name: 'job' } do
+ describe '.job',
+ vcr: { cassette_name: 'job/job',
+ match_requests_on: [:method] } do
before do
- @job = Rundeck.job('2')
+ VCR.use_cassette('job/jobs') do
+ @job_id = Rundeck.jobs('anvils').job.first.id
+ end
+ @job = Rundeck.job(@job_id)
end
subject { @job }
@@ -48,25 +58,23 @@
it { is_expected.to respond_to(:keepgoing) }
it { is_expected.to respond_to(:strategy) }
-
- describe '#command' do
- subject { @job.sequence.command }
-
- it { is_expected.to respond_to(:scriptargs) }
- it { is_expected.to respond_to(:script) }
- end
+ it { is_expected.to respond_to(:command) }
end
it 'expects a get to have been made' do
- expect(a_get('/job/2')).to have_been_made
+ expect(a_get("/job/#{@job_id}")).to have_been_made
end
end
describe '.delete_job' do
context 'when a job exists',
- vcr: { cassette_name: 'delete_job_valid' } do
+ vcr: { cassette_name: 'job/delete_valid',
+ match_requests_on: [:method] } do
before do
- @job = Rundeck.delete_job(job_id)
+ VCR.use_cassette('job/jobs') do
+ @job_id = Rundeck.jobs('anvils').job.first.id
+ end
+ @job = Rundeck.delete_job(@job_id)
end
let(:job_id) { '3' }
subject { @job }
@@ -74,12 +82,12 @@
it { is_expected.to be_nil }
it 'expects a delete to have been made' do
- expect(a_delete('/job/3')).to have_been_made
+ expect(a_delete("/job/#{@job_id}")).to have_been_made
end
end
context 'when a job does not exist',
- vcr: { cassette_name: 'delete_job_invalid' } do
+ vcr: { cassette_name: 'job/delete_invalid' } do
specify do
expect do
Rundeck.delete_job('123456')
@@ -92,6 +100,12 @@
describe '.import_job' do
context 'with valid format' do
before do
+ prepare do
+ VCR.use_cassette('job/jobs') do
+ jobs = Rundeck.jobs('anvils').job
+ jobs.each { |job| Rundeck.delete_job(job.id) }
+ end
+ end
@job_import = Rundeck.import_jobs(content, format)
end
subject { @job_import }
@@ -154,7 +168,7 @@
end
end
- describe '.export_job' do
+ describe '.export_jobs' do
context 'with valid format' do
before do
@jobs = Rundeck.export_jobs('anvils', format)
diff --git a/spec/rundeck/client/token_spec.rb b/spec/rundeck/client/token_spec.rb
index 4383601..3feb058 100644
--- a/spec/rundeck/client/token_spec.rb
+++ b/spec/rundeck/client/token_spec.rb
@@ -11,7 +11,7 @@
let(:user) { nil }
context 'when a single token is returned',
- vcr: { cassette_name: 'token/tokens_single' } do
+ vcr: { cassette_name: 'token/single' } do
it { is_expected.to be_a Rundeck::ObjectifiedHash }
its(:token) { is_expected.to be_a Rundeck::ObjectifiedHash }
its(:allusers) { is_expected.to eq('true') }
@@ -22,7 +22,7 @@
end
context 'when multiple tokens are returned',
- vcr: { cassette_name: 'token/tokens_multiple' } do
+ vcr: { cassette_name: 'token/multiple' } do
before { prepare { Rundeck.create_token('dev') } }
it { is_expected.to be_a Rundeck::ObjectifiedHash }
@@ -32,7 +32,7 @@
end
context 'when user is specified',
- vcr: { cassette_name: 'token/tokens_user' } do
+ vcr: { cassette_name: 'token/user' } do
before { prepare { Rundeck.create_token('dev') } }
let(:user) { 'dev' }
@@ -49,7 +49,9 @@
end
describe '.token' do
- context 'when a token exists', vcr: { cassette_name: 'token/token' } do
+ context 'when a token exists',
+ vcr: { cassette_name: 'token/token',
+ match_requests_on: [:method] } do
before do
@token = Rundeck.token(Rundeck.api_token)
end
@@ -63,7 +65,7 @@
end
context 'when a token does not exist',
- vcr: { cassette_name: 'token/token_error' } do
+ vcr: { cassette_name: 'token/error' } do
specify do
expect do
Rundeck.token('123456')
@@ -75,7 +77,7 @@
describe '.create_token' do
context 'when the user exists',
- vcr: { cassette_name: 'token/token_create' } do
+ vcr: { cassette_name: 'token/create' } do
before do
@token = Rundeck.create_token('dev')
end
@@ -91,10 +93,10 @@
describe '.delete_token' do
context 'when a token exists',
- vcr: { cassette_name: 'token/token_delete',
+ vcr: { cassette_name: 'token/delete',
match_requests_on: [:method] } do
before do
- VCR.use_cassette('token/tokens_user') do
+ VCR.use_cassette('token/user') do
@dev_tokens = Rundeck.tokens('dev')
end
@token = Rundeck.delete_token(@dev_tokens.token.first.id)
diff --git a/spec/support/helpers.rb b/spec/support/helpers.rb
index 34f08c3..cc0180d 100644
--- a/spec/support/helpers.rb
+++ b/spec/support/helpers.rb
@@ -21,13 +21,15 @@ def cassette_exist?
# Example - Before running tests that need to 'get' a project,
# we must create the project.
def prepare
- unless cassette_exist?
+ if !cassette_exist?
cassette = RSpec.current_example.metadata[:vcr][:cassette_name]
VCR.eject_cassette(cassette)
VCR.turned_off { yield }
VCR.insert_cassette(cassette)
end
end
+ alias_method :without_recording, :prepare
+
def endpoint
"#{Rundeck.endpoint}/api/#{Rundeck.api_version}"