From 8e2dc9165a31f1b4d0317846f2aee796b114efb0 Mon Sep 17 00:00:00 2001 From: Drew Blessing Date: Mon, 6 Jul 2015 17:09:58 -0500 Subject: [PATCH 1/3] Simplify token cassette names --- .../12/token/{token_create.yml => create.yml} | 0 .../12/token/{token_delete.yml => delete.yml} | 0 .../12/token/{token_error.yml => error.yml} | 0 .../12/token/{tokens_multiple.yml => multiple.yml} | 0 .../12/token/{tokens_single.yml => single.yml} | 0 .../12/token/{tokens_user.yml => user.yml} | 0 spec/rundeck/client/token_spec.rb | 14 +++++++------- 7 files changed, 7 insertions(+), 7 deletions(-) rename spec/cassettes/12/token/{token_create.yml => create.yml} (100%) rename spec/cassettes/12/token/{token_delete.yml => delete.yml} (100%) rename spec/cassettes/12/token/{token_error.yml => error.yml} (100%) rename spec/cassettes/12/token/{tokens_multiple.yml => multiple.yml} (100%) rename spec/cassettes/12/token/{tokens_single.yml => single.yml} (100%) rename spec/cassettes/12/token/{tokens_user.yml => user.yml} (100%) 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 100% rename from spec/cassettes/12/token/token_delete.yml rename to spec/cassettes/12/token/delete.yml 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/token_spec.rb b/spec/rundeck/client/token_spec.rb index 4383601..ae865db 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' } @@ -63,7 +63,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 +75,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 +91,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) From 12962a02f0bc6906478d87bc635799b879d94a76 Mon Sep 17 00:00:00 2001 From: Drew Blessing Date: Mon, 6 Jul 2015 17:30:02 -0500 Subject: [PATCH 2/3] Fix token request matching --- spec/rundeck/client/token_spec.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/rundeck/client/token_spec.rb b/spec/rundeck/client/token_spec.rb index ae865db..3feb058 100644 --- a/spec/rundeck/client/token_spec.rb +++ b/spec/rundeck/client/token_spec.rb @@ -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 From 1937dbd1c8e580452e3a8de9f028c76c742ab297 Mon Sep 17 00:00:00 2001 From: Drew Blessing Date: Mon, 6 Jul 2015 19:49:56 -0500 Subject: [PATCH 3/3] Change job specs --- spec/cassettes/12/job/delete_invalid.yml | 41 +++++++++++++++++++ spec/cassettes/12/job/delete_valid.yml | 30 ++++++++++++++ spec/cassettes/12/job/job.yml | 52 ++++++++++++++++++++++++ spec/cassettes/12/job/jobs.yml | 52 ++++++++++++++++++++++++ spec/cassettes/12/token/delete.yml | 2 +- spec/rundeck/client/job_spec.rb | 48 ++++++++++++++-------- spec/support/helpers.rb | 4 +- 7 files changed, 210 insertions(+), 19 deletions(-) create mode 100644 spec/cassettes/12/job/delete_invalid.yml create mode 100644 spec/cassettes/12/job/delete_valid.yml create mode 100644 spec/cassettes/12/job/job.yml create mode 100644 spec/cassettes/12/job/jobs.yml 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/delete.yml b/spec/cassettes/12/token/delete.yml index 17b0ba7..4cf325d 100644 --- a/spec/cassettes/12/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/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/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}"