- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'inactive-none@example.com', false, false, true],
- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'inactive-vm@example.com', true, false, true],
- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'inactive-repo@example.com', false, true, true],
- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'inactive-both@example.com', true, true, true],
-
- [false, [], [], 'inactive-none-no-notifications@example.com', false, false, true],
- [false, [], [], 'inactive-vm-no-notifications@example.com', true, false, true],
- [false, [], [], 'inactive-repo-no-notifications@example.com', false, true, true],
- [false, [], [], 'inactive-both-no-notifications@example.com', true, true, true],
-
- [true, 'active-notify@example.com', 'inactive-notify@example.com', 'active-none@example.com', false, false, true],
- [true, 'active-notify@example.com', 'inactive-notify@example.com', 'active-vm@example.com', true, false, true],
- [true, 'active-notify@example.com', 'inactive-notify@example.com', 'active-repo@example.com', false, true, true],
- [true, 'active-notify@example.com', 'inactive-notify@example.com', 'active-both@example.com', true, true, true],
-
- [true, [], [], 'active-none-no-notifications@example.com', false, false, true],
- [true, [], [], 'active-vm-no-notifications@example.com', true, false, true],
- [true, [], [], 'active-notify-no-notifications@example.com', 'inactive-repo@example.com', false, true, true],
- [true, [], [], 'active-both-no-notifications@example.com', true, true, true],
-
- [false, [], [], nil, true, true, false],
- [false, [], [], 'arvados', true, true, false],
- [false, [], [], '@example.com', true, true, false],
- [false, [], [], '^^incorrect_format@example.com', true, true, false],
-
- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'foo@example.com', true, true, true], # existing repository name 'foo'
- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'foo@example.com', true, false, true], # existing repository name 'foo'
- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'foo@example.com', false, true, true], # existing repository name 'foo'
- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'foo@example.com', false, false, true], # existing repository name 'foo', but we are not creating repo or login link
- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'xyz_can_login_to_vm@example.com', true, true, true], # existing vm login name
- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'xyz_can_login_to_vm@example.com', true, false, true], # existing vm login name
- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'xyz_can_login_to_vm@example.com', false, true, true], # existing vm login name
- [false, 'active-notify@example.com', 'inactive-notify@example.com', 'xyz_can_login_to_vm@example.com', false, false, true], # existing vm login name, but we are not creating repo or login link
- ].each do |active, active_recipients, inactive_recipients, email, auto_setup_vm, auto_setup_repo, valid_email_format|
- test "create new user with auto setup #{email} #{auto_setup_vm} #{auto_setup_repo}" do
- auto_setup_new_users = Rails.configuration.auto_setup_new_users
- auto_setup_new_users_with_vm_uuid = Rails.configuration.auto_setup_new_users_with_vm_uuid
- auto_setup_new_users_with_repository = Rails.configuration.auto_setup_new_users_with_repository
-
- begin
- set_user_from_auth :admin
-
- Rails.configuration.auto_setup_new_users = true
-
- if auto_setup_vm
- Rails.configuration.auto_setup_new_users_with_vm_uuid = virtual_machines(:testvm)['uuid']
- else
- Rails.configuration.auto_setup_new_users_with_vm_uuid = false
- end
+ # Easy inactive user tests.
+ [false, [], [], "inactive-none@example.com", false, false, "inactivenone"],
+ [false, [], [], "inactive-vm@example.com", true, false, "inactivevm"],
+ [false, [], [], "inactive-repo@example.com", false, true, "inactiverepo"],
+ [false, [], [], "inactive-both@example.com", true, true, "inactiveboth"],
+
+ # Easy active user tests.
+ [true, "active-notify@example.com", "inactive-notify@example.com", "active-none@example.com", false, false, "activenone"],
+ [true, "active-notify@example.com", "inactive-notify@example.com", "active-vm@example.com", true, false, "activevm"],
+ [true, "active-notify@example.com", "inactive-notify@example.com", "active-repo@example.com", false, true, "activerepo"],
+ [true, "active-notify@example.com", "inactive-notify@example.com", "active-both@example.com", true, true, "activeboth"],
+
+ # Test users with malformed e-mail addresses.
+ [false, [], [], nil, true, true, nil],
+ [false, [], [], "arvados", true, true, nil],
+ [false, [], [], "@example.com", true, true, nil],
+ [true, "active-notify@example.com", "inactive-notify@example.com", "*!*@example.com", true, false, nil],
+ [true, "active-notify@example.com", "inactive-notify@example.com", "*!*@example.com", false, false, nil],
+
+ # Test users with various username transformations.
+ [false, [], [], "arvados@example.com", false, false, "arvados2"],
+ [true, "active-notify@example.com", "inactive-notify@example.com", "arvados@example.com", false, false, "arvados2"],
+ [true, "active-notify@example.com", "inactive-notify@example.com", "root@example.com", true, false, "root2"],
+ [false, "active-notify@example.com", "inactive-notify@example.com", "root@example.com", true, false, "root2"],
+ [true, "active-notify@example.com", "inactive-notify@example.com", "roo_t@example.com", false, true, "root2"],
+ [false, [], [], "^^incorrect_format@example.com", true, true, "incorrectformat"],
+ [true, "active-notify@example.com", "inactive-notify@example.com", "&4a_d9.@example.com", true, true, "ad9"],
+ [true, "active-notify@example.com", "inactive-notify@example.com", "&4a_d9.@example.com", false, false, "ad9"],
+ [false, "active-notify@example.com", "inactive-notify@example.com", "&4a_d9.@example.com", true, true, "ad9"],
+ [false, "active-notify@example.com", "inactive-notify@example.com", "&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} #{email} #{auto_setup_vm} #{auto_setup_repo}" do
+ set_user_from_auth :admin
+
+ Rails.configuration.auto_setup_new_users = true
+
+ if auto_setup_vm
+ Rails.configuration.auto_setup_new_users_with_vm_uuid = virtual_machines(:testvm)['uuid']
+ else
+ Rails.configuration.auto_setup_new_users_with_vm_uuid = false
+ end