11185: Addressed several requests:
[arvados.git] / apps / workbench / test / controllers / container_requests_controller_test.rb
1 require 'test_helper'
2
3 class ContainerRequestsControllerTest < ActionController::TestCase
4   test "visit completed container request log tab" do
5     use_token 'active'
6
7     cr = api_fixture('container_requests')['completed']
8     container_uuid = cr['container_uuid']
9     container = Container.find(container_uuid)
10
11     get :show, {id: cr['uuid'], tab_pane: 'Log'}, session_for(:active)
12     assert_response :success
13
14     assert_select "a", {:href=>"/collections/#{container['log']}", :text=>"Download the log"}
15     assert_select "a", {:href=>"#{container['log']}/baz"}
16     assert_not_includes @response.body, '<div id="event_log_div"'
17   end
18
19   test "visit running container request log tab" do
20     use_token 'active'
21
22     cr = api_fixture('container_requests')['running']
23     container_uuid = cr['container_uuid']
24     container = Container.find(container_uuid)
25
26     get :show, {id: cr['uuid'], tab_pane: 'Log'}, session_for(:active)
27     assert_response :success
28
29     assert_includes @response.body, '<div id="event_log_div"'
30     assert_select 'Download the log', false
31   end
32
33   test "completed container request offers re-run option" do
34     use_token 'active'
35
36     uuid = api_fixture('container_requests')['completed']['uuid']
37
38     get :show, {id: uuid}, session_for(:active)
39     assert_response :success
40
41    assert_includes @response.body, "action=\"/container_requests/#{uuid}/copy\""
42   end
43
44   [
45     ['completed', false, false],
46     ['completed', true, false],
47     ['completed-acr', false, true],
48     ['completed-acr', true, true],
49   ].each do |cr_fixture, reuse_enabled, uses_acr|
50     test "container request #{uses_acr ? '' : 'not'} using arvados-cwl-runner copy #{reuse_enabled ? 'with' : 'without'} reuse enabled" do
51       completed_cr = api_fixture('container_requests')[cr_fixture]
52       copy_params = {id: completed_cr['uuid']}
53       if reuse_enabled
54         copy_params.merge!({use_existing: true})
55       end
56       post(:copy, copy_params, session_for(:active))
57       assert_response 302
58       copied_cr = assigns(:object)
59       assert_not_nil copied_cr
60       assert_equal 'Uncommitted', copied_cr[:state]
61       assert_equal "Copy of #{completed_cr['name']}", copied_cr['name']
62       assert_equal completed_cr['cmd'], copied_cr['cmd']
63       assert_equal completed_cr['runtime_constraints']['ram'], copied_cr['runtime_constraints'][:ram]
64       if reuse_enabled
65         assert copied_cr[:use_existing]
66       else
67         refute copied_cr[:use_existing]
68       end
69       # If the CR's command is arvados-cwl-runner, the appropriate flag should
70       # be passed to it
71       if uses_acr
72         if reuse_enabled
73           # arvados-cwl-runner's default behavior is to enable reuse
74           assert_includes copied_cr['command'], 'arvados-cwl-runner'
75           assert_not_includes copied_cr['command'], '--disable-reuse'
76         else
77           assert_includes copied_cr['command'], 'arvados-cwl-runner'
78           assert_includes copied_cr['command'], '--disable-reuse'
79           assert_not_includes copied_cr['command'], '--enable-reuse'
80         end
81       else
82         # If no arvados-cwl-runner is being used, the command should be left alone
83         assert_equal completed_cr['command'], copied_cr['command']
84       end
85     end
86   end
87 end