Merge branch '14328-watch-docker-ps'
[arvados.git] / services / api / test / integration / container_auth_test.rb
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 require 'test_helper'
6
7 class ContainerAuthTest < ActionDispatch::IntegrationTest
8   fixtures :all
9
10   test "container token validate, Running, regular auth" do
11     get "/arvados/v1/containers/current", {
12       :format => :json
13         }, {'HTTP_AUTHORIZATION' => "Bearer #{api_client_authorizations(:running_container_auth).token}/#{containers(:running).uuid}"}
14     # Container is Running, token can be used
15     assert_response :success
16     assert_equal containers(:running).uuid, json_response['uuid']
17   end
18
19   test "container token validate, Locked, runtime_token" do
20     get "/arvados/v1/containers/current", {
21       :format => :json
22         }, {'HTTP_AUTHORIZATION' => "Bearer #{api_client_authorizations(:container_runtime_token).token}/#{containers(:runtime_token).uuid}"}
23     # Container is Running, token can be used
24     assert_response :success
25     assert_equal containers(:runtime_token).uuid, json_response['uuid']
26   end
27
28   test "container token validate, Cancelled, runtime_token" do
29     put "/arvados/v1/containers/#{containers(:runtime_token).uuid}", {
30           :format => :json,
31           :container => {:state => "Cancelled"}
32         }, {'HTTP_AUTHORIZATION' => "Bearer #{api_client_authorizations(:dispatch1).token}"}
33     assert_response :success
34     get "/arvados/v1/containers/current", {
35       :format => :json
36         }, {'HTTP_AUTHORIZATION' => "Bearer #{api_client_authorizations(:container_runtime_token).token}/#{containers(:runtime_token).uuid}"}
37     # Container is Queued, token cannot be used
38     assert_response 401
39   end
40
41   test "container token validate, Running, without optional portion" do
42     get "/arvados/v1/containers/current", {
43       :format => :json
44         }, {'HTTP_AUTHORIZATION' => "Bearer #{api_client_authorizations(:running_container_auth).token}"}
45     # Container is Running, token can be used
46     assert_response :success
47     assert_equal containers(:running).uuid, json_response['uuid']
48   end
49
50   test "container token validate, Locked, runtime_token, without optional portion" do
51     get "/arvados/v1/containers/current", {
52       :format => :json
53         }, {'HTTP_AUTHORIZATION' => "Bearer #{api_client_authorizations(:container_runtime_token).token}"}
54     # runtime_token without container uuid won't return 'current'
55     assert_response 404
56   end
57
58   test "container token validate, wrong container uuid" do
59     get "/arvados/v1/containers/current", {
60       :format => :json
61         }, {'HTTP_AUTHORIZATION' => "Bearer #{api_client_authorizations(:container_runtime_token).token}/#{containers(:running).uuid}"}
62     # Container uuid mismatch, token can't be used
63     assert_response 401
64   end
65 end