diff options
author | Olivier Gonzalez <ogonzalez@gitlab.com> | 2018-09-27 21:15:08 +0000 |
---|---|---|
committer | Kamil TrzciĆski <ayufan@ayufan.eu> | 2018-09-27 21:15:08 +0000 |
commit | cfedc0a9f4732afbf39fdf96e9b6a8598faeba5f (patch) | |
tree | 001b6eb5fd448bc6389842bbe1d03b8587a6b55b /spec/models/ci/build_spec.rb | |
parent | 79498893832db7a88e07d8f3e7a629944c80705b (diff) | |
download | gitlab-ce-cfedc0a9f4732afbf39fdf96e9b6a8598faeba5f.tar.gz |
Extend reports to support security features
Diffstat (limited to 'spec/models/ci/build_spec.rb')
-rw-r--r-- | spec/models/ci/build_spec.rb | 76 |
1 files changed, 36 insertions, 40 deletions
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index dbebda20ce0..e82d93d5935 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -176,9 +176,7 @@ describe Ci::Build do it 'does not execute a query for selecting job artifact one by one' do recorded = ActiveRecord::QueryRecorder.new do subject.each do |build| - Ci::JobArtifact::TEST_REPORT_FILE_TYPES.each do |file_type| - build.public_send("job_artifacts_#{file_type}").file.exists? - end + build.job_artifacts.map { |a| a.file.exists? } end end @@ -550,44 +548,22 @@ describe Ci::Build do end end - describe '#has_test_reports?' do - subject { build.has_test_reports? } + describe '#has_job_artifacts?' do + subject { build.has_job_artifacts? } - context 'when build has a test report' do - let(:build) { create(:ci_build, :test_reports) } + context 'when build has a job artifact' do + let(:build) { create(:ci_build, :artifacts) } it { is_expected.to be_truthy } end - context 'when build does not have test reports' do - let(:build) { create(:ci_build, :artifacts) } + context 'when build does not have job artifacts' do + let(:build) { create(:ci_build, :legacy_artifacts) } it { is_expected.to be_falsy } end end - describe '#erase_test_reports!' do - subject { build.erase_test_reports! } - - context 'when build has a test report' do - let!(:build) { create(:ci_build, :test_reports) } - - it 'removes a test report' do - subject - - expect(build.has_test_reports?).to be_falsy - end - end - - context 'when build does not have test reports' do - let!(:build) { create(:ci_build, :artifacts) } - - it 'does not erase anything' do - expect { subject }.not_to change { Ci::JobArtifact.count } - end - end - end - describe '#has_old_trace?' do subject { build.has_old_trace? } @@ -850,8 +826,8 @@ describe Ci::Build do expect(build.artifacts_metadata.exists?).to be_falsy end - it 'removes test reports' do - expect(build.job_artifacts.test_reports.count).to eq(0) + it 'removes all job_artifacts' do + expect(build.job_artifacts.count).to eq(0) end it 'erases build trace in trace file' do @@ -1022,6 +998,32 @@ describe Ci::Build do end end + describe '#erase_erasable_artifacts!' do + let!(:build) { create(:ci_build, :success) } + + subject { build.erase_erasable_artifacts! } + + before do + Ci::JobArtifact.file_types.keys.each do |file_type| + create(:ci_job_artifact, job: build, file_type: file_type, file_format: Ci::JobArtifact::TYPE_AND_FORMAT_PAIRS[file_type.to_sym]) + end + end + + it "erases erasable artifacts" do + subject + + expect(build.job_artifacts.erasable).to be_empty + end + + it "keeps non erasable artifacts" do + subject + + Ci::JobArtifact::NON_ERASABLE_FILE_TYPES.each do |file_type| + expect(build.send("job_artifacts_#{file_type}")).not_to be_nil + end + end + end + describe '#first_pending' do let!(:first) { create(:ci_build, pipeline: pipeline, status: 'pending', created_at: Date.yesterday) } let!(:second) { create(:ci_build, pipeline: pipeline, status: 'pending') } @@ -2844,16 +2846,10 @@ describe Ci::Build do end it 'raises an error' do - expect { subject }.to raise_error(Gitlab::Ci::Parsers::Junit::JunitParserError) + expect { subject }.to raise_error(Gitlab::Ci::Parsers::Test::Junit::JunitParserError) end end end - - context 'when build does not have test reports' do - it 'raises an error' do - expect { subject }.to raise_error(NoMethodError) - end - end end describe '#artifacts_metadata_entry' do |