2659: add completed job fixture in publicly accessible project and test assertions...
[arvados.git] / apps / workbench / test / integration / user_manage_account_test.rb
index c8149a77ae94791006e429dd80a69644fec0edfa..0414f4e09d8252580addbc8cbc3dce5365815fe1 100644 (file)
@@ -22,7 +22,6 @@ class UserManageAccountTest < ActionDispatch::IntegrationTest
       assert page.has_text?('Current Token'), 'No text - Current Token'
       assert page.has_text?('The Arvados API token is a secret key that enables the Arvados SDKs to access Arvados'), 'No text - Arvados API token'
       add_and_verify_ssh_key
-      verify_repositories user
     else  # inactive user
       within('.navbar-fixed-top') do
         find('a', text: "#{user['email']}").click
@@ -61,40 +60,6 @@ class UserManageAccountTest < ActionDispatch::IntegrationTest
       assert page.has_text?('added_in_test'), 'No text - added_in_test'
   end
 
-  def verify_repositories user
-    Thread.current[:arvados_api_token] = @@API_AUTHS["admin"]['api_token']
-    repo_links = Link.filter([['head_uuid', 'is_a', 'arvados#repository'],
-                              ['tail_uuid', '=', user['uuid']],
-                              ['link_class', '=', 'permission']])
-    repos = Repository.where uuid: repo_links.collect(&:head_uuid)
-    repositories = {}
-    repos.each do |repo|
-      repositories[repo.uuid] = repo
-    end
-
-    repo_writables = {}
-    repo_links.each do |link|
-      if link.name.in? ['can_write','can_manage']
-        repo_writables[link.head_uuid] = link.name
-      end
-    end
-
-    repo_links.each do |link|
-      if repo_writables[link.head_uuid] == 'can_manage'
-        assert_selector 'a', text: repositories[link.head_uuid]['name']
-        within('tr', text: repositories[link.head_uuid]['fetch_url']) do
-          assert_text 'writable'
-        end
-      else
-        assert_no_selector 'a', text: repositories[link.head_uuid]['name']
-        assert_text repositories[link.head_uuid]['name']
-        within('tr', text: repositories[link.head_uuid]['fetch_url']) do
-          assert_text 'read-only'
-        end
-      end
-    end
-  end
-
   [
     ['inactive', api_fixture('users')['inactive']],
     ['inactive_uninvited', api_fixture('users')['inactive_uninvited']],
@@ -132,4 +97,29 @@ class UserManageAccountTest < ActionDispatch::IntegrationTest
       end
     end
   end
+
+  test "verify repositories for active user" do
+    visit page_with_token('active', '/manage_account')
+
+    repos = [[api_fixture('repositories')['foo'], true, true],
+             [api_fixture('repositories')['repository3'], false, false],
+             [api_fixture('repositories')['repository4'], true, false]]
+
+    repos.each do |(repo, writable, sharable)|
+      within('tr', text: repo['name']+'.git') do
+        if sharable
+          assert_selector 'a', text:'Share'
+          assert_text 'writable'
+        else
+          assert_text repo['name']
+          assert_no_selector 'a', text:'Share'
+          if writable
+            assert_text 'writable'
+          else
+            assert_text 'read-only'
+          end
+        end
+      end
+    end
+  end
 end