14873: Migrated functional tests to be integration tests.
authorLucas Di Pentima <ldipentima@veritasgenetics.com>
Thu, 4 Apr 2019 19:11:55 +0000 (16:11 -0300)
committerLucas Di Pentima <ldipentima@veritasgenetics.com>
Thu, 4 Apr 2019 19:11:55 +0000 (16:11 -0300)
Making more than 1 request on functional tests produces issues hard
to debug. Instead, those kind of tests should be done as integration tests.

Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <ldipentima@veritasgenetics.com>

services/api/test/functional/arvados/v1/groups_controller_test.rb
services/api/test/functional/arvados/v1/jobs_controller_test.rb
services/api/test/integration/groups_test.rb
services/api/test/integration/jobs_api_test.rb

index bc1f5c18400b18f040683bdd7b91bc11c737564d..37b606409ec46b89c67914313f19a6d2d827c6a8 100644 (file)
@@ -405,75 +405,6 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase
                  new_project['name'])
   end
 
-  test "unsharing a project results in hiding it from previously shared user" do
-    # Make the same call as in line 448.
-    @controller = Arvados::V1::LinksController.new
-    authorize_with :system_user
-    post :create, params: {
-      link: {
-        link_class: "permission",
-        name: "can_read",
-        head_uuid: groups(:starred_and_shared_active_user_project).uuid,
-        tail_uuid: users(:project_viewer).uuid,
-      }
-    }
-    assert_response :success
-    assert_equal 'permission', json_response['link_class']
-    l = Link.find_by_uuid(json_response['uuid'])
-    l.destroy
-    @test_counter = 0
-
-    # remove sharing link for project
-    @controller = Arvados::V1::LinksController.new
-    authorize_with :admin
-    post :destroy, params: {id: links(:share_starred_project_with_project_viewer).uuid}
-    assert_response :success
-
-    # verify that the user can no longer see the project
-    @test_counter = 0  # Reset executed action counter
-    @controller = Arvados::V1::GroupsController.new
-    authorize_with :project_viewer
-    get :index, params: {filters: [['group_class', '=', 'project']], format: :json}
-    assert_response :success
-    found_projects = {}
-    json_response['items'].each do |g|
-      found_projects[g['uuid']] = g
-    end
-    assert_equal false, found_projects.include?(groups(:starred_and_shared_active_user_project).uuid)
-
-    # share the project
-    @test_counter = 0
-    @controller = Arvados::V1::LinksController.new
-    authorize_with :system_user
-    post :create, params: {
-      link: {
-        link_class: "permission",
-        name: "can_read",
-        head_uuid: groups(:starred_and_shared_active_user_project).uuid,
-        tail_uuid: users(:project_viewer).uuid,
-      }
-    }
-    assert_response :success
-    # This fails if the call at the beginning of the test isn't
-    # made, because for some reason the links controller gets
-    # an empty params list.
-    assert_equal 'permission', json_response['link_class']
-    # NOTE that if I manually create the link, the test pass:
-    # Link.create(link_class: 'permission', name: 'can_read', head_uuid: groups(:starred_and_shared_active_user_project).uuid, tail_uuid: users(:project_viewer).uuid)
-
-    # verify that project_viewer user can now see shared project again
-    @test_counter = 0
-    @controller = Arvados::V1::GroupsController.new
-    authorize_with :project_viewer
-    get :index, params: {filters: [['group_class', '=', 'project']], format: :json}
-    assert_response :success
-    found_projects = {}
-    json_response['items'].each do |g|
-      found_projects[g['uuid']] = g
-    end
-    assert_equal true, found_projects.include?(groups(:starred_and_shared_active_user_project).uuid)
-  end
-
   [
     [['owner_uuid', '!=', 'zzzzz-tpzed-xurymjxw79nv3jz'], 200,
         'zzzzz-d1hrv-subprojpipeline', 'zzzzz-d1hrv-1xfj6xkicf2muk2'],
index be325aabe5ca90205177f89bf6bbb0ab1a54144a..fb81f23636c84f79086a88a3a4e00733745b8572 100644 (file)
@@ -479,56 +479,6 @@ class Arvados::V1::JobsControllerTest < ActionController::TestCase
     end
   end
 
-  test 'get_delete components_get again for job with components' do
-    authorize_with :active
-    get :show, params: {id: jobs(:running_job_with_components).uuid}
-    assert_response :success
-    assert_not_nil json_response["components"]
-    assert_equal ["component1", "component2"], json_response["components"].keys
-
-    # delete second component
-    @test_counter = 0  # Reset executed action counter
-    @controller = Arvados::V1::JobsController.new
-    put :update, params: {
-      id: jobs(:running_job_with_components).uuid,
-      job: {
-        components: {"component1" => "zzzzz-8i9sb-jobuuid00000001"}
-      }
-    }
-    assert_response :success
-
-    @test_counter = 0  # Reset executed action counter
-    @controller = Arvados::V1::JobsController.new
-    get :show, params: {id: jobs(:running_job_with_components).uuid}
-    assert_response :success
-    assert_not_nil json_response["components"]
-    assert_equal ["component1"], json_response["components"].keys
-
-    # delete all components
-    @test_counter = 0  # Reset executed action counter
-    @controller = Arvados::V1::JobsController.new
-    put :update, params: {
-      id: jobs(:running_job_with_components).uuid,
-      job: {
-        components: {}
-      }
-    }
-    assert_response :success
-    # These assertions shouldn't pass. It seems that the @request var is cached
-    # from the previous call on line 492.
-    assert_not_equal 0, json_response['components'].size
-    assert_not_equal [], SafeJSON.load(@request.params['job'])['components'].keys
-
-    @test_counter = 0  # Reset executed action counter
-    @controller = Arvados::V1::JobsController.new
-    get :show, params: {id: jobs(:running_job_with_components).uuid}
-    assert_response :success
-    assert_not_nil json_response["components"]
-    # The commented assertion below fails because of what's happening on the
-    # previous request
-    # assert_equal [], json_response["components"].keys
-  end
-
   test 'jobs.create disabled in config' do
     Rails.configuration.disable_api_methods = ["jobs.create",
                                                "pipeline_instances.create"]
index 3a59aff9af89c943d15654b2d0c22fc97847c157..e45dd4eb5213954631314dd3fdf57cf4ebc44beb 100644 (file)
@@ -134,6 +134,49 @@ class GroupsTest < ActionDispatch::IntegrationTest
     assert_includes coll_uuids, collections(:foo_collection_in_aproject).uuid
     assert_not_includes coll_uuids, collections(:expired_collection).uuid
   end
+
+  test "unsharing a project results in hiding it from previously shared user" do
+    # remove sharing link for project
+    delete "/arvados/v1/links/#{links(:share_starred_project_with_project_viewer).uuid}", headers: auth(:admin)
+    assert_response 200
+
+    # verify that the user can no longer see the project
+    get "/arvados/v1/groups",
+      params: {
+        filters: [['group_class', '=', 'project']].to_json,
+        limit: 1000
+      }, headers: auth(:project_viewer)
+    assert_response 200
+    found_projects = {}
+    json_response['items'].each do |g|
+      found_projects[g['uuid']] = g
+    end
+    assert_equal false, found_projects.include?(groups(:starred_and_shared_active_user_project).uuid)
+
+    # share the project
+    post "/arvados/v1/links", params: {
+      link: {
+        link_class: "permission",
+        name: "can_read",
+        head_uuid: groups(:starred_and_shared_active_user_project).uuid,
+        tail_uuid: users(:project_viewer).uuid,
+      }
+    }, headers: auth(:system_user)
+    assert_response 200
+    assert_equal 'permission', json_response['link_class']
+
+    # verify that project_viewer user can now see shared project again
+    get "/arvados/v1/groups", params: {
+      filters: [['group_class', '=', 'project']].to_json,
+      limit: 1000
+    }, headers: auth(:project_viewer)
+    assert_response 200
+    found_projects = {}
+    json_response['items'].each do |g|
+      found_projects[g['uuid']] = g
+    end
+    assert_equal true, found_projects.include?(groups(:starred_and_shared_active_user_project).uuid)
+  end
 end
 
 class NonTransactionalGroupsTest < ActionDispatch::IntegrationTest
index 4499a92cdf7236a66c6d6a727bf7ccf3ed705f77..f5fb920b46d82e4e48bd06c5db1b145ebd5279b3 100644 (file)
@@ -49,4 +49,43 @@ class JobsApiTest < ActionDispatch::IntegrationTest
       last_qsequence = qsequence
     end
   end
+
+  test 'get_delete components_get again for job with components' do
+    authorize_with :active
+    get "/arvados/v1/jobs/#{jobs(:running_job_with_components).uuid}",
+      headers: auth(:active)
+    assert_response 200
+    assert_not_nil json_response["components"]
+    assert_equal ["component1", "component2"], json_response["components"].keys
+
+    # delete second component
+    put "/arvados/v1/jobs/#{jobs(:running_job_with_components).uuid}", params: {
+      job: {
+        components: {"component1" => "zzzzz-8i9sb-jobuuid00000001"}
+      },
+      limit: 1000
+    }, headers: auth(:active)
+    assert_response 200
+
+    get "/arvados/v1/jobs/#{jobs(:running_job_with_components).uuid}",
+      headers: auth(:active)
+    assert_response 200
+    assert_not_nil json_response["components"]
+    assert_equal ["component1"], json_response["components"].keys
+
+    # delete all components
+    put "/arvados/v1/jobs/#{jobs(:running_job_with_components).uuid}", params: {
+      job: {
+        components: nil
+      },
+      limit: 1000
+    }, headers: auth(:active)
+    assert_response 200
+
+    get "/arvados/v1/jobs/#{jobs(:running_job_with_components).uuid}",
+      headers: auth(:active)
+    assert_response 200
+    assert_not_nil json_response["components"]
+    assert_equal [], json_response["components"].keys
+  end
 end