summaryrefslogtreecommitdiff
path: root/spec/controllers/projects/jobs_controller_spec.rb
diff options
context:
space:
mode:
authorSteve Azzopardi <steveazz@outlook.com>2018-08-30 19:27:04 +0200
committerSteve Azzopardi <steveazz@outlook.com>2018-09-03 18:49:52 +0200
commit71433c5525c68bbf25f171e760e3817af7f217d4 (patch)
treebc2313d5fc916b43a9c7d5fd9020b07d88fd9764 /spec/controllers/projects/jobs_controller_spec.rb
parent4ee2ae14f5bb4349ac4a42388321f49786501484 (diff)
downloadgitlab-ce-71433c5525c68bbf25f171e760e3817af7f217d4.tar.gz
Add JSON schema validation for job API
Start validating against the exciting JSON schema for the job controller JSON response. The JSON schema is not complete since there is quite a lot missing, this will be done in a separate issue.
Diffstat (limited to 'spec/controllers/projects/jobs_controller_spec.rb')
-rw-r--r--spec/controllers/projects/jobs_controller_spec.rb5
1 files changed, 4 insertions, 1 deletions
diff --git a/spec/controllers/projects/jobs_controller_spec.rb b/spec/controllers/projects/jobs_controller_spec.rb
index a0676ab7fda..d9499d7e207 100644
--- a/spec/controllers/projects/jobs_controller_spec.rb
+++ b/spec/controllers/projects/jobs_controller_spec.rb
@@ -149,6 +149,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
it 'exposes needed information' do
expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to match_response_schema('job/job_details')
expect(json_response['raw_path']).to match(%r{jobs/\d+/raw\z})
expect(json_response['merge_request']['path']).to match(%r{merge_requests/\d+\z})
expect(json_response['new_issue_path']).to include('/issues/new')
@@ -170,6 +171,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
it 'exposes needed information' do
expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to match_response_schema('job/job_details')
expect(json_response['artifact']['download_path']).to match(%r{artifacts/download})
expect(json_response['artifact']['browse_path']).to match(%r{artifacts/browse})
expect(json_response['artifact']).not_to have_key(:expired)
@@ -178,7 +180,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
expect(json_response.dig('merge_request', 'path')).to match(%r{merge_requests/\d+\z})
end
- context 'when request JSON for successful job and expired artifacts' do
+ context 'when request JSON for successful job with expired artifacts' do
let(:merge_request) { create(:merge_request, source_project: project) }
let(:job) { create(:ci_build, :success, :artifacts, :expired, pipeline: pipeline) }
@@ -193,6 +195,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
it 'exposes needed information' do
expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to match_response_schema('job/job_details')
expect(json_response['artifact']).not_to have_key(:download_path)
expect(json_response['artifact']).not_to have_key(:browse_path)
expect(json_response['artifact']['expired']).to eq(true)