]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/api/search/simple.feature
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / test / bdd / api / search / simple.feature
1 @APIDB
2 Feature: Simple Tests
3     Simple tests for internal server errors and response format.
4
5     Scenario Outline: Testing different parameters
6         When sending search query "Hamburg"
7           | param       | value   |
8           | <parameter> | <value> |
9         Then at least 1 result is returned
10         When sending html search query "Hamburg"
11           | param       | value   |
12           | <parameter> | <value> |
13         Then at least 1 result is returned
14         When sending xml search query "Hamburg"
15           | param       | value   |
16           | <parameter> | <value> |
17         Then at least 1 result is returned
18         When sending json search query "Hamburg"
19           | param       | value   |
20           | <parameter> | <value> |
21         Then at least 1 result is returned
22         When sending jsonv2 search query "Hamburg"
23           | param       | value   |
24           | <parameter> | <value> |
25         Then at least 1 result is returned
26         When sending geojson search query "Hamburg"
27           | param       | value   |
28           | <parameter> | <value> |
29         Then at least 1 result is returned
30
31     Examples:
32      | parameter        | value |
33      | addressdetails   | 1 |
34      | addressdetails   | 0 |
35      | polygon          | 1 |
36      | polygon          | 0 |
37      | polygon_text     | 1 |
38      | polygon_text     | 0 |
39      | polygon_kml      | 1 |
40      | polygon_kml      | 0 |
41      | polygon_geojson  | 1 |
42      | polygon_geojson  | 0 |
43      | polygon_svg      | 1 |
44      | polygon_svg      | 0 |
45      | accept-language  | de,en |
46      | countrycodes     | de |
47      | bounded          | 1 |
48      | bounded          | 0 |
49      | exclude_place_ids| 385252,1234515 |
50      | limit            | 1000 |
51      | dedupe           | 1 |
52      | dedupe           | 0 |
53      | extratags        | 1 |
54      | extratags        | 0 |
55      | namedetails      | 1 |
56      | namedetails      | 0 |
57
58     Scenario: Search with invalid output format
59         When sending search query "Berlin"
60           | format |
61           | fd$# |
62         Then a HTTP 400 is returned
63
64     Scenario Outline: Simple Searches
65         When sending search query "<query>"
66         Then the result is valid html
67         When sending html search query "<query>"
68         Then the result is valid html
69         When sending xml search query "<query>"
70         Then the result is valid xml
71         When sending json search query "<query>"
72         Then the result is valid json
73         When sending jsonv2 search query "<query>"
74         Then the result is valid json
75         When sending geojson search query "<query>"
76         Then the result is valid geojson
77
78     Examples:
79      | query |
80      | New York, New York |
81      | France |
82      | 12, Main Street, Houston |
83      | München |
84      | 東京都 |
85      | hotels in nantes |
86      | xywxkrf |
87      | gh; foo() |
88      | %#$@*&l;der#$! |
89      | 234 |
90      | 47.4,8.3 |
91
92     Scenario: Empty XML search
93         When sending xml search query "xnznxvcx"
94         Then result header contains
95           | attr        | value |
96           | querystring | xnznxvcx |
97           | polygon     | false |
98           | more_url    | .*q=xnznxvcx.*format=xml |
99
100     Scenario: Empty XML search with special XML characters
101         When sending xml search query "xfdghn&zxn"xvbyx<vxx>cssdex"
102         Then result header contains
103           | attr        | value |
104           | querystring | xfdghn&zxn"xvbyx<vxx>cssdex |
105           | polygon     | false |
106           | more_url    | .*q=xfdghn%26zxn%22xvbyx%3Cvxx%3Ecssdex.*format=xml |
107
108     Scenario: Empty XML search with viewbox
109         When sending xml search query "xnznxvcx"
110           | viewbox |
111           | 12,33,77,45.13 |
112         Then result header contains
113           | attr        | value |
114           | querystring | xnznxvcx |
115           | polygon     | false |
116           | viewbox     | 12,33,77,45.13 |
117
118     Scenario: Empty XML search with viewboxlbrt
119         When sending xml search query "xnznxvcx"
120           | viewboxlbrt |
121           | 12,34.13,77,45 |
122         Then result header contains
123           | attr        | value |
124           | querystring | xnznxvcx |
125           | polygon     | false |
126           | viewbox     | 12,34.13,77,45 |
127
128     Scenario: Empty XML search with viewboxlbrt and viewbox
129         When sending xml search query "pub"
130           | viewbox        | viewboxblrt |
131           | 12,33,77,45.13 | 1,2,3,4 |
132         Then result header contains
133           | attr        | value |
134           | querystring | pub |
135           | polygon     | false |
136           | viewbox     | 12,33,77,45.13 |
137
138     Scenario Outline: Empty XML search with polygon values
139         When sending xml search query "xnznxvcx"
140           | param   | value |
141           | polygon | <polyval> |
142         Then result header contains
143           | attr        | value |
144           | polygon     | <result> |
145
146     Examples:
147      | result | polyval |
148      | false  | 0 |
149      | true   | 1 |
150      | true   | True |
151      | true   | true |
152      | true   | false |
153      | true   | FALSE |
154      | true   | yes |
155      | true   | no |
156      | true   | '; delete from foobar; select ' |
157
158     Scenario: Empty XML search with exluded place ids
159         When sending xml search query "jghrleoxsbwjer"
160           | exclude_place_ids |
161           | 123,76,342565 |
162         Then result header contains
163           | attr              | value |
164           | exclude_place_ids | 123,76,342565 |
165
166     Scenario: Empty XML search with bad exluded place ids
167         When sending xml search query "jghrleoxsbwjer"
168           | exclude_place_ids |
169           | , |
170         Then result header has not attributes exclude_place_ids
171
172     Scenario Outline: Wrapping of legal jsonp search requests
173         When sending json search query "Tokyo"
174             | param        | value |
175             |json_callback | <data> |
176         Then result header contains
177             | attr         | value |
178             | json_func    | <result> |
179
180     Examples:
181      | data    | result |
182      | foo     | foo |
183      | FOO     | FOO |
184      | __world | __world |
185      | $me     | \$me |
186      | m1[4]   | m1\[4\] |
187      | d_r[$d] | d_r\[\$d\] |
188
189     Scenario Outline: Wrapping of illegal jsonp search requests
190         When sending json search query "Tokyo"
191             | param        | value |
192             |json_callback | <data> |
193         Then a HTTP 400 is returned
194
195     Examples:
196       | data |
197       | 1asd |
198       | bar(foo) |
199       | XXX['bad'] |
200       | foo; evil |
201
202     Scenario: Ignore jsonp parameter for anything but json
203         When sending json search query "Malibu"
204           | json_callback |
205           | 234 |
206         Then a HTTP 400 is returned
207         When sending xml search query "Malibu"
208           | json_callback |
209           | 234 |
210         Then the result is valid xml
211         When sending html search query "Malibu"
212           | json_callback |
213           | 234 |
214         Then the result is valid html
215
216     Scenario: Empty JSON search
217         When sending json search query "YHlERzzx"
218         Then exactly 0 results are returned
219
220     Scenario: Empty JSONv2 search
221         When sending jsonv2 search query "Flubb XdfESSaZx"
222         Then exactly 0 results are returned
223
224     Scenario: Search for non-existing coordinates
225         When sending json search query "-21.0,-33.0"
226         Then exactly 0 results are returned
227
228     Scenario: Country code selection is retained in more URL (#596)
229         When sending xml search query "Vaduz"
230           | countrycodes |
231           | pl,1,,invalid,undefined,%3Cb%3E,bo,, |
232        Then result header contains
233           | attr     | value |
234           | more_url | .*&countrycodes=pl%2Cbo&.* |