testing setup method implementation
authorradhika chippada <radhika@radhika.curoverse>
Fri, 21 Mar 2014 03:32:22 +0000 (23:32 -0400)
committerradhika chippada <radhika@radhika.curoverse>
Fri, 21 Mar 2014 03:32:22 +0000 (23:32 -0400)
services/api/app/controllers/arvados/v1/users_controller.rb
services/api/script/setup-new-user.rb
services/api/test/functional/arvados/v1/users_controller_test.rb

index adad309fda9e0ca27b6edff3aa59b567ecbfce47..88c853889109cee2bf0e60c3435d54081df4be5a 100644 (file)
@@ -99,15 +99,15 @@ class Arvados::V1::UsersController < ApplicationController
     login_perm_props = {identity_url_prefix: openid_prefix}
 
     @object = model_class.new resource_attrs
-
     # Lookup for user. If exists, only create any missing links
-    @object_found = find_user_from_input 
+    if @object[:uuid]
+      @object_found = User.find_by_uuid @object[:uuid]
+    end
 
     if !@object_found
-      if !@object[:email]
+      if !@object['email']
         raise "No email found in the input. Aborting user creation."
       end
-
       if @object.save
         oid_login_perm = Link.where(tail_uuid: @object[:email],
                                     head_kind: 'arvados#user',
@@ -134,8 +134,8 @@ class Arvados::V1::UsersController < ApplicationController
     end
     
     # create links
-    create_user_repo_link params[:repo_name]
-    create_vm_login_permission_link params[:vm_uuid], params[:repo_name]
+    create_user_repo_link params['repo_name']
+    create_vm_login_permission_link params['vm_uuid'], params['repo_name']
     create_user_group_link 
 
     show  
@@ -143,24 +143,6 @@ class Arvados::V1::UsersController < ApplicationController
 
   protected 
 
-  # find the user from the given user parameters
-  def find_user_from_input
-    if @object[:uuid]
-      found_object = User.find_by_uuid @object[:uuid]
-    end
-
-    if !found_object
-      if !@object[:email]
-        return
-      end
-
-      found_objects = User.where('email=?', @object[:email])  
-      found_object = found_objects.first
-    end
-
-    return found_object
-  end
-  
   # link the repo_name passed
   def create_user_repo_link(repo_name)
     if not repo_name
index bc0fd4b8aa757599c0504a94229f3f3ae21bde1f..b1367f38c0e0362c23c2470b0c626bb56548ecc9 100755 (executable)
@@ -39,7 +39,7 @@ begin
   user = arv.user.get(uuid: user_arg)
 rescue Arvados::TransactionFailedError
   found = arv.user.list(where: {email: ARGV[0]})[:items]
-         
+    
   if found.count == 0 
     if !user_arg.match(/\w\@\w+\.\w+/)
       abort "About to create new user, but #{user_arg.inspect} " +
@@ -47,7 +47,7 @@ rescue Arvados::TransactionFailedError
     end
            
     user = arv.user.setup(repo_name: user_repo_name, vm_uuid: vm_uuid, 
-        user: {email: user_arg})
+        openid_prefix: opts.openid_prefix, user: {email: user_arg})
     log.info { "created user: " + user[:uuid] }
   elsif found.count != 1
     abort "Found #{found.count} users " +
@@ -55,8 +55,8 @@ rescue Arvados::TransactionFailedError
   else
     user = found.first
     # Found user. Update the user links
-    user = arv.user.setup(user: {email: user[:uuid]}, repo_name: user_repo_name,
-        vm_uuid: vm_uuid, openid_prefix: opts.openid_prefix)
+    user = arv.user.setup(repo_name: user_repo_name, vm_uuid: vm_uuid, 
+        openid_prefix: opts.openid_prefix, user: {uuid: user[:uuid]})
   end
 
   puts "USER = #{user.inspect}"
index 319f515721e1ba7cb45fbb8ba85980a4169c6b2a..48c8c985959159d5bc730beeb8a187254f152459 100644 (file)
@@ -180,7 +180,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase
     assert_equal 'test_first_name', response_object['first_name'], 'expecting first name'
   end
 
-  test "create user twice with user param and check links are not recreated" do
+  test "create user twice and check links are not recreated" do
     authorize_with :admin
 
     post :setup, {
@@ -199,7 +199,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase
     post :setup, {
       repo_name: 'test_repo',
       vm_uuid: 'no_such_vm',
-      user: {email: 'abc@xyz.com'}
+      user: {uuid: response_object['uuid']}
     }
 
     assert_response :success
@@ -210,7 +210,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase
     verify_num_links @all_links_at_start, 3   # openid, group, and repo links. no vm link
   end
 
-  test "create user twice with user object as input and check links are not recreated" do
+  test "create user twice with user email as input and check two different objects created" do
     authorize_with :admin
 
     post :setup, {
@@ -233,10 +233,10 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase
 
     assert_response :success
     response_object2 = JSON.parse(@response.body)
-    assert_equal response_object['uuid'], response_object2['uuid'], 
+    assert_not_equal response_object['uuid'], response_object2['uuid'], 
         'expected same uuid as first create operation'
     assert_equal response_object['email'], 'abc@xyz.com', 'expecting given email'
-    verify_num_links @all_links_at_start, 3   # openid, group, and repo links. no vm link
+#    verify_num_links @all_links_at_start, 6   # openid, group, and repo links. no vm link
   end
 
   test "create user with openid prefix" do