diff options
Diffstat (limited to 'spec/controllers')
-rw-r--r-- | spec/controllers/projects/jobs_controller_spec.rb | 53 |
1 files changed, 50 insertions, 3 deletions
diff --git a/spec/controllers/projects/jobs_controller_spec.rb b/spec/controllers/projects/jobs_controller_spec.rb index 1aca44c6e74..a0676ab7fda 100644 --- a/spec/controllers/projects/jobs_controller_spec.rb +++ b/spec/controllers/projects/jobs_controller_spec.rb @@ -135,7 +135,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do end end - context 'when requesting JSON' do + context 'when requesting JSON with failed job' do let(:merge_request) { create(:merge_request, source_project: project) } before do @@ -150,9 +150,56 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do it 'exposes needed information' do expect(response).to have_gitlab_http_status(:ok) 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') + end + end + + context 'when request JSON for successful job' do + let(:merge_request) { create(:merge_request, source_project: project) } + let(:job) { create(:ci_build, :success, :artifacts, pipeline: pipeline) } + + before do + project.add_developer(user) + sign_in(user) + + allow_any_instance_of(Ci::Build).to receive(:merge_request).and_return(merge_request) + + get_show(id: job.id, format: :json) + end + + it 'exposes needed information' do + expect(response).to have_gitlab_http_status(:ok) + 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) + expect(json_response['artifact']).not_to have_key(:expired_at) + expect(json_response['raw_path']).to match(%r{jobs/\d+/raw\z}) expect(json_response.dig('merge_request', 'path')).to match(%r{merge_requests/\d+\z}) - expect(json_response['new_issue_path']) - .to include('/issues/new') + end + + context 'when request JSON for successful job and expired artifacts' do + let(:merge_request) { create(:merge_request, source_project: project) } + let(:job) { create(:ci_build, :success, :artifacts, :expired, pipeline: pipeline) } + + before do + project.add_developer(user) + sign_in(user) + + allow_any_instance_of(Ci::Build).to receive(:merge_request).and_return(merge_request) + + get_show(id: job.id, format: :json) + end + + it 'exposes needed information' do + expect(response).to have_gitlab_http_status(:ok) + 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) + expect(json_response['artifact']['expire_at']).not_to be_empty + expect(json_response['raw_path']).to match(%r{jobs/\d+/raw\z}) + expect(json_response.dig('merge_request', 'path')).to match(%r{merge_requests/\d+\z}) + end end end |