3 class ContainerTest < ActiveSupport::TestCase
4 def check_illegal_modify c
5 assert_raises(ActiveRecord::RecordInvalid) do
7 c.command = ["echo", "bar"]
11 assert_raises(ActiveRecord::RecordInvalid) do
13 c.container_image = "img2"
17 assert_raises(ActiveRecord::RecordInvalid) do
23 assert_raises(ActiveRecord::RecordInvalid) do
25 c.environment = {"FOO" => "BAR"}
29 assert_raises(ActiveRecord::RecordInvalid) do
31 c.mounts = {"FOO" => "BAR"}
35 assert_raises(ActiveRecord::RecordInvalid) do
37 c.output_path = "/tmp3"
41 assert_raises(ActiveRecord::RecordInvalid) do
43 c.runtime_constraints = {"FOO" => "BAR"}
49 def check_bogus_states c
50 assert_raises(ActiveRecord::RecordInvalid) do
56 assert_raises(ActiveRecord::RecordInvalid) do
63 def check_no_change_from_complete c
64 check_illegal_modify c
67 assert_raises(ActiveRecord::RecordInvalid) do
73 assert_raises(ActiveRecord::RecordInvalid) do
79 assert_raises(ActiveRecord::RecordInvalid) do
85 assert_raises(ActiveRecord::RecordInvalid) do
93 test "Container create" do
96 c.command = ["echo", "foo"]
97 c.container_image = "img"
100 c.mounts = {"BAR" => "FOO"}
101 c.output_path = "/tmp"
103 c.runtime_constraints = {}
106 check_illegal_modify c
115 test "Container running" do
116 act_as_system_user do
118 c.command = ["echo", "foo"]
119 c.container_image = "img"
120 c.output_path = "/tmp"
123 assert_raises(ActiveRecord::RecordInvalid) do
133 check_illegal_modify c
136 assert_raises(ActiveRecord::RecordInvalid) do
148 test "Container queued cancel" do
149 act_as_system_user do
151 c.command = ["echo", "foo"]
152 c.container_image = "img"
153 c.output_path = "/tmp"
157 c.state = "Cancelled"
160 check_no_change_from_complete c
164 test "Container running cancel" do
165 act_as_system_user do
167 c.command = ["echo", "foo"]
168 c.container_image = "img"
169 c.output_path = "/tmp"
177 c.state = "Cancelled"
180 check_no_change_from_complete c
184 test "Container create forbidden for non-admin" do
185 set_user_from_auth :active_trustedclient
187 c.command = ["echo", "foo"]
188 c.container_image = "img"
191 c.mounts = {"BAR" => "FOO"}
192 c.output_path = "/tmp"
194 c.runtime_constraints = {}
195 assert_raises(ArvadosModel::PermissionDeniedError) do