X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0df5f0feeced5bff0adfb806dae2d3811257827f..f0549691efc1536602b641f5c662cd32ce0c58aa:/services/api/test/functional/arvados/v1/users_controller_test.rb diff --git a/services/api/test/functional/arvados/v1/users_controller_test.rb b/services/api/test/functional/arvados/v1/users_controller_test.rb index 22a44a97ab..60696b98a9 100644 --- a/services/api/test/functional/arvados/v1/users_controller_test.rb +++ b/services/api/test/functional/arvados/v1/users_controller_test.rb @@ -638,12 +638,12 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase setup_email = ActionMailer::Base.deliveries.last assert_not_nil setup_email, 'Expected email after setup' - assert_equal Rails.configuration.user_notifier_email_from, setup_email.from[0] + assert_equal Rails.configuration.Users.UserNotifierEmailFrom, setup_email.from[0] assert_equal 'foo@example.com', setup_email.to[0] assert_equal 'Welcome to Arvados - shell account enabled', setup_email.subject assert (setup_email.body.to_s.include? 'Your Arvados shell account has been set up'), 'Expected Your Arvados shell account has been set up in email body' - assert (setup_email.body.to_s.include? "#{Rails.configuration.workbench_address}users/#{created['uuid']}/virtual_machines"), 'Expected virtual machines url in email body' + assert (setup_email.body.to_s.include? "#{Rails.configuration.Services.Workbench1.ExternalURL}users/#{created['uuid']}/virtual_machines"), 'Expected virtual machines url in email body' end test "setup inactive user by changing is_active to true" do @@ -927,7 +927,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase redirect_to_new_user: true, }) assert_response(:success) - assert_equal(users(:project_viewer).redirect_to_user_uuid, users(:active).uuid) + assert_equal(users(:active).uuid, User.unscoped.find_by_uuid(users(:project_viewer).uuid).redirect_to_user_uuid) auth = ApiClientAuthorization.validate(token: api_client_authorizations(:project_viewer).api_token) assert_not_nil(auth) @@ -935,6 +935,82 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase assert_equal(users(:active).uuid, auth.user.uuid) end + + test "merge 'project_viewer' account into 'active' account using uuids" do + authorize_with(:admin) + post(:merge, params: { + old_user_uuid: users(:project_viewer).uuid, + new_user_uuid: users(:active).uuid, + new_owner_uuid: users(:active).uuid, + redirect_to_new_user: true, + }) + assert_response(:success) + assert_equal(users(:active).uuid, User.unscoped.find_by_uuid(users(:project_viewer).uuid).redirect_to_user_uuid) + + auth = ApiClientAuthorization.validate(token: api_client_authorizations(:project_viewer).api_token) + assert_not_nil(auth) + assert_not_nil(auth.user) + assert_equal(users(:active).uuid, auth.user.uuid) + end + + test "merge 'project_viewer' account into 'active' account using uuids denied for non-admin" do + authorize_with(:active) + post(:merge, params: { + old_user_uuid: users(:project_viewer).uuid, + new_user_uuid: users(:active).uuid, + new_owner_uuid: users(:active).uuid, + redirect_to_new_user: true, + }) + assert_response(403) + assert_nil(users(:project_viewer).redirect_to_user_uuid) + end + + test "merge 'project_viewer' account into 'active' account using uuids denied missing old_user_uuid" do + authorize_with(:admin) + post(:merge, params: { + new_user_uuid: users(:active).uuid, + new_owner_uuid: users(:active).uuid, + redirect_to_new_user: true, + }) + assert_response(422) + assert_nil(users(:project_viewer).redirect_to_user_uuid) + end + + test "merge 'project_viewer' account into 'active' account using uuids denied missing new_user_uuid" do + authorize_with(:admin) + post(:merge, params: { + old_user_uuid: users(:project_viewer).uuid, + new_owner_uuid: users(:active).uuid, + redirect_to_new_user: true, + }) + assert_response(422) + assert_nil(users(:project_viewer).redirect_to_user_uuid) + end + + test "merge 'project_viewer' account into 'active' account using uuids denied bogus old_user_uuid" do + authorize_with(:admin) + post(:merge, params: { + old_user_uuid: "zzzzz-tpzed-bogusbogusbogus", + new_user_uuid: users(:active).uuid, + new_owner_uuid: users(:active).uuid, + redirect_to_new_user: true, + }) + assert_response(422) + assert_nil(users(:project_viewer).redirect_to_user_uuid) + end + + test "merge 'project_viewer' account into 'active' account using uuids denied bogus new_user_uuid" do + authorize_with(:admin) + post(:merge, params: { + old_user_uuid: users(:project_viewer).uuid, + new_user_uuid: "zzzzz-tpzed-bogusbogusbogus", + new_owner_uuid: users(:active).uuid, + redirect_to_new_user: true, + }) + assert_response(422) + assert_nil(users(:project_viewer).redirect_to_user_uuid) + end + NON_ADMIN_USER_DATA = ["uuid", "kind", "is_active", "email", "first_name", "last_name", "username"].sort