X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3849ee94bbe65ef79df8f50c87b5445a5b1d4877..c55409793ebc677e5ca5210cb546e2b5420cb3c8:/services/api/test/unit/user_test.rb diff --git a/services/api/test/unit/user_test.rb b/services/api/test/unit/user_test.rb index 7368d89374..810e5b45ec 100644 --- a/services/api/test/unit/user_test.rb +++ b/services/api/test/unit/user_test.rb @@ -153,12 +153,12 @@ class UserTest < ActiveSupport::TestCase assert_equal("active/foo", repositories(:foo).name) end - [[false, 'foo@example.com', true, nil], - [false, 'bar@example.com', nil, true], - [true, 'foo@example.com', true, nil], + [[false, 'foo@example.com', true, false], + [false, 'bar@example.com', false, true], + [true, 'foo@example.com', true, false], [true, 'bar@example.com', true, true], - [false, '', nil, nil], - [true, '', true, nil] + [false, '', false, false], + [true, '', true, false] ].each do |auto_admin_first_user_config, auto_admin_user_config, foo_should_be_admin, bar_should_be_admin| # In each case, 'foo' is created first, then 'bar', then 'bar2', then 'baz'. test "auto admin with auto_admin_first=#{auto_admin_first_user_config} auto_admin=#{auto_admin_user_config}" do @@ -166,7 +166,7 @@ class UserTest < ActiveSupport::TestCase if auto_admin_first_user_config # This test requires no admin users exist (except for the system user) act_as_system_user do - users(:admin).update_attributes!(is_admin: false) + users(:admin).update!(is_admin: false) end @all_users = User.where("uuid not like '%-000000000000000'").where(:is_admin => true) assert_equal 0, @all_users.count, "No admin users should exist (except for the system user)" @@ -347,10 +347,12 @@ class UserTest < ActiveSupport::TestCase test "create new user with notifications" do set_user_from_auth :admin + Rails.configuration.Users.AutoSetupNewUsers = false + create_user_and_verify_setup_and_notifications true, active_notify_list, inactive_notify_list, nil, nil create_user_and_verify_setup_and_notifications true, active_notify_list, empty_notify_list, nil, nil create_user_and_verify_setup_and_notifications true, empty_notify_list, empty_notify_list, nil, nil - create_user_and_verify_setup_and_notifications false, active_notify_list, inactive_notify_list, nil, nil + create_user_and_verify_setup_and_notifications false, empty_notify_list, inactive_notify_list, nil, nil create_user_and_verify_setup_and_notifications false, empty_notify_list, inactive_notify_list, nil, nil create_user_and_verify_setup_and_notifications false, empty_notify_list, empty_notify_list, nil, nil end @@ -379,13 +381,13 @@ class UserTest < ActiveSupport::TestCase [false, empty_notify_list, empty_notify_list, "arvados@example.com", false, false, "arvados2"], [true, active_notify_list, inactive_notify_list, "arvados@example.com", false, false, "arvados2"], [true, active_notify_list, inactive_notify_list, "root@example.com", true, false, "root2"], - [false, active_notify_list, inactive_notify_list, "root@example.com", true, false, "root2"], + [false, active_notify_list, empty_notify_list, "root@example.com", true, false, "root2"], [true, active_notify_list, inactive_notify_list, "roo_t@example.com", false, true, "root2"], [false, empty_notify_list, empty_notify_list, "^^incorrect_format@example.com", true, true, "incorrectformat"], [true, active_notify_list, inactive_notify_list, "&4a_d9.@example.com", true, true, "ad9"], [true, active_notify_list, inactive_notify_list, "&4a_d9.@example.com", false, false, "ad9"], - [false, active_notify_list, inactive_notify_list, "&4a_d9.@example.com", true, true, "ad9"], - [false, active_notify_list, inactive_notify_list, "&4a_d9.@example.com", false, false, "ad9"], + [false, active_notify_list, empty_notify_list, "&4a_d9.@example.com", true, true, "ad9"], + [false, active_notify_list, empty_notify_list, "&4a_d9.@example.com", false, false, "ad9"], ].each do |active, new_user_recipients, inactive_recipients, email, auto_setup_vm, auto_setup_repo, expect_username| test "create new user with auto setup active=#{active} email=#{email} vm=#{auto_setup_vm} repo=#{auto_setup_repo}" do set_user_from_auth :admin @@ -465,7 +467,7 @@ class UserTest < ActiveSupport::TestCase verify_user resp_user, email group_perm = find_obj_in_resp response, 'Link', 'arvados#group' - verify_link group_perm, 'permission', 'can_read', resp_user[:uuid], nil + verify_link group_perm, 'permission', 'can_write', resp_user[:uuid], groups(:all_users).uuid group_perm2 = find_obj_in_resp response, 'Link', 'arvados#user' if visible @@ -499,7 +501,7 @@ class UserTest < ActiveSupport::TestCase verify_user resp_user, email group_perm = find_obj_in_resp response, 'Link', 'arvados#group' - verify_link group_perm, 'permission', 'can_read', resp_user[:uuid], nil + verify_link group_perm, 'permission', 'can_write', resp_user[:uuid], groups(:all_users).uuid repo_perm = find_obj_in_resp response, 'Link', 'arvados#repository' verify_link repo_perm, 'permission', 'can_manage', resp_user[:uuid], nil @@ -522,7 +524,7 @@ class UserTest < ActiveSupport::TestCase verify_user resp_user, email group_perm = find_obj_in_resp response, 'Link', 'arvados#group' - verify_link group_perm, 'permission', 'can_read', resp_user[:uuid], nil + verify_link group_perm, 'permission', 'can_write', resp_user[:uuid], groups(:all_users).uuid group_perm2 = find_obj_in_resp response, 'Link', 'arvados#user' verify_link group_perm2, 'permission', 'can_read', groups(:all_users).uuid, nil @@ -534,7 +536,7 @@ class UserTest < ActiveSupport::TestCase assert_equal user.uuid, resp_user[:uuid], 'expected uuid not found' group_perm = find_obj_in_resp response, 'Link', 'arvados#group' - verify_link group_perm, 'permission', 'can_read', resp_user[:uuid], nil + verify_link group_perm, 'permission', 'can_write', resp_user[:uuid], groups(:all_users).uuid repo_perm = find_obj_in_resp response, 'Link', 'arvados#repository' verify_link repo_perm, 'permission', 'can_manage', resp_user[:uuid], nil @@ -550,7 +552,7 @@ class UserTest < ActiveSupport::TestCase assert_equal user.uuid, resp_user[:uuid], 'expected uuid not found' group_perm = find_obj_in_resp response, 'Link', 'arvados#group' - verify_link group_perm, 'permission', 'can_read', resp_user[:uuid], nil + verify_link group_perm, 'permission', 'can_write', resp_user[:uuid], groups(:all_users).uuid repo_perm = find_obj_in_resp response, 'Link', 'arvados#repository' verify_link repo_perm, 'permission', 'can_manage', resp_user[:uuid], nil @@ -625,7 +627,7 @@ class UserTest < ActiveSupport::TestCase # check user setup verify_link_exists(Rails.configuration.Users.AutoSetupNewUsers || active, groups(:all_users).uuid, user.uuid, - "permission", "can_read") + "permission", "can_write") # Check for repository. if named_repo = (prior_repo or @@ -797,4 +799,18 @@ class UserTest < ActiveSupport::TestCase assert user.save end + test "empty identity_url saves as null" do + set_user_from_auth :admin + user = users(:active) + assert user.update(identity_url: '') + user.reload + assert_nil user.identity_url + end + + test "id overflows int32" do + uuid = users(:active).uuid + ActiveRecord::Base.connection.execute "update users set id=333222111000 where uuid='#{uuid}'" + u = User.find_by_uuid(uuid) + assert_equal 333222111000, u.id + end end