Merge branch '8784-dir-listings'
[arvados.git] / apps / workbench / test / unit / link_test.rb
index 944bfced3d30423ff2b83e0d6cf7c134ce1f8e88..9fbf98ded6f582d9fa97d875add273fb96b24cb2 100644 (file)
@@ -1,7 +1,55 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 require 'test_helper'
 
 class LinkTest < ActiveSupport::TestCase
-  # test "the truth" do
-  #   assert true
-  # end
+
+  reset_api_fixtures :after_each_test, false
+
+  def uuid_for(fixture_name, object_name)
+    api_fixture(fixture_name)[object_name]["uuid"]
+  end
+
+  test "active user can get permissions for owned project object" do
+    use_token :active
+    project = Group.find(uuid_for("groups", "aproject"))
+    refute_empty(Link.permissions_for(project),
+                 "no permissions found for managed project")
+  end
+
+  test "active user can get permissions for owned project by UUID" do
+    use_token :active
+    refute_empty(Link.permissions_for(uuid_for("groups", "aproject")),
+                 "no permissions found for managed project")
+  end
+
+  test "admin can get permissions for project object" do
+    use_token :admin
+    project = Group.find(uuid_for("groups", "aproject"))
+    refute_empty(Link.permissions_for(project),
+                 "no permissions found for managed project")
+  end
+
+  test "admin can get permissions for project by UUID" do
+    use_token :admin
+    refute_empty(Link.permissions_for(uuid_for("groups", "aproject")),
+                 "no permissions found for managed project")
+  end
+
+  test "project viewer can't get permissions for readable project object" do
+    use_token :project_viewer
+    project = Group.find(uuid_for("groups", "aproject"))
+    assert_raises(ArvadosApiClient::AccessForbiddenException) do
+      Link.permissions_for(project)
+    end
+  end
+
+  test "project viewer can't get permissions for readable project by UUID" do
+    use_token :project_viewer
+    assert_raises(ArvadosApiClient::AccessForbiddenException) do
+      Link.permissions_for(uuid_for("groups", "aproject"))
+    end
+  end
 end