Commit 470e83ee authored by Lin Jen-Shin's avatar Lin Jen-Shin

Make those files as close as EE to reduce conflicts

parent b886a75d
...@@ -300,44 +300,53 @@ describe API::Jobs do ...@@ -300,44 +300,53 @@ describe API::Jobs do
end end
describe 'GET /projects/:id/jobs/:job_id/artifacts' do describe 'GET /projects/:id/jobs/:job_id/artifacts' do
before do shared_examples 'downloads artifact' do
get api("/projects/#{project.id}/jobs/#{job.id}/artifacts", api_user) let(:download_headers) do
{ 'Content-Transfer-Encoding' => 'binary',
'Content-Disposition' => 'attachment; filename=ci_build_artifacts.zip' }
end
it 'returns specific job artifacts' do
expect(response).to have_gitlab_http_status(200)
expect(response.headers).to include(download_headers)
expect(response.body).to match_file(job.artifacts_file.file.file)
end
end end
context 'job with artifacts' do context 'normal authentication' do
let(:job) { create(:ci_build, :artifacts, pipeline: pipeline) } context 'job with artifacts' do
context 'when artifacts are stored locally' do
let(:job) { create(:ci_build, :artifacts, pipeline: pipeline) }
context 'authorized user' do before do
let(:download_headers) do get api("/projects/#{project.id}/jobs/#{job.id}/artifacts", api_user)
{ 'Content-Transfer-Encoding' => 'binary', end
'Content-Disposition' => 'attachment; filename=ci_build_artifacts.zip' }
end
it 'returns specific job artifacts' do context 'authorized user' do
expect(response).to have_gitlab_http_status(200) it_behaves_like 'downloads artifact'
expect(response.headers).to include(download_headers) end
expect(response.body).to match_file(job.artifacts_file.file.file)
context 'unauthorized user' do
let(:api_user) { nil }
it 'does not return specific job artifacts' do
expect(response).to have_gitlab_http_status(404)
end
end
end end
end
context 'when anonymous user is accessing private artifacts' do it 'does not return job artifacts if not uploaded' do
let(:api_user) { nil } get api("/projects/#{project.id}/jobs/#{job.id}/artifacts", api_user)
it 'hides artifacts and rejects request' do
expect(project).to be_private
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(404)
end end
end end
end end
it 'does not return job artifacts if not uploaded' do
expect(response).to have_gitlab_http_status(404)
end
end end
describe 'GET /projects/:id/artifacts/:ref_name/download?job=name' do describe 'GET /projects/:id/artifacts/:ref_name/download?job=name' do
let(:api_user) { reporter } let(:api_user) { reporter }
let(:job) { create(:ci_build, :artifacts, pipeline: pipeline) } let(:job) { create(:ci_build, :artifacts, pipeline: pipeline, user: api_user) }
before do before do
job.success job.success
...@@ -396,14 +405,16 @@ describe API::Jobs do ...@@ -396,14 +405,16 @@ describe API::Jobs do
context 'find proper job' do context 'find proper job' do
shared_examples 'a valid file' do shared_examples 'a valid file' do
let(:download_headers) do context 'when artifacts are stored locally' do
{ 'Content-Transfer-Encoding' => 'binary', let(:download_headers) do
'Content-Disposition' => { 'Content-Transfer-Encoding' => 'binary',
"attachment; filename=#{job.artifacts_file.filename}" } 'Content-Disposition' =>
end "attachment; filename=#{job.artifacts_file.filename}" }
end
it { expect(response).to have_gitlab_http_status(200) } it { expect(response).to have_gitlab_http_status(200) }
it { expect(response.headers).to include(download_headers) } it { expect(response.headers).to include(download_headers) }
end
end end
context 'with regular branch' do context 'with regular branch' do
......
...@@ -4,16 +4,18 @@ describe API::V3::Builds do ...@@ -4,16 +4,18 @@ describe API::V3::Builds do
set(:user) { create(:user) } set(:user) { create(:user) }
let(:api_user) { user } let(:api_user) { user }
set(:project) { create(:project, :repository, creator: user, public_builds: false) } set(:project) { create(:project, :repository, creator: user, public_builds: false) }
set(:developer) { create(:project_member, :developer, user: user, project: project) } let!(:developer) { create(:project_member, :developer, user: user, project: project) }
set(:reporter) { create(:project_member, :reporter, project: project) } let(:reporter) { create(:project_member, :reporter, project: project) }
set(:guest) { create(:project_member, :guest, project: project) } let(:guest) { create(:project_member, :guest, project: project) }
set(:pipeline) { create(:ci_empty_pipeline, project: project, sha: project.commit.id, ref: project.default_branch) } let(:pipeline) { create(:ci_empty_pipeline, project: project, sha: project.commit.id, ref: project.default_branch) }
let!(:build) { create(:ci_build, pipeline: pipeline) } let(:build) { create(:ci_build, pipeline: pipeline) }
describe 'GET /projects/:id/builds ' do describe 'GET /projects/:id/builds ' do
let(:query) { '' } let(:query) { '' }
before do |example| before do |example|
build
create(:ci_build, :skipped, pipeline: pipeline) create(:ci_build, :skipped, pipeline: pipeline)
unless example.metadata[:skip_before_request] unless example.metadata[:skip_before_request]
...@@ -110,6 +112,10 @@ describe API::V3::Builds do ...@@ -110,6 +112,10 @@ describe API::V3::Builds do
end end
describe 'GET /projects/:id/repository/commits/:sha/builds' do describe 'GET /projects/:id/repository/commits/:sha/builds' do
before do
build
end
context 'when commit does not exist in repository' do context 'when commit does not exist in repository' do
before do before do
get v3_api("/projects/#{project.id}/repository/commits/1a271fd1/builds", api_user) get v3_api("/projects/#{project.id}/repository/commits/1a271fd1/builds", api_user)
...@@ -214,18 +220,20 @@ describe API::V3::Builds do ...@@ -214,18 +220,20 @@ describe API::V3::Builds do
end end
context 'job with artifacts' do context 'job with artifacts' do
let(:build) { create(:ci_build, :artifacts, pipeline: pipeline) } context 'when artifacts are stored locally' do
let(:build) { create(:ci_build, :artifacts, pipeline: pipeline) }
context 'authorized user' do context 'authorized user' do
let(:download_headers) do let(:download_headers) do
{ 'Content-Transfer-Encoding' => 'binary', { 'Content-Transfer-Encoding' => 'binary',
'Content-Disposition' => 'attachment; filename=ci_build_artifacts.zip' } 'Content-Disposition' => 'attachment; filename=ci_build_artifacts.zip' }
end end
it 'returns specific job artifacts' do it 'returns specific job artifacts' do
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(200)
expect(response.headers).to include(download_headers) expect(response.headers).to include(download_headers)
expect(response.body).to match_file(build.artifacts_file.file.file) expect(response.body).to match_file(build.artifacts_file.file.file)
end
end end
end end
...@@ -303,14 +311,16 @@ describe API::V3::Builds do ...@@ -303,14 +311,16 @@ describe API::V3::Builds do
context 'find proper job' do context 'find proper job' do
shared_examples 'a valid file' do shared_examples 'a valid file' do
let(:download_headers) do context 'when artifacts are stored locally' do
{ 'Content-Transfer-Encoding' => 'binary', let(:download_headers) do
'Content-Disposition' => { 'Content-Transfer-Encoding' => 'binary',
"attachment; filename=#{build.artifacts_file.filename}" } 'Content-Disposition' =>
end "attachment; filename=#{build.artifacts_file.filename}" }
end
it { expect(response).to have_gitlab_http_status(200) } it { expect(response).to have_gitlab_http_status(200) }
it { expect(response.headers).to include(download_headers) } it { expect(response.headers).to include(download_headers) }
end
end end
context 'with regular branch' do context 'with regular branch' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment