< Summary

Information
Class: OzonDomains.Models.Partners.PartnerLoginCode
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/Partners/PartnerLoginCode.cs
Line coverage
80%
Covered lines: 8
Uncovered lines: 2
Coverable lines: 10
Total lines: 40
Line coverage: 80%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%210%
get_PartnerId()100%11100%
get_Partner()100%210%
get_CodeHash()100%11100%
get_Kind()100%11100%
get_CreatedAtUtc()100%11100%
get_ExpiresAtUtc()100%11100%
get_Attempts()100%11100%
get_ConsumedAtUtc()100%11100%
get_RequestIp()100%11100%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/Partners/PartnerLoginCode.cs

#LineLine coverage
 1using System.ComponentModel.DataAnnotations;
 2
 3namespace OzonDomains.Models.Partners;
 4
 5/// <summary>Одноразовый код входа партнёра по почте. Сам код не хранится, только его хеш с солью.</summary>
 6public class PartnerLoginCode
 7{
 08    public long Id { get; set; }
 9
 1910    public long PartnerId { get; set; }
 11
 012    public Partner Partner { get; set; } = null!;
 13
 14    /// <summary>Соль и HMAC-SHA256 кода в формате «соль.хеш» (base64).</summary>
 15    [MaxLength(200)]
 3416    public string CodeHash { get; set; } = null!;
 17
 2118    public PartnerLoginCodeKind Kind { get; set; }
 19
 4220    public DateTime CreatedAtUtc { get; set; } = DateTime.UtcNow;
 21
 2222    public DateTime ExpiresAtUtc { get; set; }
 23
 24    /// <summary>Сколько раз по этому коду вводили неверное значение. После лимита код сгорает.</summary>
 2125    public int Attempts { get; set; }
 26
 1227    public DateTime? ConsumedAtUtc { get; set; }
 28
 29    [MaxLength(64)]
 1930    public string? RequestIp { get; set; }
 31}
 32
 33public enum PartnerLoginCodeKind
 34{
 35    /// <summary>Код, который партнёр запросил на странице входа.</summary>
 36    Login = 0,
 37
 38    /// <summary>Код из пригласительного письма, которое отправляет владелец.</summary>
 39    Invite = 1
 40}