X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6eb3d1fb8fe71623fa63da46c250184cf2e4fbb8..15a9dff29d3e5c16d936650c16b498fba1002860:/services/api/test/functional/arvados/v1/jobs_controller_test.rb diff --git a/services/api/test/functional/arvados/v1/jobs_controller_test.rb b/services/api/test/functional/arvados/v1/jobs_controller_test.rb index 1e1425e92b..601f9a7af5 100644 --- a/services/api/test/functional/arvados/v1/jobs_controller_test.rb +++ b/services/api/test/functional/arvados/v1/jobs_controller_test.rb @@ -433,4 +433,79 @@ class Arvados::V1::JobsControllerTest < ActionController::TestCase assert_equal('077ba2ad3ea24a929091a9e6ce545c93199b8e57', internal_tag(json_response['uuid'])) end + + test 'get job with components' do + authorize_with :active + get :show, {id: jobs(:running_job_with_components).uuid} + assert_response :success + assert_not_nil json_response["components"] + assert_equal ["component1", "component2"], json_response["components"].keys + end + + [ + [:active, :success], + [:system_user, :success], + [:admin, 403], + ].each do |user, expected| + test "add components to job locked by active user as #{user} user and expect #{expected}" do + authorize_with user + put :update, { + id: jobs(:running).uuid, + job: { + components: {"component1" => "value1", "component2" => "value2"} + } + } + assert_response expected + if expected == :success + assert_not_nil json_response["components"] + keys = json_response["components"].keys + assert_equal ["component1", "component2"], keys + assert_equal "value1", json_response["components"][keys[0]] + end + end + end + + test 'get_delete components_get again for job with components' do + authorize_with :active + get :show, {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, { + 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, {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, { + id: jobs(:running_job_with_components).uuid, + job: { + components: {} + } + } + assert_response :success + + @test_counter = 0 # Reset executed action counter + @controller = Arvados::V1::JobsController.new + get :show, {id: jobs(:running_job_with_components).uuid} + assert_response :success + assert_not_nil json_response["components"] + assert_equal [], json_response["components"].keys + end end