From afef38533727cf32a7be324243a25b4db5eb5498 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 7 Nov 2017 02:47:05 +0900 Subject: Add doc. Fix spec. Add erase_build in protected_ref rule --- spec/requests/api/jobs_spec.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'spec/requests/api/jobs_spec.rb') diff --git a/spec/requests/api/jobs_spec.rb b/spec/requests/api/jobs_spec.rb index 3b7b9c889e7..8196046f6ab 100644 --- a/spec/requests/api/jobs_spec.rb +++ b/spec/requests/api/jobs_spec.rb @@ -491,6 +491,8 @@ describe API::Jobs do describe 'POST /projects/:id/jobs/:job_id/erase' do before do + project.add_master(user) + post api("/projects/#{project.id}/jobs/#{job.id}/erase", user) end -- cgit v1.2.3 From d8fb903ef7db26566cfacf76ce10e9e7917b8f38 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 7 Nov 2017 22:45:55 +0900 Subject: Improve spec --- spec/requests/api/jobs_spec.rb | 62 +++++++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 19 deletions(-) (limited to 'spec/requests/api/jobs_spec.rb') diff --git a/spec/requests/api/jobs_spec.rb b/spec/requests/api/jobs_spec.rb index 3e0682055fe..327b1176088 100644 --- a/spec/requests/api/jobs_spec.rb +++ b/spec/requests/api/jobs_spec.rb @@ -500,35 +500,59 @@ describe API::Jobs do end describe 'POST /projects/:id/jobs/:job_id/erase' do - before do - project.add_master(user) + context 'when a master erases a build' do + before do + project.add_master(user) - post api("/projects/#{project.id}/jobs/#{job.id}/erase", user) - end + post api("/projects/#{project.id}/jobs/#{job.id}/erase", user) + end + + context 'job is erasable' do + let(:job) { create(:ci_build, :trace, :artifacts, :success, project: project, pipeline: pipeline) } - context 'job is erasable' do - let(:job) { create(:ci_build, :trace, :artifacts, :success, project: project, pipeline: pipeline) } + it 'erases job content' do + expect(response).to have_gitlab_http_status(201) + expect(job).not_to have_trace + expect(job.artifacts_file.exists?).to be_falsy + expect(job.artifacts_metadata.exists?).to be_falsy + end + + it 'updates job' do + job.reload - it 'erases job content' do - expect(response).to have_gitlab_http_status(201) - expect(job).not_to have_trace - expect(job.artifacts_file.exists?).to be_falsy - expect(job.artifacts_metadata.exists?).to be_falsy + expect(job.erased_at).to be_truthy + expect(job.erased_by).to eq(user) + end end - it 'updates job' do - job.reload + context 'job is not erasable' do + let(:job) { create(:ci_build, :trace, project: project, pipeline: pipeline) } - expect(job.erased_at).to be_truthy - expect(job.erased_by).to eq(user) + it 'responds with forbidden' do + expect(response).to have_gitlab_http_status(403) + end end end - context 'job is not erasable' do - let(:job) { create(:ci_build, :trace, project: project, pipeline: pipeline) } + context 'when a developer erases a build' do + before do + project.add_developer(user) - it 'responds with forbidden' do - expect(response).to have_gitlab_http_status(403) + post api("/projects/#{project.id}/jobs/#{job.id}/erase", user) + end + + let(:job) { create(:ci_build, :trace, :artifacts, :success, project: project, pipeline: pipeline, user: owner) } + + context 'when the build was created by the developer' do + let(:owner) { user } + + it { expect(response).to have_gitlab_http_status(201) } + end + + context 'when the build was created by the other' do + let(:owner) { create(:user) } + + it { expect(response).to have_gitlab_http_status(403) } end end end -- cgit v1.2.3 From 8029c92e1c81e4c9ab55704bff82cca5ff893a03 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 7 Nov 2017 22:57:58 +0900 Subject: Reduce changes --- spec/requests/api/jobs_spec.rb | 51 +++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 28 deletions(-) (limited to 'spec/requests/api/jobs_spec.rb') diff --git a/spec/requests/api/jobs_spec.rb b/spec/requests/api/jobs_spec.rb index 327b1176088..2a83213e87a 100644 --- a/spec/requests/api/jobs_spec.rb +++ b/spec/requests/api/jobs_spec.rb @@ -500,47 +500,42 @@ describe API::Jobs do end describe 'POST /projects/:id/jobs/:job_id/erase' do - context 'when a master erases a build' do - before do - project.add_master(user) - - post api("/projects/#{project.id}/jobs/#{job.id}/erase", user) - end + let(:role) { :master } - context 'job is erasable' do - let(:job) { create(:ci_build, :trace, :artifacts, :success, project: project, pipeline: pipeline) } + before do + project.team << [user, role] - it 'erases job content' do - expect(response).to have_gitlab_http_status(201) - expect(job).not_to have_trace - expect(job.artifacts_file.exists?).to be_falsy - expect(job.artifacts_metadata.exists?).to be_falsy - end + post api("/projects/#{project.id}/jobs/#{job.id}/erase", user) + end - it 'updates job' do - job.reload + context 'job is erasable' do + let(:job) { create(:ci_build, :trace, :artifacts, :success, project: project, pipeline: pipeline) } - expect(job.erased_at).to be_truthy - expect(job.erased_by).to eq(user) - end + it 'erases job content' do + expect(response).to have_gitlab_http_status(201) + expect(job).not_to have_trace + expect(job.artifacts_file.exists?).to be_falsy + expect(job.artifacts_metadata.exists?).to be_falsy end - context 'job is not erasable' do - let(:job) { create(:ci_build, :trace, project: project, pipeline: pipeline) } + it 'updates job' do + job.reload - it 'responds with forbidden' do - expect(response).to have_gitlab_http_status(403) - end + expect(job.erased_at).to be_truthy + expect(job.erased_by).to eq(user) end end - context 'when a developer erases a build' do - before do - project.add_developer(user) + context 'job is not erasable' do + let(:job) { create(:ci_build, :trace, project: project, pipeline: pipeline) } - post api("/projects/#{project.id}/jobs/#{job.id}/erase", user) + it 'responds with forbidden' do + expect(response).to have_gitlab_http_status(403) end + end + context 'when a developer erases a build' do + let(:role) { :developer } let(:job) { create(:ci_build, :trace, :artifacts, :success, project: project, pipeline: pipeline, user: owner) } context 'when the build was created by the developer' do -- cgit v1.2.3