assert_nil cr.container_uuid
end
- test "Container request constraints must include valid vcpus and ram fields when committed" do
- set_user_from_auth :active
- cr = create_minimal_req!(state: "Committed", priority: 1)
- assert_raises(ActiveRecord::RecordInvalid) do
- cr.runtime_constraints = {"vcpus" => 1}
- cr.save!
+ [
+ {"vcpus" => 1},
+ {"vcpus" => 1, "ram" => nil},
+ {"vcpus" => 0, "ram" => 123},
+ {"vcpus" => "1", "ram" => "123"}
+ ].each do |invalid_constraints|
+ test "Create with #{invalid_constraints}" do
+ set_user_from_auth :active
+ assert_raises(ActiveRecord::RecordInvalid) do
+ cr = create_minimal_req!(state: "Committed",
+ priority: 1,
+ runtime_constraints: invalid_constraints)
+ cr.save!
+ end
end
- assert_raises(ActiveRecord::RecordInvalid) do
- cr.runtime_constraints = {"vcpus" => 1, "ram" => nil}
+
+ test "Update with #{invalid_constraints}" do
+ set_user_from_auth :active
+ cr = create_minimal_req!(state: "Uncommitted", priority: 1)
cr.save!
+ assert_raises(ActiveRecord::RecordInvalid) do
+ cr = ContainerRequest.find_by_uuid cr.uuid
+ cr.update_attributes!(state: "Committed",
+ runtime_constraints: invalid_constraints)
+ end
end
- assert_raises(ActiveRecord::RecordInvalid) do
- cr.runtime_constraints = {"vcpus" => 0, "ram" => 123}
+ end
+
+ test "Update from fixture" do
+ set_user_from_auth :active
+ cr = ContainerRequest.find_by_uuid(container_requests(:running).uuid)
+ cr.update_attributes!(description: "New description")
+ assert_equal "New description", cr.description
+ end
+
+ test "Update with valid runtime constraints" do
+ set_user_from_auth :active
+ cr = create_minimal_req!(state: "Uncommitted", priority: 1)
cr.save!
- end
+ cr = ContainerRequest.find_by_uuid cr.uuid
+ cr.update_attributes!(state: "Committed",
+ runtime_constraints: {"vcpus" => 1, "ram" => 23})
+ assert_not_nil cr.container_uuid
end
test "Container request priority must be non-nil" do
},
}
cr = ContainerRequest.new(mounts: m)
- assert_raises(ActiveRecord::RecordNotFound) do
+ assert_raises(ArvadosModel::UnresolvableContainerError) do
cr.send :mounts_for_container
end
end
'ENOEXIST',
'arvados/apitestfixture:ENOEXIST',
].each do |img|
- test "container_image_for_container(#{img.inspect}) => 404" do
+ test "container_image_for_container(#{img.inspect}) => 422" do
set_user_from_auth :active
cr = ContainerRequest.new(container_image: img)
- assert_raises(ActiveRecord::RecordNotFound) do
+ assert_raises(ArvadosModel::UnresolvableContainerError) do
cr.send :container_image_for_container
end
end
end
+
+ test "requestor can retrieve container owned by dispatch" do
+ assert_not_empty Container.readable_by(users(:admin)).where(uuid: containers(:running).uuid)
+ assert_not_empty Container.readable_by(users(:active)).where(uuid: containers(:running).uuid)
+ assert_empty Container.readable_by(users(:spectator)).where(uuid: containers(:running).uuid)
+ end
end