< Summary - Syki

Information
Class: Syki.Back.Features.Identity.SendResetPasswordToken.SendResetPasswordTokenService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Identity/SendResetPasswordToken/SendResetPasswordTokenService.cs
Tag: 97_27801654829
Line coverage
100%
Covered lines: 9
Uncovered lines: 0
Coverable lines: 9
Total lines: 20
Line coverage: 100%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Send()50%22100%

File(s)

/home/runner/work/syki/syki/Back/Features/Identity/SendResetPasswordToken/SendResetPasswordTokenService.cs

#LineLine coverage
 1using Syki.Back.Domain.Identity;
 2
 3namespace Syki.Back.Features.Identity.SendResetPasswordToken;
 4
 365public class SendResetPasswordTokenService(SykiDbContext ctx, UserManager<SykiUser> userManager) : ISykiService
 6{
 7    public async Task<OneOf<SykiSuccess, SykiError>> Send(SendResetPasswordTokenIn data)
 8    {
 369        var user = await userManager.FindByEmailAsync(data.Email);
 3610        if (user == null) return SykiSuccess.I; // Don't reveal if the email is registered or not
 11
 3612        var token = await userManager.GeneratePasswordResetTokenAsync(user);
 13
 3614        var reset = new ResetPasswordToken(user.Id, user.InstitutionId, token);
 3615        ctx.AddCommand(user.InstitutionId, new SendResetPasswordTokenEmailCommand(user.Email, reset.Id), maxRetries: 1);
 3616        await ctx.SaveChangesAsync(reset);
 17
 3618        return SykiSuccess.I;
 3619    }
 20}