8128: Add arvados.v1.api_client_authorizations.current
[arvados.git] / services / api / test / functional / arvados / v1 / virtual_machines_controller_test.rb
index d52a581adb825301a5b4de7ee4ebea346a953ebd..329bc1589afc6a2298472d739524fc094e7f0723 100644 (file)
@@ -23,6 +23,20 @@ class Arvados::V1::VirtualMachinesControllerTest < ActionController::TestCase
     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
@@ -30,4 +44,32 @@ class Arvados::V1::VirtualMachinesControllerTest < ActionController::TestCase
     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