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