3153: update tests to check for existing repo name
authorradhika <radhika@curoverse.com>
Thu, 21 Aug 2014 18:52:00 +0000 (14:52 -0400)
committerradhika <radhika@curoverse.com>
Thu, 21 Aug 2014 18:52:00 +0000 (14:52 -0400)
services/api/app/mailers/admin_notifier.rb
services/api/app/models/user.rb
services/api/test/fixtures/repositories.yml
services/api/test/unit/user_test.rb

index 2bb0aef7b344129e9c0a3d1fee4748d61e21ac9f..035072b93423311a895d7dc6e10deb4b131b0010 100644 (file)
@@ -14,7 +14,7 @@ class AdminNotifier < ActionMailer::Base
       if Rails.configuration.auto_setup_new_users
         add_to_subject = @user.is_invited ? 'and setup' : ', but not setup'
       end
-      
+
       mail(to: @recipients,
            subject: "#{Rails.configuration.email_subject_prefix}New user created #{add_to_subject} notification"
           )
index 77da32cdf899cdc0f8dcb82b493406796cc3d3a5..5530eb6523f6791e1c28161208fda5fad8eba442 100644 (file)
@@ -438,8 +438,9 @@ class User < ArvadosModel
         return true
       else
         username = derive_unique_username username
-      end  
+      end
     end
+
     # setup user
     if !Rails.configuration.auto_setup_new_users_with_vm_uuid &&
        !Rails.configuration.auto_setup_new_users_with_repository
index 80682a371cf4b790be95454f0589773610c7e569..d32152d64e7d15131bdceb0fc4dc9245eb9a5a40 100644 (file)
@@ -12,3 +12,8 @@ repository2:
   uuid: zzzzz-s0uqq-382brsig8rp3667
   owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz # active user
   name: foo2
+
+auto_setup_repository:
+  uuid: zzzzz-s0uqq-382brabc8rp3667
+  owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz # active user
+  name: auto_setup_repo
index c9be478afb607d0fd5c401a19b47cfebde44a01f..6402fb4dad685e5febec441aafab4a6993927b66 100644 (file)
@@ -154,10 +154,10 @@ class UserTest < ActiveSupport::TestCase
 
     [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'
-    [true, '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', 'auto_setup_repo@example.com', true, true, true],  # existing repository name 'auto_setup_repo'
+    [true, 'active-notify@example.com', 'inactive-notify@example.com', 'auto_setup_repo@example.com', true, false, true],  # existing repository name 'auto_setup_repo'
+    [false, 'active-notify@example.com', 'inactive-notify@example.com', 'auto_setup_repo@example.com', false, true, true],  # existing repository name 'auto_setup_repo'
+    [false, 'active-notify@example.com', 'inactive-notify@example.com', 'auto_setup_repo@example.com', false, false, true],  # existing repository name 'auto_setup_repo', 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
     [true, 'active-notify@example.com', 'inactive-notify@example.com', 'xyz_can_login_to_vm@example.com', true, false, true], # existing vm login name
@@ -479,15 +479,8 @@ class UserTest < ActiveSupport::TestCase
 
       username = user.email.partition('@')[0] if email
 
-      # check vm uuid
-      vm_uuid = Rails.configuration.auto_setup_new_users_with_vm_uuid
-      if vm_uuid
-        verify_link_exists true, vm_uuid, user.uuid, 'permission', 'can_login', 'username', username
-      else
-        verify_link_exists false, vm_uuid, user.uuid, 'permission', 'can_login', 'username', username
-      end
-
       # check repo
+      repo_names = []
       if Rails.configuration.auto_setup_new_users_with_repository
         repos = Repository.where('name like ?', "%#{username}%")
         assert_not_nil repos, 'repository not found'
@@ -495,9 +488,25 @@ class UserTest < ActiveSupport::TestCase
         repo_uuids = []
         repos.each do |repo|
           repo_uuids << repo[:uuid]
+          repo_names << repo[:name]
         end
+        if username == 'auto_setup_repo'
+          begin
+            repo_names.delete('auto_setup_repo')
+          ensure
+            assert_equal true, repo_names.any?, 'Repository name for username foo is not unique'
+          end
+        end    
         verify_link_exists true, repo_uuids, user.uuid, 'permission', 'can_manage', nil, nil
       end
+
+      # check vm uuid
+      vm_uuid = Rails.configuration.auto_setup_new_users_with_vm_uuid
+      if vm_uuid
+        verify_link_exists true, vm_uuid, user.uuid, 'permission', 'can_login', 'username', (username == 'auto_setup_repo' ? repo_names.first : username)
+      else
+        verify_link_exists false, vm_uuid, user.uuid, 'permission', 'can_login', 'username', (username == 'auto_setup_repo' ? repo_names.first : username)
+      end
     end
 
     # check email notifications