X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/964ab3dd90ff1508efc0c77378cde2b3a4da1029..feaf44094afa6774cd6583f1a121454d6754ba0c:/services/api/test/functional/arvados/v1/virtual_machines_controller_test.rb diff --git a/services/api/test/functional/arvados/v1/virtual_machines_controller_test.rb b/services/api/test/functional/arvados/v1/virtual_machines_controller_test.rb index fd7431dc44..329bc1589a 100644 --- a/services/api/test/functional/arvados/v1/virtual_machines_controller_test.rb +++ b/services/api/test/functional/arvados/v1/virtual_machines_controller_test.rb @@ -1,4 +1,75 @@ require 'test_helper' class Arvados::V1::VirtualMachinesControllerTest < ActionController::TestCase + def get_logins_for(vm_sym) + authorize_with :admin + get(:logins, id: virtual_machines(vm_sym).uuid) + end + + def find_login(sshkey_sym) + assert_response :success + want_key = authorized_keys(sshkey_sym).public_key + logins = json_response["items"].select do |login| + login["public_key"] == want_key + end + assert_equal(1, logins.size, "failed to find #{sshkey_sym} login") + logins.first + end + + test "username propagated from permission" do + get_logins_for(:testvm2) + admin_login = find_login(:admin) + perm = links(:admin_can_login_to_testvm2) + assert_equal(perm.properties["username"], admin_login["username"]) + end + + test "groups propagated from permission" do + get_logins_for(:testvm2) + admin_login = find_login(:admin) + perm = links(:admin_can_login_to_testvm2) + assert_equal(perm.properties["groups"], admin_login["groups"]) + end + + test "groups is an empty list by default" do + get_logins_for(:testvm2) + active_login = find_login(:active) + perm = links(:active_can_login_to_testvm2) + assert_equal([], active_login["groups"]) + end + + test "logins without usernames not listed" do + get_logins_for(:testvm2) + assert_response :success + spectator_uuid = users(:spectator).uuid + assert_empty(json_response. + select { |login| login["user_uuid"] == spectator_uuid }) + end + + test "logins without ssh keys are listed" do + u, vm = nil + act_as_system_user do + u = create :active_user, first_name: 'Bob', last_name: 'Blogin' + vm = VirtualMachine.create! hostname: 'foo.shell' + Link.create!(tail_uuid: u.uuid, + head_uuid: vm.uuid, + link_class: 'permission', + name: 'can_login', + properties: {'username' => 'bobblogin'}) + end + authorize_with :admin + get :logins, id: vm.uuid + assert_response :success + assert_equal 1, json_response['items'].length + assert_equal nil, json_response['items'][0]['public_key'] + assert_equal nil, json_response['items'][0]['authorized_key_uuid'] + assert_equal u.uuid, json_response['items'][0]['user_uuid'] + assert_equal 'bobblogin', json_response['items'][0]['username'] + end + + test 'get all logins' do + authorize_with :admin + get :get_all_logins + find_login :admin + find_login :active + end end