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',
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
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
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} " +
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 " +
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}"
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, {
post :setup, {
repo_name: 'test_repo',
vm_uuid: 'no_such_vm',
- user: {email: 'abc@xyz.com'}
+ user: {uuid: response_object['uuid']}
}
assert_response :success
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, {
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