Working on state change assertions and testing for container record.
[arvados.git] / services / api / test / unit / container_test.rb
1 require 'test_helper'
2
3 class ContainerTest < ActiveSupport::TestCase
4   def check_illegal_modify c
5       assert_raises(ActiveRecord::RecordInvalid) do
6         c.reload
7         c.command = ["echo", "bar"]
8         c.save!
9       end
10
11       assert_raises(ActiveRecord::RecordInvalid) do
12         c.reload
13         c.container_image = "img2"
14         c.save!
15       end
16
17       assert_raises(ActiveRecord::RecordInvalid) do
18         c.reload
19         c.cwd = "/tmp2"
20         c.save!
21       end
22
23       assert_raises(ActiveRecord::RecordInvalid) do
24         c.reload
25         c.environment = {"FOO" => "BAR"}
26         c.save!
27       end
28
29       assert_raises(ActiveRecord::RecordInvalid) do
30         c.reload
31         c.mounts = {"FOO" => "BAR"}
32         c.save!
33       end
34
35       assert_raises(ActiveRecord::RecordInvalid) do
36         c.reload
37         c.output_path = "/tmp3"
38         c.save!
39       end
40
41       assert_raises(ActiveRecord::RecordInvalid) do
42         c.reload
43         c.runtime_constraints = {"FOO" => "BAR"}
44         c.save!
45       end
46
47   end
48
49   def check_bogus_states c
50       assert_raises(ActiveRecord::RecordInvalid) do
51         c.reload
52         c.state = nil
53         c.save!
54       end
55
56       assert_raises(ActiveRecord::RecordInvalid) do
57         c.reload
58         c.state = "Flubber"
59         c.save!
60       end
61   end
62
63   test "Container create" do
64     act_as_system_user do
65       c = Container.new
66       c.command = ["echo", "foo"]
67       c.container_image = "img"
68       c.cwd = "/tmp"
69       c.environment = {}
70       c.mounts = {}
71       c.output_path = "/tmp"
72       c.priority = 1
73       c.runtime_constraints = {}
74       c.save!
75
76       check_illegal_modify c
77       check_bogus_states c
78
79       c.reload
80       c.priority = 2
81       c.save!
82
83       c.reload
84       c.state = "Running"
85       c.save!
86
87       check_illegal_modify c
88       check_bogus_states c
89
90       assert_raises(ActiveRecord::RecordInvalid) do
91         c.reload
92         c.state = "Queued"
93         c.save!
94       end
95
96       c.reload
97       c.priority = 3
98       c.save!
99
100     end
101   end
102 end