|
1 | 1 | # Copyright 2026 Camptocamp SA |
2 | 2 | # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
3 | | - |
| 3 | +import contextlib |
4 | 4 | from odoo import Command |
5 | 5 | from odoo.tests import tagged |
6 | | - |
| 6 | +from odoo.tools import DotDict |
7 | 7 | from odoo.addons.base.tests.common import TransactionCaseWithUserDemo |
| 8 | +from odoo.addons.http_routing.tests.common import MockRequest |
8 | 9 |
|
9 | 10 |
|
10 | 11 | def _setup_demo_api_keys(env, demo_user): |
@@ -81,11 +82,28 @@ def _setup_records(cls): |
81 | 82 | ) |
82 | 83 | cls.api_keys = cls.api_key | cls.api_key2 |
83 | 84 |
|
84 | | - cls.api_key_group = _setup_demo_api_key_group( |
| 85 | + cls.key_group = _setup_demo_api_key_group( |
85 | 86 | cls.env, |
86 | 87 | cls.api_keys, |
87 | 88 | ) |
88 | 89 | cls.endpoint = _setup_demo_endpoint( |
89 | 90 | cls.env, |
90 | | - cls.api_key_group, |
| 91 | + cls.key_group, |
91 | 92 | ) |
| 93 | + |
| 94 | + @contextlib.contextmanager |
| 95 | + def _get_mocked_request( |
| 96 | + self, httprequest=None, extra_headers=None, request_attrs=None |
| 97 | + ): |
| 98 | + with MockRequest(self.env) as mocked_request: |
| 99 | + mocked_request.httprequest = ( |
| 100 | + DotDict(httprequest) if httprequest else mocked_request.httprequest |
| 101 | + ) |
| 102 | + headers = {} |
| 103 | + headers.update(extra_headers or {}) |
| 104 | + mocked_request.httprequest.headers = headers |
| 105 | + request_attrs = request_attrs or {} |
| 106 | + for k, v in request_attrs.items(): |
| 107 | + setattr(mocked_request, k, v) |
| 108 | + mocked_request.make_response = lambda data, **kw: data |
| 109 | + yield mocked_request |
0 commit comments