|
| 1 | +import re |
1 | 2 | import unittest |
2 | 3 | from unittest.mock import patch |
3 | 4 |
|
4 | | -from influxdb_client_3 import InfluxDBClient3, WritePrecision, DefaultWriteOptions, Point, WriteOptions, WriteType |
| 5 | +from pytest_httpserver import HTTPServer |
| 6 | + |
| 7 | +from influxdb_client_3 import InfluxDBClient3, WritePrecision, DefaultWriteOptions, Point, WriteOptions, WriteType, \ |
| 8 | + ApiException |
5 | 9 | from influxdb_client_3.exceptions import InfluxDB3ClientQueryError |
6 | 10 | from tests.util import asyncio_run |
7 | 11 | from tests.util.mocks import ConstantFlightServer, ConstantData, ErrorFlightServer |
8 | 12 |
|
9 | 13 |
|
| 14 | +def http_server(): |
| 15 | + httpserver = HTTPServer() |
| 16 | + httpserver.start() |
| 17 | + return httpserver |
| 18 | + |
| 19 | + |
10 | 20 | class TestInfluxDBClient3(unittest.TestCase): |
11 | 21 |
|
12 | 22 | @patch('influxdb_client_3._InfluxDBClient') |
@@ -226,6 +236,46 @@ async def test_async_query_with_arrow_error(self): |
226 | 236 | await c.query_async("SELECT * FROM my_data") |
227 | 237 | self.assertIn("Error while executing query", str(err.exception)) |
228 | 238 |
|
| 239 | + def test_get_version_header_success(self): |
| 240 | + server = http_server() |
| 241 | + server.expect_request(re.compile(".*")).respond_with_json( |
| 242 | + headers={"X-Influxdb-Version": "1.8.2"}, |
| 243 | + response_json={"version": "3.0"} |
| 244 | + ) |
| 245 | + version = InfluxDBClient3( |
| 246 | + host=f'http://{server.host}:{server.port}', org="ORG", database="DB", token="TOKEN" |
| 247 | + ).get_server_version() |
| 248 | + assert version == "1.8.2" |
| 249 | + |
| 250 | + def test_get_version_in_body_success(self): |
| 251 | + server = http_server() |
| 252 | + server.expect_request('/ping').respond_with_json( |
| 253 | + response_json={"version": "3.0"}, |
| 254 | + ) |
| 255 | + version = InfluxDBClient3( |
| 256 | + host=f'http://{server.host}:{server.port}', org="ORG", database="DB", token="TOKEN" |
| 257 | + ).get_server_version() |
| 258 | + assert version == "3.0" |
| 259 | + |
| 260 | + def test_get_version_empty(self): |
| 261 | + server = http_server() |
| 262 | + server.expect_request("/ping").respond_with_data( |
| 263 | + headers={"abc": "1.8.2"}, |
| 264 | + ) |
| 265 | + |
| 266 | + version = InfluxDBClient3( |
| 267 | + host=f'http://{server.host}:{server.port}', org="ORG", database="DB", token="TOKEN" |
| 268 | + ).get_server_version() |
| 269 | + assert version is None |
| 270 | + |
| 271 | + def test_get_version_fail(self): |
| 272 | + server = http_server() |
| 273 | + server.expect_request("/ping").respond_with_json( |
| 274 | + response_json={"error": "error"}, |
| 275 | + status=400 |
| 276 | + ) |
| 277 | + with self.assertRaises(ApiException): |
| 278 | + InfluxDBClient3( |
| 279 | + host=f'http://{server.host}:{server.port}', org="ORG", database="DB", token="TOKEN" |
| 280 | + ).get_server_version() |
229 | 281 |
|
230 | | -if __name__ == '__main__': |
231 | | - unittest.main() |
|
0 commit comments