fix(email): retire legacy SMTP follow-up
Keep follow-up draft generation but remove the direct application SMTP delivery boundary. Route users to the provider-aware Job email flow and return 410 for legacy API callers.
This commit is contained in:
@@ -125,9 +125,7 @@ public sealed class AiWorkspaceNotePersistenceTests
|
||||
var controller = new JobApplicationsController(
|
||||
db,
|
||||
summarizer,
|
||||
Mock.Of<IAppEmailSender>(),
|
||||
TestHostFactory.CreateUserManager(user).Object,
|
||||
NullLogger<JobApplicationsController>.Instance,
|
||||
Mock.Of<ICvTemplateRenderer>(),
|
||||
Mock.Of<ICvPdfExporter>());
|
||||
controller.ControllerContext = new ControllerContext
|
||||
|
||||
@@ -114,9 +114,7 @@ public sealed class InterviewPrepPersistenceTests
|
||||
var controller = new JobApplicationsController(
|
||||
db,
|
||||
summarizer,
|
||||
Mock.Of<IAppEmailSender>(),
|
||||
TestHostFactory.CreateUserManager(null).Object,
|
||||
NullLogger<JobApplicationsController>.Instance,
|
||||
Mock.Of<ICvTemplateRenderer>(),
|
||||
Mock.Of<ICvPdfExporter>());
|
||||
controller.ControllerContext = new ControllerContext
|
||||
|
||||
@@ -455,9 +455,7 @@ public sealed class JobApplicationsApplicationPackageTests
|
||||
var controller = new JobApplicationsController(
|
||||
db,
|
||||
summarizer,
|
||||
Mock.Of<IAppEmailSender>(),
|
||||
CreateUserManager(user).Object,
|
||||
NullLogger<JobApplicationsController>.Instance,
|
||||
renderer ?? new TestCvTemplateRenderer(),
|
||||
exporter ?? new TestCvPdfExporter());
|
||||
controller.ControllerContext = new ControllerContext
|
||||
|
||||
@@ -115,7 +115,7 @@ public sealed class JobApplicationsAppliedDateHistoryTests
|
||||
|
||||
private static JobApplicationsController CreateController(JobTrackerContext db, string userId)
|
||||
{
|
||||
var controller = new JobApplicationsController(db, Mock.Of<ISummarizerService>(), Mock.Of<IAppEmailSender>(), TestHostFactory.CreateUserManager().Object, NullLogger<JobApplicationsController>.Instance);
|
||||
var controller = new JobApplicationsController(db, Mock.Of<ISummarizerService>(), TestHostFactory.CreateUserManager().Object);
|
||||
controller.ControllerContext = new ControllerContext
|
||||
{
|
||||
HttpContext = new DefaultHttpContext
|
||||
|
||||
@@ -88,7 +88,7 @@ public sealed class JobApplicationsAuthorizationTests
|
||||
{
|
||||
var summarizer = new Mock<ISummarizerService>();
|
||||
var users = TestHostFactory.CreateUserManager();
|
||||
return new JobApplicationsController(db, summarizer.Object, Mock.Of<IAppEmailSender>(), users.Object, NullLogger<JobApplicationsController>.Instance)
|
||||
return new JobApplicationsController(db, summarizer.Object, users.Object)
|
||||
{
|
||||
ControllerContext = new ControllerContext
|
||||
{
|
||||
|
||||
@@ -295,7 +295,7 @@ public sealed class JobApplicationsEndpointBehaviorTests
|
||||
summarizer.Setup(x => x.SummarizeSectionAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>(), It.IsAny<int>())).ReturnsAsync("generated text");
|
||||
var users = CreateUserManager();
|
||||
|
||||
var controller = new JobApplicationsController(db, summarizer.Object, Mock.Of<IAppEmailSender>(), users.Object, NullLogger<JobApplicationsController>.Instance);
|
||||
var controller = new JobApplicationsController(db, summarizer.Object, users.Object);
|
||||
controller.ControllerContext = new ControllerContext
|
||||
{
|
||||
HttpContext = new DefaultHttpContext
|
||||
|
||||
@@ -103,9 +103,29 @@ public sealed class JobApplicationsFollowUpDraftTests
|
||||
Assert.Contains("Maria Recruiter", payload.LastCorrespondenceFrom ?? string.Empty);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Legacy_follow_up_delivery_is_gone_and_has_no_smtp_dependency()
|
||||
{
|
||||
using var db = CreateDb();
|
||||
var controller = CreateController(db, Mock.Of<ISummarizerService>(), "user-1");
|
||||
|
||||
var result = controller.SendFollowUp(42, new SendFollowUpRequest(
|
||||
"recruiter@example.test",
|
||||
"Synthetic subject",
|
||||
"Synthetic body",
|
||||
DateTime.UtcNow.AddDays(3)), default);
|
||||
|
||||
var gone = Assert.IsType<ObjectResult>(result);
|
||||
Assert.Equal(StatusCodes.Status410Gone, gone.StatusCode);
|
||||
Assert.Equal("Legacy email delivery retired", Assert.IsType<ProblemDetails>(gone.Value).Title);
|
||||
Assert.Empty(db.Correspondences);
|
||||
Assert.DoesNotContain(typeof(JobApplicationsController).GetConstructors().Single().GetParameters(),
|
||||
parameter => parameter.ParameterType == typeof(IAppEmailSender));
|
||||
}
|
||||
|
||||
private static JobApplicationsController CreateController(JobTrackerContext db, ISummarizerService summarizer, string userId)
|
||||
{
|
||||
var controller = new JobApplicationsController(db, summarizer, Mock.Of<IAppEmailSender>(), CreateUserManager().Object, NullLogger<JobApplicationsController>.Instance);
|
||||
var controller = new JobApplicationsController(db, summarizer, CreateUserManager().Object);
|
||||
controller.ControllerContext = new ControllerContext
|
||||
{
|
||||
HttpContext = new DefaultHttpContext
|
||||
|
||||
@@ -41,7 +41,7 @@ public sealed class JobApplicationsMariaDraftTests
|
||||
summarizer.Setup(x => x.SummarizeSectionAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>(), It.IsAny<int>())).ReturnsAsync("generated text");
|
||||
var users = CreateUserManager();
|
||||
|
||||
var controller = new JobApplicationsController(db, summarizer.Object, Mock.Of<IAppEmailSender>(), users.Object, NullLogger<JobApplicationsController>.Instance);
|
||||
var controller = new JobApplicationsController(db, summarizer.Object, users.Object);
|
||||
controller.ControllerContext = new ControllerContext
|
||||
{
|
||||
HttpContext = new DefaultHttpContext
|
||||
|
||||
@@ -110,7 +110,7 @@ public sealed class JobApplicationsWorkflowSignalsTests
|
||||
|
||||
private static JobApplicationsController CreateController(JobTrackerContext db, string userId)
|
||||
{
|
||||
var controller = new JobApplicationsController(db, Mock.Of<ISummarizerService>(), Mock.Of<IAppEmailSender>(), CreateUserManager().Object, NullLogger<JobApplicationsController>.Instance);
|
||||
var controller = new JobApplicationsController(db, Mock.Of<ISummarizerService>(), CreateUserManager().Object);
|
||||
controller.ControllerContext = new ControllerContext
|
||||
{
|
||||
HttpContext = new DefaultHttpContext
|
||||
|
||||
Reference in New Issue
Block a user