File: test_exceptions.py

package info (click to toggle)
python-elastic-transport 8.17.1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 624 kB
  • sloc: python: 6,549; makefile: 31
file content (65 lines) | stat: -rw-r--r-- 2,160 bytes parent folder | download
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
#  Licensed to Elasticsearch B.V. under one or more contributor
#  license agreements. See the NOTICE file distributed with
#  this work for additional information regarding copyright
#  ownership. Elasticsearch B.V. licenses this file to you under
#  the Apache License, Version 2.0 (the "License"); you may
#  not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
# 	http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing,
#  software distributed under the License is distributed on an
#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  KIND, either express or implied.  See the License for the
#  specific language governing permissions and limitations
#  under the License.

import pytest

from elastic_transport import ApiError, ApiResponseMeta, TransportError


def test_exception_repr_and_str():
    e = TransportError({"errors": [{"status": 500}]})
    assert repr(e) == "TransportError({'errors': [{'status': 500}]})"
    assert str(e) == "{'errors': [{'status': 500}]}"

    e = TransportError("error", errors=(ValueError("value error"),))
    assert repr(e) == "TransportError('error', errors={!r})".format(
        e.errors,
    )
    assert str(e) == "error"


def test_api_error_status_repr():
    e = ApiError(
        {"errors": [{"status": 500}]},
        body={},
        meta=ApiResponseMeta(
            status=500, http_version="1.1", headers={}, duration=0.0, node=None
        ),
    )
    assert (
        repr(e)
        == "ApiError({'errors': [{'status': 500}]}, meta=ApiResponseMeta(status=500, http_version='1.1', headers={}, duration=0.0, node=None), body={})"
    )
    assert str(e) == "[500] {'errors': [{'status': 500}]}"


def test_api_error_is_not_transport_error():
    with pytest.raises(ApiError):
        try:
            raise ApiError("", None, None)
        except TransportError:
            pass


def test_transport_error_is_not_api_error():
    with pytest.raises(TransportError):
        try:
            raise TransportError(
                "",
            )
        except ApiError:
            pass