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:
Rémy Coutable 2019-02-01 14:38:07 +00:00
commit 04554d69bc
8 changed files with 134 additions and 4 deletions

View file

@ -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'

View file

@ -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')

View file

@ -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

View file

@ -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

View file

@ -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

View 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

View 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

View file

@ -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