Website contact form endpoint
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
def contact_payload(**overrides):
|
||||
payload = {
|
||||
"name": "Jane Smith",
|
||||
"email": "jane@example.com",
|
||||
"phone": "07123 456789",
|
||||
"enquiry_type": "aviation_business",
|
||||
"subject": "Basing a maintenance business at Swansea",
|
||||
"message": "We would like to explore operating from Swansea Airport.",
|
||||
"source_page": "/contact/",
|
||||
}
|
||||
payload.update(overrides)
|
||||
return payload
|
||||
|
||||
|
||||
def test_public_contact_request_emails_tower_and_logs(client, monkeypatch, capsys):
|
||||
sent_emails = []
|
||||
|
||||
async def fake_send_email(**kwargs):
|
||||
sent_emails.append(kwargs)
|
||||
return True
|
||||
|
||||
monkeypatch.setattr("app.api.endpoints.contact_requests.email_service.send_email", fake_send_email)
|
||||
|
||||
response = client.post(
|
||||
"/api/v1/contact-requests/public",
|
||||
json=contact_payload(),
|
||||
headers={"X-Forwarded-For": "203.0.113.10, 10.0.0.1"},
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json() == {"status": "received"}
|
||||
assert len(sent_emails) == 1
|
||||
|
||||
email = sent_emails[0]
|
||||
assert email["to_email"] == "tower@swansea-airport.wales"
|
||||
assert email["reply_to"] == "Jane Smith <jane@example.com>"
|
||||
assert email["subject"] == "Website contact: Basing a maintenance business at Swansea"
|
||||
assert email["template_name"] == "contact_request.html"
|
||||
assert email["template_vars"]["name"] == "Jane Smith"
|
||||
assert email["template_vars"]["enquiry_type"] == "aviation_business"
|
||||
assert email["template_vars"]["client_ip"] == "203.0.113.10"
|
||||
|
||||
log_output = capsys.readouterr().out
|
||||
assert "Public contact request received" in log_output
|
||||
assert "aviation_business" in log_output
|
||||
assert "jane@example.com" in log_output
|
||||
|
||||
|
||||
def test_public_contact_request_validation(client, monkeypatch):
|
||||
async def fake_send_email(**kwargs):
|
||||
return True
|
||||
|
||||
monkeypatch.setattr("app.api.endpoints.contact_requests.email_service.send_email", fake_send_email)
|
||||
|
||||
invalid_category = client.post(
|
||||
"/api/v1/contact-requests/public",
|
||||
json=contact_payload(enquiry_type="sales"),
|
||||
)
|
||||
blank_required = client.post(
|
||||
"/api/v1/contact-requests/public",
|
||||
json=contact_payload(name=" ", subject="", message=" "),
|
||||
)
|
||||
|
||||
assert invalid_category.status_code == 422
|
||||
assert blank_required.status_code == 422
|
||||
Reference in New Issue
Block a user