def self.setup(user, openid_prefix, repo_name=nil, vm_uuid=nil)
login_perm_props = {identity_url_prefix: openid_prefix}
+
if user.uuid
found = User.find_by_uuid user.uuid
+ if found
+ user = found
+ end
end
if !found
raise "No email found in the input. Aborting user creation."
end
- if !user.save
- raise "Save failed"
- end
- else
- user = found
- end
-
- # Check oid_login_perm
- oid_login_perms = Link.where(tail_uuid: user.email,
- head_kind: 'arvados#user',
- link_class: 'permission',
- name: 'can_login')
+ user.save!
+
+ # Check oid_login_perm
+ oid_login_perms = Link.where(tail_uuid: user.email,
+ head_kind: 'arvados#user',
+ link_class: 'permission',
+ name: 'can_login')
- if !oid_login_perms.any?
- # create openid login permission
- oid_login_perm = Link.create(link_class: 'permission',
+ if !oid_login_perms.any?
+ # create openid login permission
+ oid_login_perm = Link.create(link_class: 'permission',
name: 'can_login',
tail_kind: 'email',
tail_uuid: user.email,
head_uuid: user.uuid,
properties: login_perm_props
)
- logger.info { "openid login permission: " + oid_login_perm[:uuid] }
- else
- oid_login_perm = oid_login_perms.first
+ logger.info { "openid login permission: " + oid_login_perm[:uuid] }
+ else
+ oid_login_perm = oid_login_perms.first
+ end
end
# create repo, vm, and group links
post :setup, {
uuid: 'bogus_uuid',
repo_name: 'test_repo',
- vm_uuid: @vm_uuid,
- openid_prefix: 'https://www.google.com/accounts/o8/id'
+ vm_uuid: @vm_uuid
}
response_body = JSON.parse(@response.body)
response_errors = response_body['errors']
authorize_with :admin
post :setup, {
- #uuid: 'not_an_existing_uuid_and_not_email_format',
repo_name: 'test_repo',
vm_uuid: @vm_uuid,
openid_prefix: 'https://www.google.com/accounts/o8/id'
post :setup, {
uuid: inactive_user['uuid'],
repo_name: 'test_repo',
- vm_uuid: @vm_uuid,
- openid_prefix: 'https://www.google.com/accounts/o8/id'
+ vm_uuid: @vm_uuid
}
assert_response :success
post :setup, {
uuid: inactive_user['uuid'],
- user: {email: 'junk_email'},
- openid_prefix: 'https://www.google.com/accounts/o8/id'
+ user: {email: 'junk_email'}
}
assert_response :success
assert_equal 'test@abc.com', created['email'], 'expected input email'
# verify links
- verify_link response_items, 'oid_login_perm', true, 'permission', 'can_login',
- created['uuid'], created['email'], 'arvados#user', false, 'User'
-
verify_link response_items, 'group_perm', true, 'permission', 'can_read',
'All users', created['uuid'], 'arvados#group', true, 'Group'
assert_equal created['email'], 'test@abc.com', 'expected original email'
# verify links
- verify_link response_items, 'oid_login_perm', true, 'permission', 'can_login',
- created['uuid'], created['email'], 'arvados#user', false, 'User'
-
verify_link response_items, 'group_perm', true, 'permission', 'can_read',
'All users', created['uuid'], 'arvados#group', true, 'Group'
verify_user resp_user, email
assert_equal user.uuid, resp_user[:uuid], 'expected uuid not found'
- oid_login_perm = response[:oid_login_perm]
- verify_link oid_login_perm, 'permission', 'can_login', resp_user[:email],
- resp_user[:uuid]
- assert_equal openid_prefix, oid_login_perm[:properties][:identity_url_prefix],
- 'expected identity_url_prefix not found for oid_login_perm'
-
verify_link response[:group_perm], 'permission', 'can_read',
resp_user[:uuid], nil
verify_user resp_user, email
assert_equal user.uuid, resp_user[:uuid], 'expected uuid not found'
- oid_login_perm = response[:oid_login_perm]
- verify_link oid_login_perm, 'permission', 'can_login', resp_user[:email],
- resp_user[:uuid]
- assert_equal openid_prefix, oid_login_perm[:properties][:identity_url_prefix],
- 'expected identity_url_prefix not found for oid_login_perm'
-
verify_link response[:group_perm], 'permission', 'can_read',
resp_user[:uuid], nil