Ejemplo n.º 1
0
    def execute(self, method, path, **kwargs):
        if (self._use_specs and self._validate_using_specs
                and not self.specs.exists(method, path)):
            # TODO more info, specs version, method etc
            raise ClientError(f'The path `{path}` does not exist.')

        url = f'{self.endpoint}/{path}'

        kwargs = self._prepare_call_kwargs(kwargs)

        self.response = None

        try:
            self._execute_http_call(method, url, kwargs)
            if self.response.status_code == 204:
                return None
            if self.response.headers['Content-Type'] == 'application/json':
                return self.response.json()
            else:
                return self.response.content

        except RequestException as re:
            api_error = self._get_api_error_details() or {}
            status_code = self.response.status_code if self.response is not None else None
            raise ClientError(status_code=status_code, **api_error) from re
Ejemplo n.º 2
0
def test_connect_error():
    c = ClientError(status_code=400,
                    error_code='error_code',
                    errors=['msg1', 'msg2'])

    assert repr(c) == '<ClientError 400: error_code>'
    assert str(c) == '400 Bad Request: error_code - msg1,msg2'
Ejemplo n.º 3
0
def test_resource_exists(res_factory):
    resource = res_factory()
    resource._client.get.return_value = {'id': 'res_id'}

    assert resource.exists() is True
    ce = ClientError(status_code=404)
    resource._client.get.side_effect = ce

    assert resource.exists() is False
Ejemplo n.º 4
0
def test_resource_exists_exception(res_factory):
    resource = res_factory()
    resource._client.get.return_value = {'id': 'res_id'}

    assert resource.exists() is True
    ce = ClientError(status_code=500)
    resource._client.get.side_effect = ce

    with pytest.raises(ClientError):
        resource.exists()
Ejemplo n.º 5
0
async def test_resource_exists(async_client_mock, async_res_factory):
    resource = async_res_factory(
        client=async_client_mock(methods=['get']),
    )
    resource._client.get.return_value = {'id': 'res_id'}

    assert await resource.exists() is True
    ce = ClientError(status_code=404)
    resource._client.get.side_effect = ce

    assert await resource.exists() is False
Ejemplo n.º 6
0
async def test_resource_exists_exception(async_client_mock, async_res_factory):
    resource = async_res_factory(
        client=async_client_mock(methods=['get']),
    )
    resource._client.get.return_value = {'id': 'res_id'}

    assert await resource.exists() is True
    ce = ClientError(status_code=500)
    resource._client.get.side_effect = ce

    with pytest.raises(ClientError):
        await resource.exists()
Ejemplo n.º 7
0
def test_connect_error_additional_info():
    additional_info = {
        'attr1': 'val1',
        'attr2': 'val2',
    }

    c = ClientError(
        status_code=400,
        error_code='error_code',
        errors=['msg1', 'msg2'],
        **additional_info,
    )
    assert c.additional_info == additional_info
Ejemplo n.º 8
0
def test_connect_error_unexpected_error():
    assert str(ClientError()) == 'Unexpected error'