1 # Copyright (C) The Arvados Authors. All rights reserved.
3 # SPDX-License-Identifier: AGPL-3.0
7 class Arvados::V1::SchemaControllerTest < ActionController::TestCase
10 teardown do forget end
12 Rails.cache.delete 'arvados_v1_rest_discovery'
16 test "should get fresh discovery document" do
19 assert_response :success
20 discovery_doc = JSON.parse(@response.body)
21 assert_equal 'discovery#restDescription', discovery_doc['kind']
23 Time.now - MAX_SCHEMA_AGE.seconds < discovery_doc['generatedAt'],
24 "discovery document was generated >#{MAX_SCHEMA_AGE}s ago")
27 test "discovery document fields" do
29 assert_response :success
30 discovery_doc = JSON.parse(@response.body)
31 assert_includes discovery_doc, 'defaultTrashLifetime'
32 assert_equal discovery_doc['defaultTrashLifetime'], Rails.application.config.default_trash_lifetime
33 assert_match(/^[0-9a-f]+(-modified)?$/, discovery_doc['source_version'])
34 assert_equal discovery_doc['websocketUrl'], Rails.application.config.websocket_address
35 assert_equal discovery_doc['workbenchUrl'], Rails.application.config.workbench_address
36 assert_equal('zzzzz', discovery_doc['uuidPrefix'])
39 test "discovery document overrides source_version with config" do
40 Rails.configuration.source_version = 'aaa888fff'
42 assert_response :success
43 discovery_doc = JSON.parse(@response.body)
44 assert_equal 'aaa888fff', discovery_doc['source_version']
47 test "empty disable_api_methods" do
49 assert_response :success
50 discovery_doc = JSON.parse(@response.body)
52 discovery_doc['resources']['jobs']['methods']['create']['httpMethod'])
55 test "non-empty disable_api_methods" do
56 Rails.configuration.disable_api_methods =
57 ['jobs.create', 'pipeline_instances.create', 'pipeline_templates.create']
59 assert_response :success
60 discovery_doc = JSON.parse(@response.body)
61 ['jobs', 'pipeline_instances', 'pipeline_templates'].each do |r|
62 refute_includes(discovery_doc['resources'][r]['methods'].keys(), 'create')
66 test "groups contents parameters" do
68 assert_response :success
70 discovery_doc = JSON.parse(@response.body)
72 group_index_params = discovery_doc['resources']['groups']['methods']['index']['parameters']
73 group_contents_params = discovery_doc['resources']['groups']['methods']['contents']['parameters']
75 assert_equal group_contents_params.keys.sort, (group_index_params.keys - ['select'] + ['uuid', 'recursive']).sort
77 recursive_param = group_contents_params['recursive']
78 assert_equal 'boolean', recursive_param['type']
79 assert_equal false, recursive_param['required']
80 assert_equal 'query', recursive_param['location']
83 test "collections index parameters" do
85 assert_response :success
87 discovery_doc = JSON.parse(@response.body)
89 specimens_index_params = discovery_doc['resources']['specimens']['methods']['index']['parameters'] # no changes from super
90 coll_index_params = discovery_doc['resources']['collections']['methods']['index']['parameters']
92 assert_equal coll_index_params.keys.sort, (specimens_index_params.keys + ['include_trash']).sort
94 include_trash_param = coll_index_params['include_trash']
95 assert_equal 'boolean', include_trash_param['type']
96 assert_equal false, include_trash_param['required']
97 assert_equal 'query', include_trash_param['location']