import asyncio
import sqlite3
import threading
import tempfile
import time
import smtplib
from pathlib import Path
from types import SimpleNamespace
import feedback_service
import pytest
from fastapi.testclient import TestClient
from feedback_service import Settings, SendFailure, UncertainFailure, SmtpSender, SubmissionStore, create_app
ID = "cbaaaace-60b2-4871-8a95-ae316444a2fb"
PNG = b"\x89PNG\r\n\x1a\n" + b"safe fixture"
HTML = (b'
'
b''
b'')
def test_real_client_generated_synthetic_html_is_accepted_as_attachment(service):
client, sender, _ = service
page = (Path(__file__).parent / 'fixtures/client-school-diagnostic.html').read_bytes()
fields = [('submission_id', (None, ID)), ('type', (None, 'problem')), ('message', (None, 'Cannot import'))]
response = client.post('/v1/feedback', files=fields + [('diagnostic_html', ('page.html', page, 'text/html'))])
assert response.status_code == 200
attachment = list(sender.messages[0].iter_attachments())[0]
assert attachment.get_payload(decode=True) == page
@pytest.mark.parametrize('extra', [
'', '
',
'', '',
'',
])
def test_html_diagnostic_rejects_active_or_network_content_even_with_marker(service, extra):
client, sender, _ = service
data = HTML.replace(b'