Merge branch 'fix/gb/handle-max-pages-artifacts-size-correctly' into 'master'
Handle maximum pages artifacts size correctly Closes #35317 See merge request !13072
This commit is contained in:
commit
0c563225b6
|
@ -130,7 +130,11 @@ module Projects
|
|||
end
|
||||
|
||||
def max_size
|
||||
current_application_settings.max_pages_size.megabytes || MAX_SIZE
|
||||
max_pages_size = current_application_settings.max_pages_size.megabytes
|
||||
|
||||
return MAX_SIZE if max_pages_size.zero?
|
||||
|
||||
[max_pages_size, MAX_SIZE].min
|
||||
end
|
||||
|
||||
def tmp_path
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Handle maximum pages artifacts size correctly
|
||||
merge_request: 13072
|
||||
author:
|
|
@ -96,6 +96,78 @@ describe Projects::UpdatePagesService do
|
|||
expect(execute).not_to eq(:success)
|
||||
end
|
||||
|
||||
describe 'maximum pages artifacts size' do
|
||||
let(:metadata) { spy('metadata') }
|
||||
|
||||
before do
|
||||
file = fixture_file_upload(Rails.root + 'spec/fixtures/pages.zip')
|
||||
metafile = fixture_file_upload(Rails.root + 'spec/fixtures/pages.zip.meta')
|
||||
|
||||
build.update_attributes(artifacts_file: file)
|
||||
build.update_attributes(artifacts_metadata: metafile)
|
||||
|
||||
allow(build).to receive(:artifacts_metadata_entry)
|
||||
.and_return(metadata)
|
||||
end
|
||||
|
||||
shared_examples 'pages size limit exceeded' do
|
||||
it 'limits the maximum size of gitlab pages' do
|
||||
subject.execute
|
||||
|
||||
expect(deploy_status.description)
|
||||
.to match(/artifacts for pages are too large/)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when maximum pages size is set to zero' do
|
||||
before do
|
||||
stub_application_setting(max_pages_size: 0)
|
||||
end
|
||||
|
||||
context 'when page size does not exceed internal maximum' do
|
||||
before do
|
||||
allow(metadata).to receive(:total_size).and_return(200.megabytes)
|
||||
end
|
||||
|
||||
it 'updates pages correctly' do
|
||||
subject.execute
|
||||
|
||||
expect(deploy_status.description).not_to be_present
|
||||
end
|
||||
end
|
||||
|
||||
context 'when pages size does exceed internal maximum' do
|
||||
before do
|
||||
allow(metadata).to receive(:total_size).and_return(2.terabytes)
|
||||
end
|
||||
|
||||
it_behaves_like 'pages size limit exceeded'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when pages size is greater than max size setting' do
|
||||
before do
|
||||
stub_application_setting(max_pages_size: 200)
|
||||
allow(metadata).to receive(:total_size).and_return(201.megabytes)
|
||||
end
|
||||
|
||||
it_behaves_like 'pages size limit exceeded'
|
||||
end
|
||||
|
||||
context 'when max size setting is greater than internal max size' do
|
||||
before do
|
||||
stub_application_setting(max_pages_size: 3.terabytes / 1.megabyte)
|
||||
allow(metadata).to receive(:total_size).and_return(2.terabytes)
|
||||
end
|
||||
|
||||
it_behaves_like 'pages size limit exceeded'
|
||||
end
|
||||
end
|
||||
|
||||
def deploy_status
|
||||
GenericCommitStatus.find_by(name: 'pages:deploy')
|
||||
end
|
||||
|
||||
def execute
|
||||
subject.execute[:status]
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue