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
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/checks/file_size_check/allow_existing_oversized_blobs_spec.rb')
-rw-r--r--spec/lib/gitlab/checks/file_size_check/allow_existing_oversized_blobs_spec.rb86
1 files changed, 86 insertions, 0 deletions
diff --git a/spec/lib/gitlab/checks/file_size_check/allow_existing_oversized_blobs_spec.rb b/spec/lib/gitlab/checks/file_size_check/allow_existing_oversized_blobs_spec.rb
new file mode 100644
index 00000000000..3b52d2e1364
--- /dev/null
+++ b/spec/lib/gitlab/checks/file_size_check/allow_existing_oversized_blobs_spec.rb
@@ -0,0 +1,86 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Checks::FileSizeCheck::AllowExistingOversizedBlobs, feature_category: :source_code_management do
+ subject { checker.find }
+
+ let_it_be(:project) { create(:project, :public, :repository) }
+ let(:checker) do
+ described_class.new(
+ project: project,
+ changes: changes,
+ file_size_limit_megabytes: 1)
+ end
+
+ describe '#find' do
+ let(:branch_name) { SecureRandom.uuid }
+ let(:other_branch_name) { SecureRandom.uuid }
+ let(:filename) { 'log.log' }
+ let(:create_file) do
+ project.repository.create_file(
+ project.owner,
+ filename,
+ initial_contents,
+ branch_name: branch_name,
+ message: 'whatever'
+ )
+ end
+
+ let(:changed_ref) do
+ project.repository.update_file(
+ project.owner,
+ filename,
+ changed_contents,
+ branch_name: other_branch_name,
+ start_branch_name: branch_name,
+ message: 'whatever'
+ )
+ end
+
+ let(:changes) { [oldrev: create_file, newrev: changed_ref] }
+
+ before do
+ # set up a branch
+ create_file
+
+ # branch off that branch
+ changed_ref
+
+ # delete stuff so it can be picked up by new_blobs
+ project.repository.delete_branch(other_branch_name)
+ end
+
+ context 'when changing from valid to oversized' do
+ let(:initial_contents) { 'a' }
+ let(:changed_contents) { 'a' * ((2**20) + 1) } # 1 MB + 1 byte
+
+ it 'returns an array with blobs that became oversized' do
+ blob = subject.first
+ expect(blob.path).to eq(filename)
+ expect(subject).to contain_exactly(blob)
+ end
+ end
+
+ context 'when changing from oversized to oversized' do
+ let(:initial_contents) { 'a' * ((2**20) + 1) } # 1 MB + 1 byte
+ let(:changed_contents) { 'a' * ((2**20) + 2) } # 1 MB + 1 byte
+
+ it { is_expected.to be_blank }
+ end
+
+ context 'when changing from oversized to valid' do
+ let(:initial_contents) { 'a' * ((2**20) + 1) } # 1 MB + 1 byte
+ let(:changed_contents) { 'aa' }
+
+ it { is_expected.to be_blank }
+ end
+
+ context 'when changing from valid to valid' do
+ let(:initial_contents) { 'abc' }
+ let(:changed_contents) { 'def' }
+
+ it { is_expected.to be_blank }
+ end
+ end
+end