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