Commit 04554d69 authored by Rémy Coutable's avatar Rémy Coutable

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
parents 8028a59d ec3c3d2b
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
= f.number_field :max_attachment_size, class: 'form-control' = f.number_field :max_attachment_size, class: 'form-control'
.form-group .form-group
= f.label :receive_max_input_size, 'Maximum push size (MB)', class: 'label-light' = 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 .form-group
= f.label :session_expire_delay, 'Session duration (minutes)', class: 'label-light' = f.label :session_expire_delay, 'Session duration (minutes)', class: 'label-light'
= f.number_field :session_expire_delay, class: 'form-control' = f.number_field :session_expire_delay, class: 'form-control'
...@@ -46,4 +46,4 @@ ...@@ -46,4 +46,4 @@
= f.label :user_show_add_ssh_key_message, class: 'form-check-label' do = 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 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 @@ ...@@ -13,7 +13,7 @@
.settings-content .settings-content
= render 'visibility_and_access' = 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 .settings-header
%h4 %h4
= _('Account and limit') = _('Account and limit')
......
...@@ -207,7 +207,7 @@ ...@@ -207,7 +207,7 @@
= _('Settings') = _('Settings')
%li.divider.fly-out-top-item %li.divider.fly-out-top-item
= nav_link(path: 'application_settings#show') do = 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 %span
= _('General') = _('General')
= nav_link(path: 'application_settings#integrations') do = nav_link(path: 'application_settings#integrations') do
......
...@@ -274,9 +274,11 @@ module QA ...@@ -274,9 +274,11 @@ module QA
module Settings module Settings
autoload :Repository, 'qa/page/admin/settings/repository' autoload :Repository, 'qa/page/admin/settings/repository'
autoload :General, 'qa/page/admin/settings/general'
module Component module Component
autoload :RepositoryStorage, 'qa/page/admin/settings/component/repository_storage' autoload :RepositoryStorage, 'qa/page/admin/settings/component/repository_storage'
autoload :AccountAndLimit, 'qa/page/admin/settings/component/account_and_limit'
end end
end end
end end
......
...@@ -9,6 +9,7 @@ module QA ...@@ -9,6 +9,7 @@ module QA
element :admin_sidebar_submenu element :admin_sidebar_submenu
element :admin_settings_item element :admin_settings_item
element :admin_settings_repository_item element :admin_settings_repository_item
element :admin_settings_general_item
end end
def go_to_repository_settings def go_to_repository_settings
...@@ -19,6 +20,14 @@ module QA ...@@ -19,6 +20,14 @@ module QA
end end
end end
def go_to_general_settings
hover_settings do
within_submenu do
click_element :admin_settings_general_item
end
end
end
private private
def hover_settings def hover_settings
......
# 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
# 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
# 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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment