< Summary - Heimdall API

Information
Class: ArturRios.Heimdall.WebApi.Email.MailgunEmailVerificationSender
Assembly: ArturRios.Heimdall.WebApi
File(s): /home/runner/work/heimdall-api/heimdall-api/src/Presentation/ArturRios.Heimdall.WebApi/Email/MailgunEmailVerificationSender.cs
Line coverage
100%
Covered lines: 16
Uncovered lines: 0
Coverable lines: 16
Total lines: 41
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage
100%
Covered methods: 3
Fully covered methods: 3
Total methods: 3
Method coverage: 100%
Full method coverage: 100%

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_Purpose()100%11100%
SendAsync(...)100%44100%

File(s)

/home/runner/work/heimdall-api/heimdall-api/src/Presentation/ArturRios.Heimdall.WebApi/Email/MailgunEmailVerificationSender.cs

#LineLine coverage
 1using ArturRios.Heimdall.Command.Services;
 2using ArturRios.Messaging.Email;
 3
 4namespace ArturRios.Heimdall.WebApi.Email;
 5
 6/// <summary>
 7///     Delivers UC-06's verification token as a real email through Mailgun (FR-EV-01/02), replacing
 8///     the <see cref="LoggingEmailVerificationSender" /> stub that use case shipped with. Registered
 9///     whenever Mailgun is configured.
 10/// </summary>
 11public class MailgunEmailVerificationSender(
 12    IEmailService emailService,
 13    EmailDeliveryOptions options,
 14    ILogger<MailgunEmailVerificationSender> logger)
 615    : MailgunSender(emailService, logger), IEmailVerificationSender
 16{
 17    private const string Subject = "Verify your email address";
 18
 619    protected override string Purpose => "email verification";
 20
 21    public Task SendAsync(string email, string token, string? linkBase)
 22    {
 23        // The scope's own link wins; without one the deployment-wide setting applies.
 624        var link = EmailDeliveryOptions.BuildLink(
 625            string.IsNullOrWhiteSpace(linkBase) ? options.VerificationUrl : linkBase, token);
 26
 627        var body = string.IsNullOrEmpty(link)
 628            ? $"""
 629               Welcome! Confirm this address to finish setting up your account.
 630
 631               Use this token to verify it: {token}
 632               """
 633            : $"""
 634               Welcome! Confirm this address to finish setting up your account.
 635
 636               Verify it here: {link}
 637               """;
 38
 639        return DeliverAsync(email, Subject, body);
 40    }
 41}