< Summary - Syki

Information
Class: Syki.Back.Features.Cross.ResetPassword.ResetPasswordService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Cross/ResetPassword/ResetPasswordService.cs
Tag: 4_16869239191
Line coverage
100%
Covered lines: 13
Uncovered lines: 0
Coverable lines: 13
Total lines: 28
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Reset()100%66100%

File(s)

/home/runner/work/syki/syki/Back/Features/Cross/ResetPassword/ResetPasswordService.cs

#LineLine coverage
 1using Syki.Back.Features.Cross.CreateUser;
 2
 3namespace Syki.Back.Features.Cross.ResetPassword;
 4
 3605public class ResetPasswordService(SykiDbContext ctx, UserManager<SykiUser> userManager) : ICrossService
 6{
 7    public async Task<OneOf<SykiSuccess, SykiError>> Reset(ResetPasswordIn body)
 8    {
 3609        _ = Guid.TryParse(body.Token, out var id);
 36010        var reset = await ctx.ResetPasswordTokens.FirstOrDefaultAsync(r => r.Id == id);
 36211        if (reset == null) return new UserNotFound();
 12
 35813        var user = await userManager.FindByIdAsync(reset!.UserId.ToString());
 14
 35815        var result = await userManager.ResetPasswordAsync(user!, reset.Token, body.Password);
 35816        if (!result.Succeeded)
 17        {
 7218            if (result.Errors.Any(e => e.Code == "InvalidToken")) return new InvalidResetToken();
 19
 1620            return new WeakPassword();
 21        }
 22
 34023        reset.Use();
 34024        await ctx.SaveChangesAsync();
 25
 34026        return new SykiSuccess();
 36027    }
 28}