summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMesut Güneş <gunesmes@gmail.com>2019-02-01 14:38:07 +0000
committerRémy Coutable <remy@rymai.me>2019-02-01 14:38:07 +0000
commitec3c3d2bd732e1eac9a75629e4a474bc55abb574 (patch)
tree9093e43f174225fb0f5356a03fa9d14183d62edb
parent8028a59d7a89ca803902b5b5a206bcf1e83e8c51 (diff)
downloadgitlab-ce-ec3c3d2bd732e1eac9a75629e4a474bc55abb574.tar.gz
adding a spec for issues/310
-rw-r--r--app/views/admin/application_settings/_account_and_limit.html.haml4
-rw-r--r--app/views/admin/application_settings/show.html.haml2
-rw-r--r--app/views/layouts/nav/sidebar/_admin.html.haml2
-rw-r--r--qa/qa.rb2
-rw-r--r--qa/qa/page/admin/menu.rb9
-rw-r--r--qa/qa/page/admin/settings/component/account_and_limit.rb26
-rw-r--r--qa/qa/page/admin/settings/general.rb23
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb70
8 files changed, 134 insertions, 4 deletions
diff --git a/app/views/admin/application_settings/_account_and_limit.html.haml b/app/views/admin/application_settings/_account_and_limit.html.haml
index 10bc3452d8b..65a24854583 100644
--- a/app/views/admin/application_settings/_account_and_limit.html.haml
+++ b/app/views/admin/application_settings/_account_and_limit.html.haml
@@ -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'
diff --git a/app/views/admin/application_settings/show.html.haml b/app/views/admin/application_settings/show.html.haml
index 65e4723afe6..fc9dd29b8ca 100644
--- a/app/views/admin/application_settings/show.html.haml
+++ b/app/views/admin/application_settings/show.html.haml
@@ -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')
diff --git a/app/views/layouts/nav/sidebar/_admin.html.haml b/app/views/layouts/nav/sidebar/_admin.html.haml
index 5f15ba87729..2fdd65f639b 100644
--- a/app/views/layouts/nav/sidebar/_admin.html.haml
+++ b/app/views/layouts/nav/sidebar/_admin.html.haml
@@ -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
diff --git a/qa/qa.rb b/qa/qa.rb
index c851524bb75..8c85513198b 100644
--- a/qa/qa.rb
+++ b/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
diff --git a/qa/qa/page/admin/menu.rb b/qa/qa/page/admin/menu.rb
index e8c7d274966..25564f2dc6e 100644
--- a/qa/qa/page/admin/menu.rb
+++ b/qa/qa/page/admin/menu.rb
@@ -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
diff --git a/qa/qa/page/admin/settings/component/account_and_limit.rb b/qa/qa/page/admin/settings/component/account_and_limit.rb
new file mode 100644
index 00000000000..a61c8cc77cd
--- /dev/null
+++ b/qa/qa/page/admin/settings/component/account_and_limit.rb
@@ -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
diff --git a/qa/qa/page/admin/settings/general.rb b/qa/qa/page/admin/settings/general.rb
new file mode 100644
index 00000000000..93b290f7e03
--- /dev/null
+++ b/qa/qa/page/admin/settings/general.rb
@@ -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
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb
new file mode 100644
index 00000000000..23ea55c2e61
--- /dev/null
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb
@@ -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