feat(email): add explicit send API

Require tenant-owned jobs, explicit confirmation, canonical request IDs, and rate limiting before provider delivery. Persist sent correspondence with a content-free idempotency ledger, and never retry uncertain outcomes automatically.
This commit is contained in:
cesnimda
2026-08-09 23:57:38 +02:00
parent d44c8ceb08
commit 123fc5555a
5 changed files with 391 additions and 4 deletions
+5 -1
View File
@@ -3,6 +3,9 @@ using JobTrackerApi.Controllers;
using JobTrackerApi.Services.EmailProviders;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging.Abstractions;
using JobTrackerApi.Services;
using JobTrackerApi.Tests.TestSupport;
using Xunit;
namespace JobTrackerApi.Tests;
@@ -67,7 +70,8 @@ public sealed class EmailControllerTests
private static EmailController CreateController(params IEmailProvider[] providers)
{
var controller = new EmailController(new EmailProviderRegistry(providers));
var db = TestHostFactory.CreateInMemoryDb();
var controller = new EmailController(new EmailProviderRegistry(providers), db, new EmailSendAttemptStore(db, TimeProvider.System), NullLogger<EmailController>.Instance);
controller.ControllerContext = new ControllerContext
{
HttpContext = new DefaultHttpContext