From 2013479619e9aa838037262564ac4f265f786ad0 Mon Sep 17 00:00:00 2001 From: radhika chippada Date: Tue, 25 Mar 2014 12:32:35 -0400 Subject: [PATCH] Ground work to remove found object logic from user model's setup method --- .../arvados/v1/users_controller.rb | 24 +++++++++++++++---- .../arvados/v1/users_controller_test.rb | 8 +++---- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/services/api/app/controllers/arvados/v1/users_controller.rb b/services/api/app/controllers/arvados/v1/users_controller.rb index 3d6e61c61c..2c3b2df435 100644 --- a/services/api/app/controllers/arvados/v1/users_controller.rb +++ b/services/api/app/controllers/arvados/v1/users_controller.rb @@ -90,6 +90,7 @@ class Arvados::V1::UsersController < ApplicationController # create user object and all the needed links def setup + @object = nil if params[:uuid] @object = User.find_by_uuid params[:uuid] if !@object @@ -97,16 +98,29 @@ class Arvados::V1::UsersController < ApplicationController end else if !params[:user] - raise ArgumentError.new "Required uuid or email" - end - @object = model_class.new resource_attrs - if !params[:openid_prefix] - raise ArgumentError.new "Required openid_prefix parameter is missing." + raise ArgumentError.new "Required uuid or user" + else + if params[:user]['uuid'] + @object = User.find_by_uuid params[:user]['uuid'] + end + + if !@object + if !params[:user]['email'] + raise ArgumentError.new "Require user email" + end + + if !params[:openid_prefix] + raise ArgumentError.new "Required openid_prefix parameter is missing." + end + + @object = model_class.new resource_attrs + end end end @response = User.setup @object, params[:openid_prefix], params[:repo_name], params[:vm_uuid] + render json: { kind: "arvados#HashList", items: @response } end diff --git a/services/api/test/functional/arvados/v1/users_controller_test.rb b/services/api/test/functional/arvados/v1/users_controller_test.rb index a487a33e4c..81f096c178 100644 --- a/services/api/test/functional/arvados/v1/users_controller_test.rb +++ b/services/api/test/functional/arvados/v1/users_controller_test.rb @@ -124,7 +124,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase response_body = JSON.parse(@response.body) response_errors = response_body['errors'] assert_not_nil response_errors, 'Expected error in response' - assert (response_errors.first.include? 'RuntimeError: No email found'), + assert (response_errors.first.include? 'ArgumentError: Require user email'), 'Expected RuntimeError' end @@ -139,7 +139,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase response_body = JSON.parse(@response.body) response_errors = response_body['errors'] assert_not_nil response_errors, 'Expected error in response' - assert (response_errors.first.include? 'Required uuid or email'), + assert (response_errors.first.include? 'Required uuid or user'), 'Expected ArgumentError' end @@ -155,8 +155,8 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase response_body = JSON.parse(@response.body) response_errors = response_body['errors'] assert_not_nil response_errors, 'Expected error in response' - assert (response_errors.first.include? '