From 33e05f7a2dbcb18a9a3a4670c6e26b5fcf4e051f Mon Sep 17 00:00:00 2001 From: Laurent Bossavit Date: Tue, 12 Nov 2024 14:42:44 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=9A(ci)=20also=20save=20Dimail=20logs?= =?UTF-8?q?=20from=20E2E=20test=20runs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To help debug with Dimail interop, save logs from the Dimail container. Also fix the tests' expectations… --- .github/workflows/people.yml | 4 ++++ .../tests/api/mail_domain/test_api_mail_domains_create.py | 3 +-- .../tests/api/mailboxes/test_api_mailboxes_create.py | 7 ++++--- src/backend/mailbox_manager/utils/dimail.py | 7 ++++--- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/.github/workflows/people.yml b/.github/workflows/people.yml index 3698200..7b63853 100644 --- a/.github/workflows/people.yml +++ b/.github/workflows/people.yml @@ -207,6 +207,10 @@ jobs: if: always() run: docker compose logs > src/frontend/apps/e2e/report/logs.txt + - name: Save Dimail logs + if: always() + run: docker compose logs dimail > src/frontend/apps/e2e/report/dimail-logs.txt + - uses: actions/upload-artifact@v4 if: always() with: diff --git a/src/backend/mailbox_manager/tests/api/mail_domain/test_api_mail_domains_create.py b/src/backend/mailbox_manager/tests/api/mail_domain/test_api_mail_domains_create.py index f9769b4..0c31a9c 100644 --- a/src/backend/mailbox_manager/tests/api/mail_domain/test_api_mail_domains_create.py +++ b/src/backend/mailbox_manager/tests/api/mail_domain/test_api_mail_domains_create.py @@ -182,10 +182,9 @@ def test_api_mail_domains__no_creation_when_dimail_duplicate(caplog): assert response.json() == {"detail": dimail_error["detail"]} # check logs - assert len(caplog.records) == 2 # 1 + new empty info. To be investigated record = caplog.records[0] assert record.levelname == "ERROR" assert ( record.message - == f"[DIMAIL] {dimail_error['status_code']}: {dimail_error['detail']}" + == "[DIMAIL] unexpected error : 409 {'detail': 'Domain already exists'}" ) diff --git a/src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_create.py b/src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_create.py index 51ed08c..2097e65 100644 --- a/src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_create.py +++ b/src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_create.py @@ -11,7 +11,6 @@ from django.test.utils import override_settings from django.utils.translation import gettext_lazy as _ import pytest -import requests import responses from requests.exceptions import HTTPError from rest_framework import status @@ -545,9 +544,11 @@ def test_api_mailboxes__handling_dimail_unexpected_error(caplog): assert not models.Mailbox.objects.exists() # Check error logger was called - assert len(caplog.records) == 2 # 1 + new empty info. To be investigated assert caplog.records[0].levelname == "ERROR" - assert caplog.records[0].message == "[DIMAIL] 500: Internal server error" + assert ( + caplog.records[0].message + == "[DIMAIL] unexpected error : 500 {'detail': 'Internal server error'}" + ) @mock.patch.object(Logger, "error") diff --git a/src/backend/mailbox_manager/utils/dimail.py b/src/backend/mailbox_manager/utils/dimail.py index 07bd82d..e1e3f48 100644 --- a/src/backend/mailbox_manager/utils/dimail.py +++ b/src/backend/mailbox_manager/utils/dimail.py @@ -14,7 +14,6 @@ from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ import requests -from requests.exceptions import HTTPError from rest_framework import status from urllib3.util import Retry @@ -161,8 +160,10 @@ class DimailAPIClient: def pass_dimail_unexpected_response(self, response): """Raise error when encountering an unexpected error in dimail.""" try: - error_content = json.loads(response.content.decode(response.encoding).replace("'", '"')) - except: + error_content = json.loads( + response.content.decode(response.encoding).replace("'", '"') + ) + except json.decoder.JSONDecodeError: error_content = response.content.decode(response.encoding) logger.error(