]> git.openstreetmap.org Git - rails.git/blob - test/controllers/api/capabilities_controller_test.rb
Add frozen_string_literal comments to ruby files
[rails.git] / test / controllers / api / capabilities_controller_test.rb
1 # frozen_string_literal: true
2
3 require "test_helper"
4
5 module Api
6   class CapabilitiesControllerTest < ActionDispatch::IntegrationTest
7     ##
8     # test all routes which lead to this controller
9     def test_routes
10       assert_routing(
11         { :path => "/api/capabilities", :method => :get },
12         { :controller => "api/capabilities", :action => "show" }
13       )
14       assert_routing(
15         { :path => "/api/capabilities.json", :method => :get },
16         { :controller => "api/capabilities", :action => "show", :format => "json" }
17       )
18       assert_recognizes(
19         { :controller => "api/capabilities", :action => "show" },
20         { :path => "/api/0.6/capabilities", :method => :get }
21       )
22       assert_recognizes(
23         { :controller => "api/capabilities", :action => "show", :format => "json" },
24         { :path => "/api/0.6/capabilities.json", :method => :get }
25       )
26     end
27
28     def test_capabilities
29       get api_capabilities_path
30       assert_response :success
31       assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do
32         assert_select "api", :count => 1 do
33           assert_select "version[minimum='#{Settings.api_version}'][maximum='#{Settings.api_version}']", :count => 1
34           assert_select "area[maximum='#{Settings.max_request_area}']", :count => 1
35           assert_select "note_area[maximum='#{Settings.max_note_request_area}']", :count => 1
36           assert_select "tracepoints[per_page='#{Settings.tracepoints_per_page}']", :count => 1
37           assert_select "changesets" \
38                         "[maximum_elements='#{Changeset::MAX_ELEMENTS}']" \
39                         "[default_query_limit='#{Settings.default_changeset_query_limit}']" \
40                         "[maximum_query_limit='#{Settings.max_changeset_query_limit}']", :count => 1
41           assert_select "relationmembers[maximum='#{Settings.max_number_of_relation_members}']", :count => 1
42           assert_select "notes" \
43                         "[default_query_limit='#{Settings.default_note_query_limit}']" \
44                         "[maximum_query_limit='#{Settings.max_note_query_limit}']", :count => 1
45           assert_select "status[database='online']", :count => 1
46           assert_select "status[api='online']", :count => 1
47           assert_select "status[gpx='online']", :count => 1
48         end
49       end
50     end
51
52     def test_capabilities_json
53       get api_capabilities_path(:format => "json")
54       assert_response :success
55       js = ActiveSupport::JSON.decode(@response.body)
56       assert_not_nil js
57
58       assert_equal Settings.api_version, js["version"]
59       assert_equal Settings.generator, js["generator"]
60       assert_equal Settings.api_version, js["api"]["version"]["minimum"]
61       assert_equal Settings.api_version, js["api"]["version"]["maximum"]
62       assert_equal Settings.max_request_area, js["api"]["area"]["maximum"]
63       assert_equal Settings.max_note_request_area, js["api"]["note_area"]["maximum"]
64       assert_equal Settings.tracepoints_per_page, js["api"]["tracepoints"]["per_page"]
65       assert_equal Changeset::MAX_ELEMENTS, js["api"]["changesets"]["maximum_elements"]
66       assert_equal Settings.default_changeset_query_limit, js["api"]["changesets"]["default_query_limit"]
67       assert_equal Settings.max_changeset_query_limit, js["api"]["changesets"]["maximum_query_limit"]
68       assert_equal Settings.max_number_of_relation_members, js["api"]["relationmembers"]["maximum"]
69       assert_equal Settings.default_note_query_limit, js["api"]["notes"]["default_query_limit"]
70       assert_equal Settings.max_note_query_limit, js["api"]["notes"]["maximum_query_limit"]
71       assert_equal "online", js["api"]["status"]["database"]
72       assert_equal "online", js["api"]["status"]["api"]
73       assert_equal "online", js["api"]["status"]["gpx"]
74       assert_equal Settings.imagery_blacklist.length, js["policy"]["imagery"]["blacklist"].length
75     end
76
77     def test_capabilities_api_readonly
78       with_settings(:status => "api_readonly") do
79         get api_capabilities_path
80         assert_response :success
81         assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do
82           assert_select "api", :count => 1 do
83             assert_select "status[database='online']", :count => 1
84             assert_select "status[api='readonly']", :count => 1
85             assert_select "status[gpx='online']", :count => 1
86           end
87         end
88       end
89     end
90
91     def test_capabilities_api_offline
92       with_settings(:status => "api_offline") do
93         get api_capabilities_path
94         assert_response :success
95         assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do
96           assert_select "api", :count => 1 do
97             assert_select "status[database='online']", :count => 1
98             assert_select "status[api='offline']", :count => 1
99             assert_select "status[gpx='online']", :count => 1
100           end
101         end
102       end
103     end
104
105     def test_capabilities_database_readonly
106       with_settings(:status => "database_readonly") do
107         get api_capabilities_path
108         assert_response :success
109         assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do
110           assert_select "api", :count => 1 do
111             assert_select "status[database='readonly']", :count => 1
112             assert_select "status[api='readonly']", :count => 1
113             assert_select "status[gpx='readonly']", :count => 1
114           end
115         end
116       end
117     end
118
119     def test_capabilities_database_offline
120       with_settings(:status => "database_offline") do
121         get api_capabilities_path
122         assert_response :success
123         assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do
124           assert_select "api", :count => 1 do
125             assert_select "status[database='offline']", :count => 1
126             assert_select "status[api='offline']", :count => 1
127             assert_select "status[gpx='offline']", :count => 1
128           end
129         end
130       end
131     end
132
133     def test_capabilities_gpx_offline
134       with_settings(:status => "gpx_offline") do
135         get api_capabilities_path
136         assert_response :success
137         assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do
138           assert_select "api", :count => 1 do
139             assert_select "status[database='online']", :count => 1
140             assert_select "status[api='online']", :count => 1
141             assert_select "status[gpx='offline']", :count => 1
142           end
143         end
144       end
145     end
146   end
147 end