]> git.openstreetmap.org Git - nominatim.git/blob - tests/features/api/search_simple.feature
add functional tests
[nominatim.git] / tests / features / api / search_simple.feature
1 Feature: Simple Tests
2     Simple tests for internal server errors and response format.
3     These tests should pass on any Nominatim installation.
4
5     Scenario Outline: Testing different parameters
6         Given the request parameters
7           | <parameter>
8           | <value>
9         When sending search query "Manchester"
10         Then the result is valid html
11         Given the request parameters
12           | <parameter>
13           | <value>
14         When sending html search query "Manchester"
15         Then the result is valid html
16         Given the request parameters
17           | <parameter>
18           | <value>
19         When sending xml search query "Manchester"
20         Then the result is valid xml
21         Given the request parameters
22           | <parameter>
23           | <value>
24         When sending json search query "Manchester"
25         Then the result is valid json
26         Given the request parameters
27           | <parameter>
28           | <value>
29         When sending jsonv2 search query "Manchester"
30         Then the result is valid json
31
32     Examples:
33      | parameter        | value
34      | addressdetails   | 1
35      | addressdetails   | 0
36      | polygon          | 1
37      | polygon          | 0
38      | polygon_text     | 1
39      | polygon_text     | 0
40      | polygon_kml      | 1
41      | polygon_kml      | 0
42      | polygon_geojson  | 1
43      | polygon_geojson  | 0
44      | polygon_svg      | 1
45      | polygon_svg      | 0
46      | accept-language  | de,en
47      | countrycodes     | uk,ir
48      | bounded          | 1
49      | bounded          | 0
50      | exclude_place_ids| 385252,1234515
51      | limit            | 1000
52      | dedupe           | 1
53      | dedupe           | 0
54
55     Scenario: Search with invalid output format
56         Given the request parameters
57           | format
58           | fd$#
59         When sending search query "Berlin"
60         Then the result is valid html
61
62     Scenario Outline: Simple Searches
63         When sending search query "<query>"
64         Then the result is valid html
65         When sending html search query "<query>"
66         Then the result is valid html
67         When sending xml search query "<query>"
68         Then the result is valid xml
69         When sending json search query "<query>"
70         Then the result is valid json
71         When sending jsonv2 search query "<query>"
72         Then the result is valid json
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           | polygon     | false
94           | more_url    | .*format=xml.*q=xnznxvcx.*
95
96     Scenario: Empty XML search with special XML characters
97         When sending xml search query "xfdghn&zxn"xvbyx<vxx>cssdex"
98         Then result header contains
99           | attr        | value
100           | querystring | xfdghn&zxn"xvbyx<vxx>cssdex
101           | polygon     | false
102           | more_url    | .*format=xml.*q=xfdghn&zxn"xvbyx<vxx>cssdex.*
103
104     Scenario: Empty XML search with viewbox
105         Given the request parameters
106           | viewbox
107           | 12,45.13,77,33
108         When sending xml search query "xnznxvcx"
109         Then result header contains
110           | attr        | value
111           | querystring | xnznxvcx
112           | polygon     | false
113           | viewbox     | 12,45.13,77,33
114
115     Scenario: Empty XML search with viewboxlbrt
116         Given the request parameters
117           | viewboxlbrt
118           | 12,34.13,77,45
119         When sending xml search query "xnznxvcx"
120         Then result header contains
121           | attr        | value
122           | querystring | xnznxvcx
123           | polygon     | false
124           | viewbox     | 12,45.13,77,33
125
126     Scenario: Empty XML search with viewboxlbrt and viewbox
127         Given the request parameters
128           | viewbox        | viewboxblrt
129           | 12,45.13,77,33 | 1,2,3,4
130         When sending xml search query "pub"
131         Then result header contains
132           | attr        | value
133           | querystring | pub
134           | polygon     | false
135           | viewbox     | 12,45.13,77,33
136
137
138     Scenario Outline: Empty XML search with polygon values
139         Given the request parameters
140           | polygon
141           | <polyval>
142         When sending xml search query "xnznxvcx"
143         Then result header contains
144           | attr        | value
145           | polygon     | <result>
146
147     Examples:
148      | result | polyval
149      | false  | 0
150      | true   | 1
151      | true   | True
152      | true   | true
153      | true   | false
154      | true   | FALSE
155      | true   | yes
156      | true   | no
157      | true   | '; delete from foobar; select '
158
159
160     Scenario: Empty XML search with exluded place ids
161         Given the request parameters
162           | exclude_place_ids
163           | 123,76,342565
164         When sending xml search query "jghrleoxsbwjer"
165         Then result header contains
166           | attr              | value
167           | exclude_place_ids | 123,76,342565
168
169     Scenario Outline: Wrapping of legal jsonp search requests
170         Given the request parameters
171           | json_callback
172           | <data>
173         When sending json search query "Tokyo"
174         Then there is a json wrapper "<data>"
175
176     Examples:
177      | data
178      | foo
179      | FOO
180      | __world
181      | $me
182      | m1[4]
183      | d_r[$d]
184
185     Scenario Outline: Wrapping of illegal jsonp search requests
186         Given the request parameters
187           | json_callback
188           | <data>
189         When sending json search query "Tokyo"
190         Then a HTTP 400 is returned
191
192     Examples:
193       | data
194       | 1asd
195       | bar(foo)
196       | XXX['bad']
197       | foo; evil
198
199     Scenario Outline: Ignore jsonp parameter for anything but json
200         Given the request parameters
201           | json_callback
202           | 234
203         When sending json search query "Malibu"
204         Then a HTTP 400 is returned
205         Given the request parameters
206           | json_callback
207           | 234
208         When sending xml search query "Malibu"
209         Then the result is valid xml
210         Given the request parameters
211           | json_callback
212           | 234
213         When sending html search query "Malibu"
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