Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/spec/lib
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2024-01-09 15:11:50 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2024-01-09 15:11:50 +0300
commit3e4f0c1745324d6fc7cc4acc38f2438ff79c8a0b (patch)
tree4c6f7f46953ccccfacdbef2057dccc0610d14421 /spec/lib
parent50b7d6cec7501cf9bae39439a91c991f0de0e8eb (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib')
-rw-r--r--spec/lib/gitlab/github_import/attachments_downloader_spec.rb46
-rw-r--r--spec/lib/gitlab/import_export/all_models.yml1
2 files changed, 30 insertions, 17 deletions
diff --git a/spec/lib/gitlab/github_import/attachments_downloader_spec.rb b/spec/lib/gitlab/github_import/attachments_downloader_spec.rb
index 65c5a7daeb2..c7dd2a9538c 100644
--- a/spec/lib/gitlab/github_import/attachments_downloader_spec.rb
+++ b/spec/lib/gitlab/github_import/attachments_downloader_spec.rb
@@ -8,27 +8,12 @@ RSpec.describe Gitlab::GithubImport::AttachmentsDownloader, feature_category: :i
let_it_be(:file_url) { 'https://example.com/avatar.png' }
let_it_be(:content_type) { 'application/octet-stream' }
- let(:content_length) { 1000 }
let(:chunk_double) { instance_double(HTTParty::ResponseFragment, code: 200) }
- let(:headers_double) do
- instance_double(
- HTTParty::Response,
- code: 200,
- success?: true,
- parsed_response: {},
- headers: {
- 'content-length' => content_length,
- 'content-type' => content_type
- }
- )
- end
describe '#perform' do
before do
allow(Gitlab::HTTP).to receive(:perform_request)
.with(Net::HTTP::Get, file_url, stream_body: true).and_yield(chunk_double)
- allow(Gitlab::HTTP).to receive(:perform_request)
- .with(Net::HTTP::Head, file_url, {}).and_return(headers_double)
end
context 'when file valid' do
@@ -71,12 +56,12 @@ RSpec.describe Gitlab::GithubImport::AttachmentsDownloader, feature_category: :i
end
context 'when file size exceeds limit' do
- let(:content_length) { 26.megabytes }
+ subject(:downloader) { described_class.new(file_url, file_size_limit: 1.byte) }
it 'raises expected exception' do
expect { downloader.perform }.to raise_exception(
Gitlab::GithubImport::AttachmentsDownloader::DownloadError,
- 'File size 26 MiB exceeds limit of 25 MiB'
+ 'File size 57 B exceeds limit of 1 B'
)
end
end
@@ -94,6 +79,33 @@ RSpec.describe Gitlab::GithubImport::AttachmentsDownloader, feature_category: :i
end
end
+ context 'when chunk download returns a redirect' do
+ let(:chunk_double) { instance_double(HTTParty::ResponseFragment, code: 302, http_response: {}) }
+
+ it 'skips the redirect and continues' do
+ allow(Gitlab::HTTP).to receive(:perform_request)
+ .with(Net::HTTP::Get, file_url, stream_body: true).and_yield(chunk_double)
+
+ file = downloader.perform
+
+ expect(File.exist?(file.path)).to eq(true)
+ end
+ end
+
+ context 'when chunk download returns an error' do
+ let(:chunk_double) { instance_double(HTTParty::ResponseFragment, code: 500, http_response: {}) }
+
+ it 'raises expected exception' do
+ allow(Gitlab::HTTP).to receive(:perform_request)
+ .with(Net::HTTP::Get, file_url, stream_body: true).and_yield(chunk_double)
+
+ expect { downloader.perform }.to raise_exception(
+ Gitlab::GithubImport::AttachmentsDownloader::DownloadError,
+ "Error downloading file from #{file_url}. Error code: #{chunk_double.code}"
+ )
+ end
+ end
+
context 'when attachment is behind a github asset endpoint' do
let(:file_url) { "https://github.com/test/project/assets/142635249/4b9f9c90-f060-4845-97cf-b24c558bcb11" }
let(:redirect_url) { "https://github-production-user-asset-6210df.s3.amazonaws.com/142635249/740edb05293e.jpg" }
diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml
index 5d666ccb15a..0967503b21f 100644
--- a/spec/lib/gitlab/import_export/all_models.yml
+++ b/spec/lib/gitlab/import_export/all_models.yml
@@ -439,6 +439,7 @@ builds:
- dast_scanner_profile
- job_annotations
- job_artifacts_annotations
+- project_mirror
bridges:
- user
- pipeline