Bug #53697
échec de test_esirius.test_pre_request[xxx]
0%
Description
Suite à #53594,
https://jenkins.entrouvert.org/job/passerelle/2126/
connector = <ESirius: >, secret_key = 'xxx' @pytest.mark.parametrize('secret_key', ['xxx', '']) def test_pre_request(connector, secret_key): @httmock.urlmatch(netloc='esirius.example.net', path='/an/uri/', method='GET') def esirius_mock(url, request): assert request.headers['Accept'] == 'application/json; charset=utf-8' assert bool(request.headers.get('token_info_caller')) == bool(secret_key) if secret_key: assert request.headers['token_info_caller'][:42] == b'f3G6sjRZETBam6vcdrAxmvJQTX5hh6OjZ8XlUO6SMo' return httmock.response(200) connector.secret_key = secret_key connector.save() with httmock.HTTMock(esirius_mock): > connector.request('an/uri/', method='get', params="somes") tests/test_esirius.py:122: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ passerelle/apps/esirius/models.py:152: in request response = self.requests.request(method=method, url=url, headers=headers, params=params, json=json) passerelle/utils/__init__.py:300: in request response = super(Request, self).request(method, url, **kwargs) /tmp/tox-jenkins/passerelle/py3-django111-black-coverage/lib/python3.7/site-packages/requests/sessions.py:542: in request resp = self.send(prep, **send_kwargs) passerelle/utils/__init__.py:317: in send response = super(Request, self).send(request, **kwargs) /tmp/tox-jenkins/passerelle/py3-django111-black-coverage/lib/python3.7/site-packages/httmock.py:163: in _fake_send response = self.intercept(request, **kwargs) /tmp/tox-jenkins/passerelle/py3-django111-black-coverage/lib/python3.7/site-packages/httmock.py:221: in intercept res = first_of(self.handlers, url, request) /tmp/tox-jenkins/passerelle/py3-django111-black-coverage/lib/python3.7/site-packages/httmock.py:141: in first_of res = handler(*args, **kwargs) /tmp/tox-jenkins/passerelle/py3-django111-black-coverage/lib/python3.7/site-packages/httmock.py:100: in inner return func(self_or_url, url_or_request, *args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ url = SplitResult(scheme='https', netloc='esirius.example.net', path='/an/uri/', query='somes', fragment='') request = <PreparedRequest [GET]> @httmock.urlmatch(netloc='esirius.example.net', path='/an/uri/', method='GET') def esirius_mock(url, request): assert request.headers['Accept'] == 'application/json; charset=utf-8' assert bool(request.headers.get('token_info_caller')) == bool(secret_key) if secret_key: > assert request.headers['token_info_caller'][:42] == b'f3G6sjRZETBam6vcdrAxmvJQTX5hh6OjZ8XlUO6SMo' E AssertionError: assert b'f3G6sjRZETB...6OjILg+vGd6TG' == b'f3G6sjRZETB...6OjZ8XlUO6SMo' E At index 32 diff: b'I' != b'Z' E Use -v to get the full diff
Files
Related issues
Associated revisions
History
Updated by Frédéric Péters over 2 years ago
- Related to Development #53594: TypeError: Object of type builtin_function_or_method is not JSON serializable added
Updated by Nicolas Roche over 2 years ago
- Assignee changed from Benjamin Dauvergne to Nicolas Roche
Ça me semble lié à la version de cryptodome : ça passe avec
$ pip install pycryptodomex==3.9.9
alors que sinon ça ne passe plus, même si je reviens au commit qui introduit le connecteur.
Dans le test je coupe la partie de la chaîne crypté liée à l'heure du chiffrement (pour avoir un test reproductible sans avoir à utiliser freeze pour autant).
Il semblerait que cette partie prend 10 octets de plus, j'essaye de comprendre pourquoi...
Updated by Nicolas Roche over 2 years ago
- File 0001-esirius-ignore-DES-timestamp-within-tests-53697.patch 0001-esirius-ignore-DES-timestamp-within-tests-53697.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Je n'ai réussi pas trouver le commit qui explique la régression sur le test.
J'imagine juste quelque chose comme https://github.com/Legrandin/pycryptodome/commit/853054937e29e6cd3dc61228be1dc768b688460b#diff-fe8b2c4039525ca3fead7acd9867edecb9f87d92764718533fa68f2f2e81d1f5
Dans les tests il y en a un autre qui valide le token complet (test_token : avec une date fixée par freeze) et donc cette erreur ne montre pas une régression.
Le test qui plante ici ne teste que la partie supposée fixe du token.
Il est redondant et on pourrait même le retirer.
Updated by Benjamin Dauvergne over 2 years ago
- Planning changed from No to Yes
Tu ne veux pas juste décoder le token et vérifier ce qui doit l'être ? Ça me semble plus sûr.
Updated by Nicolas Roche over 2 years ago
- File 0001-esirius-ignore-DES-timestamp-within-tests-53697.patch 0001-esirius-ignore-DES-timestamp-within-tests-53697.patch added
(fait)
Updated by Benjamin Dauvergne over 2 years ago
- Status changed from Solution proposée to Solution validée
Updated by Nicolas Roche over 2 years ago
- Status changed from Solution validée to Résolu (à déployer)
(quelqu'un l'a déjà poussé pour moi)
commit 59186c7cf9bb9c6adaeca379dea8947f75ee98ee Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Tue May 4 09:56:32 2021 +0200 esirius: ignore DES timestamp within tests (#53697)
Updated by Frédéric Péters over 2 years ago
- Status changed from Résolu (à déployer) to Solution déployée
esirius: ignore DES timestamp within tests (#53697)