8784: Fix test for latest firefox.
[arvados.git] / services / api / test / functional / arvados / v1 / schema_controller_test.rb
1 require 'test_helper'
2
3 class Arvados::V1::SchemaControllerTest < ActionController::TestCase
4
5   setup do forget end
6   teardown do forget end
7   def forget
8     Rails.cache.delete 'arvados_v1_rest_discovery'
9     AppVersion.forget
10   end
11
12   test "should get fresh discovery document" do
13     MAX_SCHEMA_AGE = 60
14     get :index
15     assert_response :success
16     discovery_doc = JSON.parse(@response.body)
17     assert_equal 'discovery#restDescription', discovery_doc['kind']
18     assert_equal(true,
19                  Time.now - MAX_SCHEMA_AGE.seconds < discovery_doc['generatedAt'],
20                  "discovery document was generated >#{MAX_SCHEMA_AGE}s ago")
21   end
22
23   test "discovery document has defaultTrashLifetime" do
24     get :index
25     assert_response :success
26     discovery_doc = JSON.parse(@response.body)
27     assert_includes discovery_doc, 'defaultTrashLifetime'
28     assert_equal discovery_doc['defaultTrashLifetime'], Rails.application.config.default_trash_lifetime
29   end
30
31   test "discovery document has source_version" do
32     get :index
33     assert_response :success
34     discovery_doc = JSON.parse(@response.body)
35     assert_match(/^[0-9a-f]+(-modified)?$/, discovery_doc['source_version'])
36   end
37
38   test "discovery document overrides source_version with config" do
39     Rails.configuration.source_version = 'aaa888fff'
40     get :index
41     assert_response :success
42     discovery_doc = JSON.parse(@response.body)
43     assert_equal 'aaa888fff', discovery_doc['source_version']
44   end
45
46   test "empty disable_api_methods" do
47     get :index
48     assert_response :success
49     discovery_doc = JSON.parse(@response.body)
50     assert_equal('POST',
51                  discovery_doc['resources']['jobs']['methods']['create']['httpMethod'])
52   end
53
54   test "non-empty disable_api_methods" do
55     Rails.configuration.disable_api_methods =
56       ['jobs.create', 'pipeline_instances.create', 'pipeline_templates.create']
57     get :index
58     assert_response :success
59     discovery_doc = JSON.parse(@response.body)
60     ['jobs', 'pipeline_instances', 'pipeline_templates'].each do |r|
61       refute_includes(discovery_doc['resources'][r]['methods'].keys(), 'create')
62     end
63   end
64
65   test "groups contents parameters" do
66     get :index
67     assert_response :success
68
69     discovery_doc = JSON.parse(@response.body)
70
71     group_index_params = discovery_doc['resources']['groups']['methods']['index']['parameters']
72     group_contents_params = discovery_doc['resources']['groups']['methods']['contents']['parameters']
73
74     assert_equal group_contents_params.keys.sort, (group_index_params.keys - ['select'] + ['uuid', 'recursive']).sort
75
76     recursive_param = group_contents_params['recursive']
77     assert_equal 'boolean', recursive_param['type']
78     assert_equal false, recursive_param['required']
79     assert_equal 'query', recursive_param['location']
80   end
81
82   test "collections index parameters" do
83     get :index
84     assert_response :success
85
86     discovery_doc = JSON.parse(@response.body)
87
88     specimens_index_params = discovery_doc['resources']['specimens']['methods']['index']['parameters']  # no changes from super
89     coll_index_params = discovery_doc['resources']['collections']['methods']['index']['parameters']
90
91     assert_equal coll_index_params.keys.sort, (specimens_index_params.keys + ['include_trash']).sort
92
93     include_trash_param = coll_index_params['include_trash']
94     assert_equal 'boolean', include_trash_param['type']
95     assert_equal false, include_trash_param['required']
96     assert_equal 'query', include_trash_param['location']
97   end
98 end