Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spec/features/login_spec.rb19
-rw-r--r--spec/spec_helper.rb2
-rw-r--r--spec/support/login_helpers.rb10
-rw-r--r--spec/support/omni_auth.rb2
4 files changed, 30 insertions, 3 deletions
diff --git a/spec/features/login_spec.rb b/spec/features/login_spec.rb
index 39968db5b58..58753ff21f6 100644
--- a/spec/features/login_spec.rb
+++ b/spec/features/login_spec.rb
@@ -110,12 +110,29 @@ feature 'Login', feature: true do
end
context 'logging in via OAuth' do
+ def saml_config
+ OpenStruct.new(name: 'saml', label: 'saml', args: {
+ assertion_consumer_service_url: 'https://localhost:3443/users/auth/saml/callback',
+ idp_cert_fingerprint: '26:43:2C:47:AF:F0:6B:D0:07:9C:AD:A3:74:FE:5D:94:5F:4E:9E:52',
+ idp_sso_target_url: 'https://idp.example.com/sso/saml',
+ issuer: 'https://localhost:3443/',
+ name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient'
+ })
+ end
+
def stub_omniauth_config(messages)
+ Rails.application.env_config['devise.mapping'] = Devise.mappings[:user]
+ Rails.application.routes.disable_clear_and_finalize = true
+ Rails.application.routes.draw do
+ post '/users/auth/saml' => 'omniauth_callbacks#saml'
+ end
+ allow(Gitlab::OAuth::Provider).to receive_messages(providers: [:saml], config_for: saml_config)
allow(Gitlab.config.omniauth).to receive_messages(messages)
+ allow_any_instance_of(Object).to receive(:user_omniauth_authorize_path).with('saml').and_return('/users/auth/saml')
end
it 'should show 2FA prompt after OAuth login' do
- stub_omniauth_config(enabled: true, auto_link_saml_user: true, allow_single_sign_on: ['saml'], providers: [OpenStruct.new(name: 'saml', label: 'saml', args: {})])
+ stub_omniauth_config(enabled: true, auto_link_saml_user: true, allow_single_sign_on: ['saml'], providers: [saml_config])
user = create(:omniauth_user, :two_factor, extern_uid: 'my-uid', provider: 'saml')
login_via('saml', user, 'my-uid')
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 09ff5a18a35..b43f38ef202 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -56,4 +56,4 @@ FactoryGirl::SyntaxRunner.class_eval do
include RSpec::Mocks::ExampleMethods
end
-ActiveRecord::Migration.maintain_test_schema! \ No newline at end of file
+ActiveRecord::Migration.maintain_test_schema!
diff --git a/spec/support/login_helpers.rb b/spec/support/login_helpers.rb
index f9ce929000c..2e400dd825a 100644
--- a/spec/support/login_helpers.rb
+++ b/spec/support/login_helpers.rb
@@ -39,6 +39,7 @@ module LoginHelpers
def login_via(provider, user, uid)
mock_auth_hash(provider, uid, user.email)
+ Rails.application.env_config['omniauth.auth'] = OmniAuth.config.mock_auth[:saml]
visit new_user_session_path
click_link provider
end
@@ -57,6 +58,15 @@ module LoginHelpers
credentials: {
token: 'mock_token',
secret: 'mock_secret'
+ },
+ extra: {
+ raw_info: {
+ info: {
+ name: 'mockuser',
+ email: email,
+ image: 'mock_user_thumbnail_url'
+ }
+ }
}
})
end
diff --git a/spec/support/omni_auth.rb b/spec/support/omni_auth.rb
index 3d262ff9ca0..0b1af4052ff 100644
--- a/spec/support/omni_auth.rb
+++ b/spec/support/omni_auth.rb
@@ -1 +1 @@
-OmniAuth.config.test_mode = true \ No newline at end of file
+OmniAuth.config.test_mode = true