Merge branch 'master' of git.curoverse.com:arvados into 6465-optimize-workbench-integ...
[arvados.git] / services / api / test / functional / arvados / v1 / virtual_machines_controller_test.rb
1 require 'test_helper'
2
3 class Arvados::V1::VirtualMachinesControllerTest < ActionController::TestCase
4   def get_logins_for(vm_sym)
5     authorize_with :admin
6     get(:logins, id: virtual_machines(vm_sym).uuid)
7   end
8
9   def find_login(sshkey_sym)
10     assert_response :success
11     want_key = authorized_keys(sshkey_sym).public_key
12     logins = json_response["items"].select do |login|
13       login["public_key"] == want_key
14     end
15     assert_equal(1, logins.size, "failed to find #{sshkey_sym} login")
16     logins.first
17   end
18
19   test "username propagated from permission" do
20     get_logins_for(:testvm2)
21     admin_login = find_login(:admin)
22     perm = links(:admin_can_login_to_testvm2)
23     assert_equal(perm.properties["username"], admin_login["username"])
24   end
25
26   test "groups propagated from permission" do
27     get_logins_for(:testvm2)
28     admin_login = find_login(:admin)
29     perm = links(:admin_can_login_to_testvm2)
30     assert_equal(perm.properties["groups"], admin_login["groups"])
31   end
32
33   test "groups is an empty list by default" do
34     get_logins_for(:testvm2)
35     active_login = find_login(:active)
36     perm = links(:active_can_login_to_testvm2)
37     assert_equal([], active_login["groups"])
38   end
39
40   test "logins without usernames not listed" do
41     get_logins_for(:testvm2)
42     assert_response :success
43     spectator_uuid = users(:spectator).uuid
44     assert_empty(json_response.
45                  select { |login| login["user_uuid"] == spectator_uuid })
46   end
47 end