-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_query.py
More file actions
74 lines (61 loc) · 1.73 KB
/
test_query.py
File metadata and controls
74 lines (61 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import pytest
from pytest_httpserver import HTTPServer
from werkzeug import Response
from verdin.query import QueryError, SqlQuery
_mock_json_response = """{
"meta": [
{
"name": "VendorID",
"type": "Int32"
},
{
"name": "tpep_pickup_datetime",
"type": "DateTime"
},
{
"name": "passenger_count",
"type": "Int32"
}
],
"data": [
{
"VendorID": 2,
"tpep_pickup_datetime": "2001-01-05 11:45:23",
"passenger_count": 5
},
{
"VendorID": 2,
"tpep_pickup_datetime": "2002-12-31 23:01:55",
"passenger_count": 3
}
],
"rows": 2,
"rows_before_limit_at_least": 4,
"statistics":
{
"elapsed": 0.00091042,
"rows_read": 4,
"bytes_read": 296
}
}"""
def test_json(httpserver: HTTPServer):
def handler(request):
return Response(_mock_json_response, 200)
httpserver.expect_request(
"/v0/sql", query_string={"q": "select * from mytable FORMAT JSON"}
).respond_with_handler(handler)
query = SqlQuery("select * from mytable", token="12345", api=httpserver.url_for("/"))
response = query.json()
assert response.meta[0] == {"name": "VendorID", "type": "Int32"}
assert len(response.data) == 2
def test_json_error(httpserver: HTTPServer):
def handler(request):
return Response('{"error": "invalid datasource"}', 403)
httpserver.expect_request(
"/v0/sql", query_string={"q": "select * from mytable FORMAT JSON"}
).respond_with_handler(handler)
query = SqlQuery("select * from mytable", token="12345", api=httpserver.url_for("/"))
with pytest.raises(QueryError) as e:
query.json()
e.match("403")
e.match("invalid datasource")