< Summary

Information
Class: NostrSure.Domain.Services.EventTagValidator
Assembly: NostrSure.Domain
File(s): /home/runner/work/NostrSure/NostrSure/NostrSure.Domain/Services/EventTagValidator.cs
Line coverage
68%
Covered lines: 17
Uncovered lines: 8
Coverable lines: 25
Total lines: 49
Line coverage: 68%
Branch coverage
75%
Covered branches: 9
Total branches: 12
Branch coverage: 75%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ValidateTags(...)75%171268%

File(s)

/home/runner/work/NostrSure/NostrSure/NostrSure.Domain/Services/EventTagValidator.cs

#LineLine coverage
 1using NostrSure.Domain.Entities;
 2using NostrSure.Domain.Validation;
 3
 4namespace NostrSure.Domain.Services;
 5
 6/// <summary>
 7/// Validates tag structure and content according to NIP-01 rules
 8/// </summary>
 9public sealed class EventTagValidator : IEventTagValidator
 10{
 11    public ValidationResult ValidateTags(NostrEvent evt)
 10912    {
 10913        if (evt.Tags == null)
 114        {
 115            return ValidationResult.Failure("Tags are null", "NULL_TAGS");
 16        }
 17
 33018        foreach (var tag in evt.Tags)
 419        {
 420            if (tag == null)
 021            {
 022                return ValidationResult.Failure("Tag is null", "NULL_TAG");
 23            }
 24
 425            if (string.IsNullOrWhiteSpace(tag.Name))
 026            {
 027                return ValidationResult.Failure("Tag name is empty or null", "EMPTY_TAG_NAME");
 28            }
 29
 30            // Check if tag is valid according to NIP-01 rules
 431            if (!tag.IsValid())
 232            {
 233                return ValidationResult.Failure(
 234                    $"Invalid tag: {tag.Name}",
 235                    "INVALID_TAG_FORMAT");
 36            }
 37
 38            // Check for empty values in tag
 239            if (tag.Values.Any(string.IsNullOrWhiteSpace))
 040            {
 041                return ValidationResult.Failure(
 042                    "Tag contains empty value",
 043                    "EMPTY_TAG_VALUE");
 44            }
 245        }
 46
 10647        return ValidationResult.Success();
 10948    }
 49}