X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d44a5c508cfa664134daad806d7be9a7cb0bd6ee..44d4d43331979c87cee5df9ff952fd80a6e9c5f8:/services/api/test/functional/arvados/v1/users_controller_test.rb 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 9c4d18b241..62ed8789fa 100644 --- a/services/api/test/functional/arvados/v1/users_controller_test.rb +++ b/services/api/test/functional/arvados/v1/users_controller_test.rb @@ -83,7 +83,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase test "create user with user, vm and repo as input" do authorize_with :admin - repo_name = 'test_repo' + repo_name = 'usertestrepo' post :setup, { repo_name: repo_name, @@ -113,7 +113,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase created['uuid'], created['email'], 'arvados#user', false, 'User' verify_link response_items, 'arvados#repository', true, 'permission', 'can_manage', - repo_name, created['uuid'], 'arvados#repository', true, 'Repository' + "foo/#{repo_name}", created['uuid'], 'arvados#repository', true, 'Repository' verify_link response_items, 'arvados#group', true, 'permission', 'can_read', 'All users', created['uuid'], 'arvados#group', true, 'Group' @@ -129,7 +129,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase post :setup, { uuid: 'bogus_uuid', - repo_name: 'test_repo', + repo_name: 'usertestrepo', vm_uuid: @vm_uuid } response_body = JSON.parse(@response.body) @@ -143,7 +143,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase post :setup, { user: {uuid: 'bogus_uuid'}, - repo_name: 'test_repo', + repo_name: 'usertestrepo', vm_uuid: @vm_uuid, openid_prefix: 'https://www.google.com/accounts/o8/id' } @@ -158,7 +158,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase authorize_with :admin post :setup, { - repo_name: 'test_repo', + repo_name: 'usertestrepo', vm_uuid: @vm_uuid, openid_prefix: 'https://www.google.com/accounts/o8/id' } @@ -174,7 +174,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase post :setup, { user: {}, - repo_name: 'test_repo', + repo_name: 'usertestrepo', vm_uuid: @vm_uuid, openid_prefix: 'https://www.google.com/accounts/o8/id' } @@ -191,7 +191,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase post :setup, { uuid: users(:inactive).uuid, - repo_name: 'test_repo', + repo_name: 'usertestrepo', vm_uuid: @vm_uuid } @@ -207,7 +207,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase # expect repo and vm links verify_link response_items, 'arvados#repository', true, 'permission', 'can_manage', - 'test_repo', resp_obj['uuid'], 'arvados#repository', true, 'Repository' + 'inactiveuser/usertestrepo', resp_obj['uuid'], 'arvados#repository', true, 'Repository' verify_link response_items, 'arvados#virtualMachine', true, 'permission', 'can_login', @vm_uuid, resp_obj['uuid'], 'arvados#virtualMachine', false, 'VirtualMachine' @@ -257,7 +257,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase authorize_with :admin post :setup, { - repo_name: 'test_repo', + repo_name: 'usertestrepo', user: {email: 'foo@example.com'}, openid_prefix: 'https://www.google.com/accounts/o8/id' } @@ -276,7 +276,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase authorize_with :admin post :setup, { - repo_name: 'test_repo', + repo_name: 'usertestrepo', vm_uuid: 'no_such_vm', user: {email: 'foo@example.com'}, openid_prefix: 'https://www.google.com/accounts/o8/id' @@ -293,7 +293,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase authorize_with :admin post :setup, { - repo_name: 'test_repo', + repo_name: 'usertestrepo', openid_prefix: 'https://www.google.com/accounts/o8/id', vm_uuid: @vm_uuid, user: {email: 'foo@example.com'} @@ -333,7 +333,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase 'All users', response_object['uuid'], 'arvados#group', true, 'Group' verify_link response_items, 'arvados#repository', false, 'permission', 'can_manage', - 'test_repo', response_object['uuid'], 'arvados#repository', true, 'Repository' + 'foo/usertestrepo', response_object['uuid'], 'arvados#repository', true, 'Repository' verify_link response_items, 'arvados#virtualMachine', false, 'permission', 'can_login', nil, response_object['uuid'], 'arvados#virtualMachine', false, 'VirtualMachine' @@ -344,7 +344,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase post :setup, { openid_prefix: 'https://www.google.com/accounts/o8/id', - repo_name: 'test_repo', + repo_name: 'usertestrepo', vm_uuid: @vm_uuid, user: { first_name: 'test_first_name', @@ -370,7 +370,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase post :setup, { openid_prefix: 'https://www.google.com/accounts/o8/id', - repo_name: 'test_repo', + repo_name: 'usertestrepo', user: { email: inactive_user['email'] } @@ -391,7 +391,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase authorize_with :admin post :setup, { - repo_name: 'test_repo', + repo_name: 'usertestrepo', openid_prefix: 'http://www.example.com/account', user: { first_name: "in_create_test_first_name", @@ -418,7 +418,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase created['uuid'], created['email'], 'arvados#user', false, 'User' verify_link response_items, 'arvados#repository', true, 'permission', 'can_manage', - 'test_repo', created['uuid'], 'arvados#repository', true, 'Repository' + 'foo/usertestrepo', created['uuid'], 'arvados#repository', true, 'Repository' verify_link response_items, 'arvados#group', true, 'permission', 'can_read', 'All users', created['uuid'], 'arvados#group', true, 'Group' @@ -431,7 +431,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase authorize_with :admin post :setup, { - repo_name: 'test_repo', + repo_name: 'usertestrepo', user: { first_name: "in_create_test_first_name", last_name: "test_last_name", @@ -456,7 +456,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase email: "foo@example.com" }, vm_uuid: @vm_uuid, - repo_name: 'test_repo', + repo_name: 'usertestrepo', openid_prefix: 'https://www.google.com/accounts/o8/id' } @@ -478,7 +478,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase created['uuid'], created['email'], 'arvados#user', false, 'User' verify_link response_items, 'arvados#repository', true, 'permission', 'can_manage', - 'test_repo', created['uuid'], 'arvados#repository', true, 'Repository' + 'foo/usertestrepo', created['uuid'], 'arvados#repository', true, 'Repository' verify_link response_items, 'arvados#group', true, 'permission', 'can_read', 'All users', created['uuid'], 'arvados#group', true, 'Group' @@ -522,7 +522,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase # invoke setup with a repository post :setup, { - repo_name: 'new_repo', + repo_name: 'usertestrepo', uuid: active_user['uuid'] } @@ -538,7 +538,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase 'All users', created['uuid'], 'arvados#group', true, 'Group' verify_link response_items, 'arvados#repository', true, 'permission', 'can_manage', - 'new_repo', created['uuid'], 'arvados#repository', true, 'Repository' + 'active/usertestrepo', created['uuid'], 'arvados#repository', true, 'Repository' verify_link response_items, 'arvados#virtualMachine', false, 'permission', 'can_login', nil, created['uuid'], 'arvados#virtualMachine', false, 'VirtualMachine' @@ -547,6 +547,11 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase test "setup active user with vm and no repo" do authorize_with :admin active_user = users(:active) + repos_query = Repository.where(owner_uuid: active_user.uuid) + repo_link_query = Link.where(tail_uuid: active_user.uuid, + link_class: "permission", name: "can_manage") + repos_count = repos_query.count + repo_link_count = repo_link_query.count # invoke setup with a repository post :setup, { @@ -566,8 +571,8 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase verify_link response_items, 'arvados#group', true, 'permission', 'can_read', 'All users', created['uuid'], 'arvados#group', true, 'Group' - verify_link response_items, 'arvados#repository', false, 'permission', 'can_manage', - 'new_repo', created['uuid'], 'arvados#repository', true, 'Repository' + assert_equal(repos_count, repos_query.count) + assert_equal(repo_link_count, repo_link_query.count) verify_link response_items, 'arvados#virtualMachine', true, 'permission', 'can_login', @vm_uuid, created['uuid'], 'arvados#virtualMachine', false, 'VirtualMachine' @@ -579,7 +584,7 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase assert active_user['is_active'], 'expected is_active for active user' verify_link_existence active_user['uuid'], active_user['email'], - false, true, false, true, true + false, true, true, true, true authorize_with :admin @@ -648,11 +653,11 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase assert_equal Rails.configuration.user_notifier_email_from, setup_email.from[0] assert_equal 'foo@example.com', setup_email.to[0] - assert_equal 'Welcome to Curoverse', setup_email.subject - assert (setup_email.body.to_s.include? 'Your Arvados account has been set up'), - 'Expected Your Arvados account has been set up in email body' - assert (setup_email.body.to_s.include? 'foo@example.com'), - 'Expected user email in email body' + assert_equal 'Welcome to Curoverse - shell account enabled', setup_email.subject + assert (setup_email.body.to_s.include? 'Your Arvados shell account has been set up'), + 'Expected Your Arvados shell account has been set up in email body' + assert (setup_email.body.to_s.include? '/virtual_machines'), + 'Expected /virtual_machines link to appear in email body' assert (setup_email.body.to_s.include? Rails.configuration.workbench_address), 'Expected workbench url in email body' end @@ -740,17 +745,17 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase authorize_with :admin user = {} - user[:prefs] = users(:active_no_prefs_profile).prefs + user[:prefs] = users(:active_no_prefs_profile_no_getting_started_shown).prefs user[:prefs][:profile] = {:profile => {'organization' => 'example.com'}} put :update, { - id: users(:active_no_prefs_profile).uuid, + id: users(:active_no_prefs_profile_no_getting_started_shown).uuid, user: user } assert_response :success found_email = false ActionMailer::Base.deliveries.andand.each do |email| - if email.subject == "Profile created by #{users(:active_no_prefs_profile).email}" + if email.subject == "Profile created by #{users(:active_no_prefs_profile_no_getting_started_shown).email}" found_email = true break end @@ -779,6 +784,16 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase assert_equal false, found_email, 'Expected no email after updating profile' end + test "user API response includes writable_by" do + authorize_with :active + get :current + assert_response :success + assert_includes(json_response["writable_by"], users(:active).uuid, + "user's writable_by should include self") + assert_includes(json_response["writable_by"], users(:active).owner_uuid, + "user's writable_by should include its owner_uuid") + end + NON_ADMIN_USER_DATA = ["uuid", "kind", "is_active", "email", "first_name", "last_name"].sort