X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/934694fb672f0768ec61701009a4eb2e149d6431..cb230b07e0125d819991bc74a1f528740068157d:/services/api/test/functional/arvados/v1/containers_controller_test.rb diff --git a/services/api/test/functional/arvados/v1/containers_controller_test.rb b/services/api/test/functional/arvados/v1/containers_controller_test.rb index abaa6129c6..1f8a7c4315 100644 --- a/services/api/test/functional/arvados/v1/containers_controller_test.rb +++ b/services/api/test/functional/arvados/v1/containers_controller_test.rb @@ -50,50 +50,55 @@ class Arvados::V1::ContainersControllerTest < ActionController::TestCase assert_nil json_response['auth'] end - test "lock and unlock container" do - # lock container + test "lock container" do authorize_with :dispatch1 - post :lock, {id: containers(:queued).uuid} + uuid = containers(:queued).uuid + post :lock, {id: uuid} assert_response :success - container = Container.where(uuid: containers(:queued).uuid).first + assert_nil json_response['mounts'] + assert_nil json_response['command'] + assert_not_nil json_response['auth_uuid'] + assert_not_nil json_response['locked_by_uuid'] + assert_equal containers(:queued).uuid, json_response['uuid'] + assert_equal 'Locked', json_response['state'] + assert_equal containers(:queued).priority, json_response['priority'] + + container = Container.where(uuid: uuid).first assert_equal 'Locked', container.state assert_not_nil container.locked_by_uuid assert_not_nil container.auth_uuid + end - # unlock container - @test_counter = 0 # Reset executed action counter - @controller = Arvados::V1::ContainersController.new + test "unlock container" do authorize_with :dispatch1 - post :unlock, {id: container.uuid} + uuid = containers(:locked).uuid + post :unlock, {id: uuid} assert_response :success - container = Container.where(uuid: container.uuid).first + assert_nil json_response['mounts'] + assert_nil json_response['command'] + assert_nil json_response['auth_uuid'] + assert_nil json_response['locked_by_uuid'] + assert_equal containers(:locked).uuid, json_response['uuid'] + assert_equal 'Queued', json_response['state'] + assert_equal containers(:locked).priority, json_response['priority'] + + container = Container.where(uuid: uuid).first assert_equal 'Queued', container.state assert_nil container.locked_by_uuid assert_nil container.auth_uuid end - def create_new_container attrs={} - attrs = { - command: ['echo', 'foo'], - container_image: 'img', - output_path: '/tmp', - priority: 1, - runtime_constraints: {"vcpus" => 1, "ram" => 1}, - } - c = Container.new attrs.merge(attrs) - c.save! - cr = ContainerRequest.new attrs.merge(attrs) - cr.save! - assert cr.update_attributes(container_uuid: c.uuid, - state: ContainerRequest::Committed, - ), show_errors(cr) - return c + test "unlock container locked by different dispatcher" do + authorize_with :dispatch2 + uuid = containers(:locked).uuid + post :unlock, {id: uuid} + assert_response 422 end [ [:queued, :lock, :success, 'Locked'], - [:queued, :unlock, 403, 'Queued'], - [:locked, :lock, 403, 'Locked'], + [:queued, :unlock, 422, 'Queued'], + [:locked, :lock, 422, 'Locked'], [:running, :lock, 422, 'Running'], [:running, :unlock, 422, 'Running'], ].each do |fixture, action, response, state| @@ -105,4 +110,23 @@ class Arvados::V1::ContainersControllerTest < ActionController::TestCase assert_equal state, Container.where(uuid: uuid).first.state end end + + test 'get current container for token' do + authorize_with :running_container_auth + get :current + assert_response :success + assert_equal containers(:running).uuid, json_response['uuid'] + end + + test 'no container associated with token' do + authorize_with :dispatch1 + get :current + assert_response 404 + end + + test 'try get current container, no token' do + get :current + assert_response 401 + end + end