X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ffd4738242c61fa5acd423f927339f836dfb0ffb..be4852ec32e5eeed1af9a62017cfc39ed66ac186:/apps/workbench/test/controllers/container_requests_controller_test.rb diff --git a/apps/workbench/test/controllers/container_requests_controller_test.rb b/apps/workbench/test/controllers/container_requests_controller_test.rb index 70e042cd3d..bd2f6beb6b 100644 --- a/apps/workbench/test/controllers/container_requests_controller_test.rb +++ b/apps/workbench/test/controllers/container_requests_controller_test.rb @@ -38,22 +38,72 @@ class ContainerRequestsControllerTest < ActionController::TestCase get :show, {id: uuid}, session_for(:active) assert_response :success - assert_includes @response.body, "href=\"/container_requests/#{uuid}/copy\"" + assert_includes @response.body, "action=\"/container_requests/#{uuid}/copy\"" end - test "container request copy" do - completed_cr = api_fixture('container_requests')['completed'] - post(:copy, - { - id: completed_cr['uuid'] - }, - session_for(:active)) - assert_response 302 - copied_cr = assigns(:object) - assert_not_nil copied_cr - assert_equal 'Uncommitted', copied_cr[:state] - assert_equal "Copy of #{completed_cr['name']}", copied_cr['name'] - assert_equal completed_cr['cmd'], copied_cr['cmd'] - assert_equal completed_cr['runtime_constraints']['ram'], copied_cr['runtime_constraints'][:ram] + [ + ['completed', false, false], + ['completed', true, false], + ['completed-older', false, true], + ['completed-older', true, true], + ].each do |cr_fixture, reuse_enabled, uses_acr| + test "container request #{uses_acr ? '' : 'not'} using arvados-cwl-runner copy #{reuse_enabled ? 'with' : 'without'} reuse enabled" do + completed_cr = api_fixture('container_requests')[cr_fixture] + # Set up post request params + copy_params = {id: completed_cr['uuid']} + if reuse_enabled + copy_params.merge!({use_existing: true}) + end + post(:copy, copy_params, session_for(:active)) + assert_response 302 + copied_cr = assigns(:object) + assert_not_nil copied_cr + assert_equal 'Uncommitted', copied_cr[:state] + assert_equal "Copy of #{completed_cr['name']}", copied_cr['name'] + assert_equal completed_cr['cmd'], copied_cr['cmd'] + assert_equal completed_cr['runtime_constraints']['ram'], copied_cr['runtime_constraints'][:ram] + if reuse_enabled + assert copied_cr[:use_existing] + else + refute copied_cr[:use_existing] + end + # If the CR's command is arvados-cwl-runner, the appropriate flag should + # be passed to it + if uses_acr + if reuse_enabled + # arvados-cwl-runner's default behavior is to enable reuse + assert_includes copied_cr['command'], 'arvados-cwl-runner' + assert_not_includes copied_cr['command'], '--disable-reuse' + else + assert_includes copied_cr['command'], 'arvados-cwl-runner' + assert_includes copied_cr['command'], '--disable-reuse' + assert_not_includes copied_cr['command'], '--enable-reuse' + end + else + # If no arvados-cwl-runner is being used, the command should be left alone + assert_equal completed_cr['command'], copied_cr['command'] + end + end + end + + [ + ['completed', true], + ['running', true], + ['queued', true], + ['uncommitted', false], + ].each do |cr_fixture, should_show| + test "provenance tab should #{should_show ? '' : 'not'} be shown on #{cr_fixture} container requests" do + cr = api_fixture('container_requests')[cr_fixture] + assert_not_nil cr + get(:show, + {id: cr['uuid']}, + session_for(:active)) + assert_response :success + if should_show + assert_includes @response.body, "href=\"#Provenance\"" + else + assert_not_includes @response.body, "href=\"#Provenance\"" + end + end end end