]> git.openstreetmap.org Git - nominatim.git/blob - test/python/api/fake_adaptor.py
work round typing bug in pyosmium 4.0
[nominatim.git] / test / python / api / fake_adaptor.py
1 # SPDX-License-Identifier: GPL-3.0-or-later
2 #
3 # This file is part of Nominatim. (https://nominatim.org)
4 #
5 # Copyright (C) 2024 by the Nominatim developer community.
6 # For a full list of authors see the git log.
7 """
8 Provides dummy implementations of ASGIAdaptor for testing.
9 """
10 from collections import namedtuple
11
12 import nominatim_api.v1.server_glue as glue
13 from nominatim_api.v1.format import dispatch as formatting
14 from nominatim_api.config import Configuration
15
16 class FakeError(BaseException):
17
18     def __init__(self, msg, status):
19         self.msg = msg
20         self.status = status
21
22     def __str__(self):
23         return f'{self.status} -- {self.msg}'
24
25 FakeResponse = namedtuple('FakeResponse', ['status', 'output', 'content_type'])
26
27 class FakeAdaptor(glue.ASGIAdaptor):
28
29     def __init__(self, params=None, headers=None, config=None):
30         self.params = params or {}
31         self.headers = headers or {}
32         self._config = config or Configuration(None)
33
34
35     def get(self, name, default=None):
36         return self.params.get(name, default)
37
38
39     def get_header(self, name, default=None):
40         return self.headers.get(name, default)
41
42
43     def error(self, msg, status=400):
44         return FakeError(msg, status)
45
46
47     def create_response(self, status, output, num_results):
48         return FakeResponse(status, output, self.content_type)
49
50
51     def base_uri(self):
52         return 'http://test'
53
54     def config(self):
55         return self._config
56
57     def formatting(self):
58         return formatting
59
60