From 7a397526302c4ea872cdb03579e50b9306f2ad95 Mon Sep 17 00:00:00 2001 From: Christophe Robillard Date: Fri, 22 Mar 2024 10:05:47 +0100 Subject: [PATCH] rename root directory in zip export --- app/services/downloadable_file_service.rb | 5 +- .../procedure_archive_service_spec.rb | 50 +++++++++---------- .../services/procedure_export_service_spec.rb | 11 ++-- 3 files changed, 34 insertions(+), 32 deletions(-) diff --git a/app/services/downloadable_file_service.rb b/app/services/downloadable_file_service.rb index 97909578b..c6d87e5b1 100644 --- a/app/services/downloadable_file_service.rb +++ b/app/services/downloadable_file_service.rb @@ -1,9 +1,10 @@ class DownloadableFileService ARCHIVE_CREATION_DIR = ENV.fetch('ARCHIVE_CREATION_DIR') { '/tmp' } + EXPORT_DIRNAME = 'export' def self.download_and_zip(procedure, attachments, filename, &block) Dir.mktmpdir(nil, ARCHIVE_CREATION_DIR) do |tmp_dir| - export_dir = File.join(tmp_dir, filename) + export_dir = File.join(tmp_dir, EXPORT_DIRNAME) zip_path = File.join(ARCHIVE_CREATION_DIR, "#{filename}.zip") begin @@ -15,7 +16,7 @@ class DownloadableFileService Dir.chdir(tmp_dir) do File.delete(zip_path) if File.exist?(zip_path) - system 'zip', '-0', '-r', zip_path, filename + system 'zip', '-0', '-r', zip_path, EXPORT_DIRNAME end yield(zip_path) ensure diff --git a/spec/services/procedure_archive_service_spec.rb b/spec/services/procedure_archive_service_spec.rb index 8edd88065..40b8caa9f 100644 --- a/spec/services/procedure_archive_service_spec.rb +++ b/spec/services/procedure_archive_service_spec.rb @@ -33,11 +33,11 @@ describe ProcedureArchiveService do files = ZipTricks::FileReader.read_zip_structure(io: f) structure = [ - "#{service.send(:zip_root_folder, archive)}/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/pieces_justificatives/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/pieces_justificatives/attestation-dossier--05-03-2021-00-00-#{dossier.attestation.pdf.id % 10000}.pdf", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/export-#{dossier.id}-05-03-2021-00-00-#{dossier.id % 10000}.pdf" + "export/", + "export/dossier-#{dossier.id}/", + "export/dossier-#{dossier.id}/pieces_justificatives/", + "export/dossier-#{dossier.id}/pieces_justificatives/attestation-dossier--05-03-2021-00-00-#{dossier.attestation.pdf.id % 10000}.pdf", + "export/dossier-#{dossier.id}/export-#{dossier.id}-05-03-2021-00-00-#{dossier.id % 10000}.pdf" ] expect(files.map(&:filename)).to match_array(structure) end @@ -53,11 +53,11 @@ describe ProcedureArchiveService do archive.file.open do |f| files = ZipTricks::FileReader.read_zip_structure(io: f) structure = [ - "#{service.send(:zip_root_folder, archive)}/", - "#{service.send(:zip_root_folder, archive)}/-LISTE-DES-FICHIERS-EN-ERREURS.txt", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/pieces_justificatives/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/export-#{dossier.id}-05-03-2021-00-00-#{dossier.id % 10000}.pdf" + "export/", + "export/-LISTE-DES-FICHIERS-EN-ERREURS.txt", + "export/dossier-#{dossier.id}/", + "export/dossier-#{dossier.id}/pieces_justificatives/", + "export/dossier-#{dossier.id}/export-#{dossier.id}-05-03-2021-00-00-#{dossier.id % 10000}.pdf" ] expect(files.map(&:filename)).to match_array(structure) end @@ -100,12 +100,12 @@ describe ProcedureArchiveService do archive.file.open do |f| zip_entries = ZipTricks::FileReader.read_zip_structure(io: f) structure = [ - "#{service.send(:zip_root_folder, archive)}/", - "#{service.send(:zip_root_folder, archive)}/-LISTE-DES-FICHIERS-EN-ERREURS.txt", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/export-dossier-05-03-2020-00-00-1.pdf", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/pieces_justificatives/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/export-#{dossier.id}-05-03-2021-00-00-#{dossier.id % 10000}.pdf" + "export/", + "export/-LISTE-DES-FICHIERS-EN-ERREURS.txt", + "export/dossier-#{dossier.id}/", + "export/dossier-#{dossier.id}/export-dossier-05-03-2020-00-00-1.pdf", + "export/dossier-#{dossier.id}/pieces_justificatives/", + "export/dossier-#{dossier.id}/export-#{dossier.id}-05-03-2021-00-00-#{dossier.id % 10000}.pdf" ] expect(zip_entries.map(&:filename)).to match_array(structure) zip_entries.map do |entry| @@ -134,15 +134,15 @@ describe ProcedureArchiveService do archive.file.open do |f| files = ZipTricks::FileReader.read_zip_structure(io: f) structure = [ - "#{service.send(:zip_root_folder, archive)}/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/pieces_justificatives/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/pieces_justificatives/attestation-dossier--05-03-2020-00-00-#{dossier.attestation.pdf.id % 10000}.pdf", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier.id}/export-#{dossier.id}-05-03-2020-00-00-#{dossier.id % 10000}.pdf", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier_2020.id}/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier_2020.id}/export-#{dossier_2020.id}-05-03-2020-00-00-#{dossier_2020.id % 10000}.pdf", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier_2020.id}/pieces_justificatives/", - "#{service.send(:zip_root_folder, archive)}/dossier-#{dossier_2020.id}/pieces_justificatives/attestation-dossier--05-03-2020-00-00-#{dossier_2020.attestation.pdf.id % 10000}.pdf" + "export/", + "export/dossier-#{dossier.id}/", + "export/dossier-#{dossier.id}/pieces_justificatives/", + "export/dossier-#{dossier.id}/pieces_justificatives/attestation-dossier--05-03-2020-00-00-#{dossier.attestation.pdf.id % 10000}.pdf", + "export/dossier-#{dossier.id}/export-#{dossier.id}-05-03-2020-00-00-#{dossier.id % 10000}.pdf", + "export/dossier-#{dossier_2020.id}/", + "export/dossier-#{dossier_2020.id}/export-#{dossier_2020.id}-05-03-2020-00-00-#{dossier_2020.id % 10000}.pdf", + "export/dossier-#{dossier_2020.id}/pieces_justificatives/", + "export/dossier-#{dossier_2020.id}/pieces_justificatives/attestation-dossier--05-03-2020-00-00-#{dossier_2020.attestation.pdf.id % 10000}.pdf" ] expect(files.map(&:filename)).to match_array(structure) end diff --git a/spec/services/procedure_export_service_spec.rb b/spec/services/procedure_export_service_spec.rb index 7f783eafd..aa2fb3733 100644 --- a/spec/services/procedure_export_service_spec.rb +++ b/spec/services/procedure_export_service_spec.rb @@ -540,12 +540,13 @@ describe ProcedureExportService do File.write('tmp.zip', subject.download, mode: 'wb') File.open('tmp.zip') do |fd| files = ZipTricks::FileReader.read_zip_structure(io: fd) + base_fn = 'export' structure = [ - "#{service.send(:base_filename)}/", - "#{service.send(:base_filename)}/dossier-#{dossier.id}/", - "#{service.send(:base_filename)}/dossier-#{dossier.id}/pieces_justificatives/", - "#{service.send(:base_filename)}/dossier-#{dossier.id}/#{ActiveStorage::DownloadableFile.timestamped_filename(ActiveStorage::Attachment.where(record_type: "Champ").first)}", - "#{service.send(:base_filename)}/dossier-#{dossier.id}/#{ActiveStorage::DownloadableFile.timestamped_filename(dossier_exports.first.first)}" + "#{base_fn}/", + "#{base_fn}/dossier-#{dossier.id}/", + "#{base_fn}/dossier-#{dossier.id}/pieces_justificatives/", + "#{base_fn}/dossier-#{dossier.id}/#{ActiveStorage::DownloadableFile.timestamped_filename(ActiveStorage::Attachment.where(record_type: "Champ").first)}", + "#{base_fn}/dossier-#{dossier.id}/#{ActiveStorage::DownloadableFile.timestamped_filename(dossier_exports.first.first)}" ] expect(files.size).to eq(structure.size) expect(files.map(&:filename)).to match_array(structure)