diff options
Diffstat (limited to 'spec/requests/api/settings_spec.rb')
-rw-r--r-- | spec/requests/api/settings_spec.rb | 105 |
1 files changed, 94 insertions, 11 deletions
diff --git a/spec/requests/api/settings_spec.rb b/spec/requests/api/settings_spec.rb index 79e96d7ea3e..dfaba969153 100644 --- a/spec/requests/api/settings_spec.rb +++ b/spec/requests/api/settings_spec.rb @@ -80,6 +80,7 @@ RSpec.describe API::Settings, 'Settings', :do_not_mock_admin_mode_setting, featu expect(json_response['valid_runner_registrars']).to match_array(%w(project group)) expect(json_response['ci_max_includes']).to eq(150) expect(json_response['allow_account_deletion']).to eq(true) + expect(json_response['gitlab_shell_operation_limit']).to eq(600) end end @@ -190,13 +191,9 @@ RSpec.describe API::Settings, 'Settings', :do_not_mock_admin_mode_setting, featu default_syntax_highlighting_theme: 2, projects_api_rate_limit_unauthenticated: 100, silent_mode_enabled: true, - slack_app_enabled: true, - slack_app_id: 'SLACK_APP_ID', - slack_app_secret: 'SLACK_APP_SECRET', - slack_app_signing_secret: 'SLACK_APP_SIGNING_SECRET', - slack_app_verification_token: 'SLACK_APP_VERIFICATION_TOKEN', valid_runner_registrars: ['group'], - allow_account_deletion: false + allow_account_deletion: false, + gitlab_shell_operation_limit: 500 } expect(response).to have_gitlab_http_status(:ok) @@ -270,16 +267,23 @@ RSpec.describe API::Settings, 'Settings', :do_not_mock_admin_mode_setting, featu expect(json_response['default_syntax_highlighting_theme']).to eq(2) expect(json_response['projects_api_rate_limit_unauthenticated']).to be(100) expect(json_response['silent_mode_enabled']).to be(true) - expect(json_response['slack_app_enabled']).to be(true) - expect(json_response['slack_app_id']).to eq('SLACK_APP_ID') - expect(json_response['slack_app_secret']).to eq('SLACK_APP_SECRET') - expect(json_response['slack_app_signing_secret']).to eq('SLACK_APP_SIGNING_SECRET') - expect(json_response['slack_app_verification_token']).to eq('SLACK_APP_VERIFICATION_TOKEN') expect(json_response['valid_runner_registrars']).to eq(['group']) expect(json_response['allow_account_deletion']).to be(false) + expect(json_response['gitlab_shell_operation_limit']).to be(500) end end + it "updates default_branch_protection_defaults from the default_branch_protection param" do + expected_update = ::Gitlab::Access::BranchProtection.protected_against_developer_pushes.stringify_keys + + put api("/application/settings", admin), + params: { default_branch_protection: ::Gitlab::Access::PROTECTION_DEV_CAN_MERGE } + + expect(response).to have_gitlab_http_status(:ok) + expect(json_response['default_branch_protection']).to eq(Gitlab::Access::PROTECTION_DEV_CAN_MERGE) + expect(ApplicationSetting.first.default_branch_protection_defaults).to eq(expected_update) + end + it "supports legacy performance_bar_allowed_group_id" do put api("/application/settings", admin), params: { performance_bar_allowed_group_id: group.full_path } @@ -550,6 +554,85 @@ RSpec.describe API::Settings, 'Settings', :do_not_mock_admin_mode_setting, featu end end + context 'GitLab for Slack app settings' do + let(:settings) do + { + slack_app_enabled: slack_app_enabled, + slack_app_id: slack_app_id, + slack_app_secret: slack_app_secret, + slack_app_signing_secret: slack_app_signing_secret, + slack_app_verification_token: slack_app_verification_token + } + end + + context 'when GitLab for Slack app is enabled' do + let(:slack_app_enabled) { true } + + context 'when other params are blank' do + let(:slack_app_id) { nil } + let(:slack_app_secret) { nil } + let(:slack_app_signing_secret) { nil } + let(:slack_app_verification_token) { nil } + + it 'does not update the settings' do + put api("/application/settings", admin), params: settings + + expect(response).to have_gitlab_http_status(:bad_request) + + expect(json_response['slack_app_enabled']).to be(nil) + expect(json_response['slack_app_id']).to be(nil) + expect(json_response['slack_app_secret']).to be(nil) + expect(json_response['slack_app_signing_secret']).to be(nil) + expect(json_response['slack_app_verification_token']).to be(nil) + + message = json_response['message'] + + expect(message['slack_app_id']).to include("can't be blank") + expect(message['slack_app_secret']).to include("can't be blank") + expect(message['slack_app_signing_secret']).to include("can't be blank") + expect(message['slack_app_verification_token']).to include("can't be blank") + end + end + + context 'when other params are present' do + let(:slack_app_id) { 'ID' } + let(:slack_app_secret) { 'SECRET' } + let(:slack_app_signing_secret) { 'SIGNING_SECRET' } + let(:slack_app_verification_token) { 'VERIFICATION_TOKEN' } + + it 'updates the settings' do + put api("/application/settings", admin), params: settings + + expect(response).to have_gitlab_http_status(:ok) + expect(json_response['slack_app_enabled']).to be(true) + expect(json_response['slack_app_id']).to eq('ID') + expect(json_response['slack_app_secret']).to eq('SECRET') + expect(json_response['slack_app_signing_secret']).to eq('SIGNING_SECRET') + expect(json_response['slack_app_verification_token']).to eq('VERIFICATION_TOKEN') + end + end + end + + context 'when GitLab for Slack app is not enabled' do + let(:slack_app_enabled) { false } + let(:slack_app_id) { nil } + let(:slack_app_secret) { nil } + let(:slack_app_signing_secret) { nil } + let(:slack_app_verification_token) { nil } + + it 'allows blank attributes' do + put api("/application/settings", admin), params: settings + + expect(response).to have_gitlab_http_status(:ok) + expect(json_response['slack_app_enabled']).to be(false) + expect(json_response['slack_app_id']).to be(nil) + expect(json_response['slack_app_secret']).to be(nil) + expect(json_response['slack_app_signing_secret']).to be(nil) + expect(json_response['slack_app_verification_token']).to be(nil) + end + end + end + context "missing plantuml_url value when plantuml_enabled is true" do it "returns a blank parameter error message" do put api("/application/settings", admin), params: { plantuml_enabled: true } |