+ test "create new user with notifications" do
+ set_user_from_auth :admin
+
+ create_user_and_verify_setup_and_notifications true, 'active-notify-address@example.com', 'inactive-notify-address@example.com', nil, nil
+ create_user_and_verify_setup_and_notifications true, 'active-notify-address@example.com', [], nil, nil
+ create_user_and_verify_setup_and_notifications true, [], [], nil, nil
+ create_user_and_verify_setup_and_notifications false, 'active-notify-address@example.com', 'inactive-notify-address@example.com', nil, nil
+ create_user_and_verify_setup_and_notifications false, [], 'inactive-notify-address@example.com', nil, nil
+ create_user_and_verify_setup_and_notifications false, [], [], nil, nil
+ 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
+
+ Rails.configuration.auto_setup_new_users_with_repository = auto_setup_repo
+
+ create_user_and_verify_setup_and_notifications active, new_user_recipients, inactive_recipients, email, expect_username
+ end
+ end
+