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