aboutsummaryrefslogtreecommitdiffstats
path: root/spec/workers
diff options
context:
space:
mode:
authorRobert2017-10-19 15:27:30 +0200
committerRobert2017-10-24 15:28:44 +0200
commit302ed0f642c755b6f96def25eda25e2d2dae8891 (patch)
treeac02735d6768b2da824b0be839d6fcbdf33f7a84 /spec/workers
parentefe056fb645f0380e594f57ad058409194f3becd (diff)
downloadchouette-core-302ed0f642c755b6f96def25eda25e2d2dae8891.tar.bz2
Refs: #4633@3h:
- Discussing Spec - Speced and implemented the corrupt zipfile part Next: - Spec incorrect directory structure part - Implement incorrect directory structure part
Diffstat (limited to 'spec/workers')
-rw-r--r--spec/workers/workbench_import_with_corrupt_zip_spec.rb44
-rw-r--r--spec/workers/workbench_import_worker_spec.rb5
2 files changed, 46 insertions, 3 deletions
diff --git a/spec/workers/workbench_import_with_corrupt_zip_spec.rb b/spec/workers/workbench_import_with_corrupt_zip_spec.rb
new file mode 100644
index 000000000..344943ad7
--- /dev/null
+++ b/spec/workers/workbench_import_with_corrupt_zip_spec.rb
@@ -0,0 +1,44 @@
+RSpec.describe WorkbenchImportWorker do
+
+
+ shared_examples_for 'corrupt zipfile data' do
+ subject { described_class.new }
+ let( :workbench_import ){ create :workbench_import, status: :pending }
+
+ before do
+ # Let us make sure that the name Enterprise will never be forgotten by history,
+ # ahem, I meant, that nothing is uploaded, by forbidding any message to be sent
+ # to HTTPService
+ expect_it.to receive(:download).and_return(downloaded)
+ end
+
+ it 'does not upload' do
+ stub_const 'HTTPService', double('HTTPService')
+ subject.perform(workbench_import.id)
+ end
+
+ it 'does create a message' do
+ expect{ subject.perform(workbench_import.id) }.to change{ workbench_import.messages.count }.by(1)
+ expect( workbench_import.messages.last.criticity ).to eq('error')
+ end
+
+ it 'does not change current step' do
+ expect{ subject.perform(workbench_import.id) }.not_to change{ workbench_import.current_step }
+ end
+
+ it "sets the workbench_import.status to failed" do
+ subject.perform(workbench_import.id)
+ expect( workbench_import.reload.status ).to eq('failed')
+ end
+ end
+
+ context 'empty zip file' do
+ let( :downloaded ){ '' }
+ it_should_behave_like 'corrupt zipfile data'
+ end
+
+ context 'corrupt data' do
+ let( :downloaded ){ very_random }
+ it_should_behave_like 'corrupt zipfile data'
+ end
+end
diff --git a/spec/workers/workbench_import_worker_spec.rb b/spec/workers/workbench_import_worker_spec.rb
index a349b3433..726dd7f8d 100644
--- a/spec/workers/workbench_import_worker_spec.rb
+++ b/spec/workers/workbench_import_worker_spec.rb
@@ -5,7 +5,7 @@ RSpec.describe WorkbenchImportWorker, type: [:worker, :request] do
let( :workbench ){ import.workbench }
let( :referential ){ import.referential }
- let( :api_key ){ build_stubbed :api_key, referential: referential, token: "#{referential.id}-#{SecureRandom.hex}" }
+ let( :api_key ){ build_stubbed :api_key, referential: referential, token: "#{referential.id}-#{random_hex}" }
# http://www.example.com/workbenches/:workbench_id/imports/:id/download
let( :host ){ Rails.configuration.rails_host }
@@ -13,8 +13,7 @@ RSpec.describe WorkbenchImportWorker, type: [:worker, :request] do
let( :downloaded_zip ){ double("downloaded zip") }
let( :download_zip_response ){ OpenStruct.new( body: downloaded_zip ) }
- let( :download_token ){ SecureRandom.urlsafe_base64 }
-
+ let( :download_token ){ random_string }
let( :upload_path ) { api_v1_netex_imports_path(format: :json) }