adding a spec for issues/310
This commit is contained in:
		
							parent
							
								
									8028a59d7a
								
							
						
					
					
						commit
						ec3c3d2bd7
					
				|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
|  | @ -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 New Issue