From 74ddc80590053b04b90c35ae3e1f46bfbd9d0d15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mica=C3=ABl=20Bergeron?= Date: Mon, 29 Jan 2018 16:06:17 -0500 Subject: add the uploader context to the upload model --- spec/uploaders/file_uploader_spec.rb | 2 +- spec/uploaders/gitlab_uploader_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'spec/uploaders') diff --git a/spec/uploaders/file_uploader_spec.rb b/spec/uploaders/file_uploader_spec.rb index a72f853df75..92f7467d247 100644 --- a/spec/uploaders/file_uploader_spec.rb +++ b/spec/uploaders/file_uploader_spec.rb @@ -40,7 +40,7 @@ describe FileUploader do end describe 'initialize' do - let(:uploader) { described_class.new(double, 'secret') } + let(:uploader) { described_class.new(double, secret: 'secret') } it 'accepts a secret parameter' do expect(described_class).not_to receive(:generate_secret) diff --git a/spec/uploaders/gitlab_uploader_spec.rb b/spec/uploaders/gitlab_uploader_spec.rb index a144b39f74f..60e35dcf235 100644 --- a/spec/uploaders/gitlab_uploader_spec.rb +++ b/spec/uploaders/gitlab_uploader_spec.rb @@ -4,7 +4,7 @@ require 'carrierwave/storage/fog' describe GitlabUploader do let(:uploader_class) { Class.new(described_class) } - subject { uploader_class.new } + subject { uploader_class.new(double) } describe '#file_storage?' do context 'when file storage is used' do -- cgit v1.2.3 From ce84d1835332932e25ebdc2cfbe44ff301328a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mica=C3=ABl=20Bergeron?= Date: Tue, 30 Jan 2018 14:38:10 -0500 Subject: apply fixes from feedback --- spec/uploaders/file_uploader_spec.rb | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'spec/uploaders') diff --git a/spec/uploaders/file_uploader_spec.rb b/spec/uploaders/file_uploader_spec.rb index 92f7467d247..a559681a079 100644 --- a/spec/uploaders/file_uploader_spec.rb +++ b/spec/uploaders/file_uploader_spec.rb @@ -54,4 +54,31 @@ describe FileUploader do expect(uploader.secret).to eq('secret') end end + + describe '#upload=' do + let(:secret) { SecureRandom.hex } + let(:upload) { create(:upload, :issuable_upload, secret: secret, filename: 'file.txt') } + + it 'handles nil' do + expect(uploader).not_to receive(:apply_context!) + + uploader.upload = nil + end + + it 'extract the uploader context from it' do + expect(uploader).to receive(:apply_context!).with(a_hash_including(secret: secret, identifier: 'file.txt')) + + uploader.upload = upload + end + + context 'uploader_context is empty' do + it 'fallbacks to regex based extraction' do + expect(upload).to receive(:uploader_context).and_return({}) + + uploader.upload = upload + expect(uploader.secret).to eq(secret) + expect(uploader.instance_variable_get(:@identifier)).to eq('file.txt') + end + end + end end -- cgit v1.2.3 From c9ed3b2d4d208b7452fc2e057f11d28356c08887 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 30 Jan 2018 01:56:12 +0900 Subject: Add essential tests --- spec/uploaders/job_artifact_uploader_spec.rb | 43 ++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'spec/uploaders') diff --git a/spec/uploaders/job_artifact_uploader_spec.rb b/spec/uploaders/job_artifact_uploader_spec.rb index d606404e95d..ae631f23ae2 100644 --- a/spec/uploaders/job_artifact_uploader_spec.rb +++ b/spec/uploaders/job_artifact_uploader_spec.rb @@ -11,6 +11,49 @@ describe JobArtifactUploader do cache_dir: %r[artifacts/tmp/cache], work_dir: %r[artifacts/tmp/work] + describe '#open' do + subject { uploader.open } + + context 'when trace is stored in File storage' do + context 'when file exists' do + let(:file) do + fixture_file_upload( + Rails.root.join('spec/fixtures/trace/sample_trace'), 'text/plain') + end + + before do + uploader.store!(file) + end + + it 'returns io stream' do + is_expected.to be_a(IO) + end + end + + context 'when file does not exist' do + it 'returns nil' do + is_expected.to be_nil + end + end + end + end + + describe '#filename' do + subject { uploader.filename } + + context 'when artifact file_type is archive' do + let(:job_artifact) { create(:ci_job_artifact, :archive) } + + it { is_expected.to be_nil } + end + + context 'when artifact file_type is trace' do + let(:job_artifact) { create(:ci_job_artifact, :trace) } + + it { is_expected.to eq('trace.log') } + end + end + context 'file is stored in valid local_path' do let(:file) do fixture_file_upload( -- cgit v1.2.3 From d30e71b381b9cf33ed61b04c25c258c11942c79b Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 5 Feb 2018 19:03:02 +0900 Subject: Fix tests for Drop filename enforcement --- spec/uploaders/job_artifact_uploader_spec.rb | 16 ---------------- 1 file changed, 16 deletions(-) (limited to 'spec/uploaders') diff --git a/spec/uploaders/job_artifact_uploader_spec.rb b/spec/uploaders/job_artifact_uploader_spec.rb index ae631f23ae2..5612ec7e661 100644 --- a/spec/uploaders/job_artifact_uploader_spec.rb +++ b/spec/uploaders/job_artifact_uploader_spec.rb @@ -38,22 +38,6 @@ describe JobArtifactUploader do end end - describe '#filename' do - subject { uploader.filename } - - context 'when artifact file_type is archive' do - let(:job_artifact) { create(:ci_job_artifact, :archive) } - - it { is_expected.to be_nil } - end - - context 'when artifact file_type is trace' do - let(:job_artifact) { create(:ci_job_artifact, :trace) } - - it { is_expected.to eq('trace.log') } - end - end - context 'file is stored in valid local_path' do let(:file) do fixture_file_upload( -- cgit v1.2.3 From d84650917ae3eee95fc0aae31ad49fe824fe71d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mica=C3=ABl=20Bergeron?= Date: Tue, 30 Jan 2018 09:21:28 -0500 Subject: remove file after `Upload#destroy` it will also automatically prune empty directories for `FileUploader`-based uploaders. --- spec/uploaders/file_uploader_spec.rb | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'spec/uploaders') diff --git a/spec/uploaders/file_uploader_spec.rb b/spec/uploaders/file_uploader_spec.rb index a559681a079..80af2a206af 100644 --- a/spec/uploaders/file_uploader_spec.rb +++ b/spec/uploaders/file_uploader_spec.rb @@ -48,6 +48,29 @@ describe FileUploader do end end + describe 'callbacks' do + describe '#prune_store_dir after :remove' do + before do + uploader.store!(fixture_file_upload('spec/fixtures/doc_sample.txt')) + end + + def store_dir + File.expand_path(uploader.store_dir, uploader.root) + end + + it 'is called' do + expect(uploader).to receive(:prune_store_dir).once + + uploader.remove! + end + + it 'prune the store directory' do + expect { uploader.remove! } + .to change { File.exists?(store_dir) }.from(true).to(false) + end + end + end + describe '#secret' do it 'generates a secret if none is provided' do expect(described_class).to receive(:generate_secret).and_return('secret') -- cgit v1.2.3 From 939391af7bc471f1588ab75ab0cf08d8e4286a05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mica=C3=ABl=20Bergeron?= Date: Wed, 31 Jan 2018 10:59:35 -0500 Subject: improvements from feedback --- spec/uploaders/file_uploader_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'spec/uploaders') diff --git a/spec/uploaders/file_uploader_spec.rb b/spec/uploaders/file_uploader_spec.rb index 80af2a206af..6a92e7fae51 100644 --- a/spec/uploaders/file_uploader_spec.rb +++ b/spec/uploaders/file_uploader_spec.rb @@ -66,7 +66,7 @@ describe FileUploader do it 'prune the store directory' do expect { uploader.remove! } - .to change { File.exists?(store_dir) }.from(true).to(false) + .to change { File.exist?(store_dir) }.from(true).to(false) end end end -- cgit v1.2.3