💚(ci) also save Dimail logs from E2E test runs

To help debug with Dimail interop, save logs from the Dimail container.
Also fix the tests' expectations…
This commit is contained in:
Laurent Bossavit
2024-11-12 14:42:44 +01:00
committed by Marie
parent 1e45f1ffd1
commit 33e05f7a2d
4 changed files with 13 additions and 8 deletions

View File

@@ -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:

View File

@@ -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'}"
)

View File

@@ -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")

View File

@@ -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(