Merge branch 'issues/310-push-check-size-limit-enabled' into 'master'
Add an E2E test of push with the file size limit set See merge request gitlab-org/gitlab-ce!24431
This commit is contained in:
commit
04554d69bc
8 changed files with 134 additions and 4 deletions
|
@ -15,7 +15,7 @@
|
|||
= f.number_field :max_attachment_size, class: 'form-control'
|
||||
.form-group
|
||||
= f.label :receive_max_input_size, 'Maximum push size (MB)', class: 'label-light'
|
||||
= f.number_field :receive_max_input_size, class: 'form-control'
|
||||
= f.number_field :receive_max_input_size, class: 'form-control qa-receive-max-input-size-field'
|
||||
.form-group
|
||||
= f.label :session_expire_delay, 'Session duration (minutes)', class: 'label-light'
|
||||
= f.number_field :session_expire_delay, class: 'form-control'
|
||||
|
@ -46,4 +46,4 @@
|
|||
= f.label :user_show_add_ssh_key_message, class: 'form-check-label' do
|
||||
Inform users without uploaded SSH keys that they can't push over SSH until one is added
|
||||
|
||||
= f.submit 'Save changes', class: 'btn btn-success'
|
||||
= f.submit 'Save changes', class: 'btn btn-success qa-save-changes-button'
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
.settings-content
|
||||
= render 'visibility_and_access'
|
||||
|
||||
%section.settings.as-account-limit.no-animate#js-account-settings{ class: ('expanded' if expanded_by_default?) }
|
||||
%section.settings.qa-account-and-limit-settings.as-account-limit.no-animate#js-account-settings{ class: ('expanded' if expanded_by_default?) }
|
||||
.settings-header
|
||||
%h4
|
||||
= _('Account and limit')
|
||||
|
|
|
@ -207,7 +207,7 @@
|
|||
= _('Settings')
|
||||
%li.divider.fly-out-top-item
|
||||
= nav_link(path: 'application_settings#show') do
|
||||
= link_to admin_application_settings_path, title: _('General') do
|
||||
= link_to admin_application_settings_path, title: _('General'), class: 'qa-admin-settings-general-item' do
|
||||
%span
|
||||
= _('General')
|
||||
= nav_link(path: 'application_settings#integrations') do
|
||||
|
|
2
qa/qa.rb
2
qa/qa.rb
|
@ -274,9 +274,11 @@ module QA
|
|||
|
||||
module Settings
|
||||
autoload :Repository, 'qa/page/admin/settings/repository'
|
||||
autoload :General, 'qa/page/admin/settings/general'
|
||||
|
||||
module Component
|
||||
autoload :RepositoryStorage, 'qa/page/admin/settings/component/repository_storage'
|
||||
autoload :AccountAndLimit, 'qa/page/admin/settings/component/account_and_limit'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,6 +9,7 @@ module QA
|
|||
element :admin_sidebar_submenu
|
||||
element :admin_settings_item
|
||||
element :admin_settings_repository_item
|
||||
element :admin_settings_general_item
|
||||
end
|
||||
|
||||
def go_to_repository_settings
|
||||
|
@ -19,6 +20,14 @@ module QA
|
|||
end
|
||||
end
|
||||
|
||||
def go_to_general_settings
|
||||
hover_settings do
|
||||
within_submenu do
|
||||
click_element :admin_settings_general_item
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def hover_settings
|
||||
|
|
26
qa/qa/page/admin/settings/component/account_and_limit.rb
Normal file
26
qa/qa/page/admin/settings/component/account_and_limit.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module QA
|
||||
module Page
|
||||
module Admin
|
||||
module Settings
|
||||
module Component
|
||||
class AccountAndLimit < Page::Base
|
||||
view 'app/views/admin/application_settings/_account_and_limit.html.haml' do
|
||||
element :receive_max_input_size_field
|
||||
element :save_changes_button
|
||||
end
|
||||
|
||||
def set_max_file_size(size)
|
||||
fill_element :receive_max_input_size_field, size
|
||||
end
|
||||
|
||||
def save_settings
|
||||
click_element :save_changes_button
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
23
qa/qa/page/admin/settings/general.rb
Normal file
23
qa/qa/page/admin/settings/general.rb
Normal file
|
@ -0,0 +1,23 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module QA
|
||||
module Page
|
||||
module Admin
|
||||
module Settings
|
||||
class General < Page::Base
|
||||
include QA::Page::Settings::Common
|
||||
|
||||
view 'app/views/admin/application_settings/show.html.haml' do
|
||||
element :account_and_limit_settings
|
||||
end
|
||||
|
||||
def expand_account_and_limit(&block)
|
||||
expand_section(:account_and_limit_settings) do
|
||||
Component::AccountAndLimit.perform(&block)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,70 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module QA
|
||||
context 'Create' do
|
||||
describe 'push after setting the file size limit via admin/application_settings' do
|
||||
before(:all) do
|
||||
push = Resource::Repository::ProjectPush.fabricate! do |p|
|
||||
p.file_name = 'README.md'
|
||||
p.file_content = '# This is a test project'
|
||||
p.commit_message = 'Add README.md'
|
||||
end
|
||||
|
||||
@project = push.project
|
||||
end
|
||||
|
||||
before do
|
||||
Runtime::Browser.visit(:gitlab, Page::Main::Login)
|
||||
Page::Main::Login.perform(&:sign_in_using_credentials)
|
||||
end
|
||||
|
||||
after(:all) do
|
||||
# need to set the default value after test
|
||||
# default value for file size limit is empty
|
||||
Runtime::Browser.visit(:gitlab, Page::Main::Login)
|
||||
Page::Main::Login.perform(&:sign_in_using_credentials)
|
||||
|
||||
set_file_size_limit('')
|
||||
end
|
||||
|
||||
it 'push successful when the file size is under the limit' do
|
||||
set_file_size_limit(5)
|
||||
expect(page).to have_content("Application settings saved successfully")
|
||||
|
||||
push = push_new_file('oversize_file_1.bin')
|
||||
expect(push.output).not_to have_content 'remote: fatal: pack exceeds maximum allowed size'
|
||||
end
|
||||
|
||||
it 'push fails when the file size is above the limit' do
|
||||
set_file_size_limit(1)
|
||||
expect(page).to have_content("Application settings saved successfully")
|
||||
|
||||
push = push_new_file('oversize_file_2.bin')
|
||||
expect(push.output).to have_content 'remote: fatal: pack exceeds maximum allowed size'
|
||||
end
|
||||
|
||||
def set_file_size_limit(limit)
|
||||
Page::Main::Menu.perform(&:go_to_admin_area)
|
||||
Page::Admin::Menu.perform(&:go_to_general_settings)
|
||||
|
||||
Page::Admin::Settings::General.perform do |setting|
|
||||
setting.expand_account_and_limit do |page|
|
||||
page.set_max_file_size(limit)
|
||||
page.save_settings
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def push_new_file(file_name)
|
||||
@project.visit!
|
||||
|
||||
Resource::Repository::ProjectPush.fabricate! do |p|
|
||||
p.project = @project
|
||||
p.file_name = file_name
|
||||
p.file_content = SecureRandom.random_bytes(2000000)
|
||||
p.commit_message = 'Adding a new file'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue