X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7c2d7b25747a06919e8ec64f0b4391c33092d965..0eb72b526bf8bbb011551ecf019f604e17a534f1:/services/api/test/integration/user_sessions_test.rb diff --git a/services/api/test/integration/user_sessions_test.rb b/services/api/test/integration/user_sessions_test.rb index 814e6eb670..6f9cf7edcb 100644 --- a/services/api/test/integration/user_sessions_test.rb +++ b/services/api/test/integration/user_sessions_test.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'test_helper' class UserSessionsApiTest < ActionDispatch::IntegrationTest @@ -5,7 +9,7 @@ class UserSessionsApiTest < ActionDispatch::IntegrationTest 'https://wb.example.com' end - def mock_auth_with_email email + def mock_auth_with(email: nil, username: nil) mock = { 'provider' => 'josh_id', 'uid' => 'https://edward.example.com', @@ -14,17 +18,30 @@ class UserSessionsApiTest < ActionDispatch::IntegrationTest 'name' => 'Edward Example', 'first_name' => 'Edward', 'last_name' => 'Example', - 'email' => email, }, } + mock['info']['email'] = email unless email.nil? + mock['info']['username'] = username unless username.nil? post('/auth/josh_id/callback', {return_to: client_url}, {'omniauth.auth' => mock}) assert_response :redirect, 'Did not redirect to client with token' end + test 'assign username from sso' do + mock_auth_with(email: 'foo@example.com', username: 'bar') + u = assigns(:user) + assert_equal 'bar', u.username + end + + test 'no assign username from sso' do + mock_auth_with(email: 'foo@example.com') + u = assigns(:user) + assert_equal 'foo', u.username + end + test 'create new user during omniauth callback' do - mock_auth_with_email 'edward@example.com' + mock_auth_with(email: 'edward@example.com') assert_equal(0, @response.redirect_url.index(client_url), 'Redirected to wrong address after succesful login: was ' + @response.redirect_url + ', expected ' + client_url + '[...]') @@ -61,7 +78,7 @@ class UserSessionsApiTest < ActionDispatch::IntegrationTest Rails.configuration.auto_setup_new_users_with_repository = testcase[:cfg][:repo] - mock_auth_with_email testcase[:email] + mock_auth_with(email: testcase[:email]) u = assigns(:user) vm_links = Link.where('link_class=? and tail_uuid=? and head_uuid like ?', 'permission', u.uuid, @@ -97,7 +114,7 @@ class UserSessionsApiTest < ActionDispatch::IntegrationTest (repos.collect(&:name) + vm_links.collect { |link| link.properties['username'] } ).each do |name| - r = name.match /^(.{#{prefix.length}})(\d+)$/ + r = name.match(/^(.{#{prefix.length}})(\d+)$/) assert_not_nil r, "#{name.inspect} does not match {prefix}\\d+" assert_equal(prefix, r[1], "#{name.inspect} was not {#{prefix.inspect} plus digits}")