at main 4.0 kB view raw
1using AltBot.Core.Models; 2using Microsoft.Extensions.Logging; 3using Moq; 4using Xunit; 5 6namespace AltBot.Core.Tests.Models; 7 8public class DidTests 9{ 10 private readonly Mock<ILogger<Did>> _loggerMock; 11 12 public DidTests() 13 { 14 _loggerMock = new Mock<ILogger<Did>>(); 15 } 16 17 [Theory] 18 [InlineData("did:web:example.com")] 19 [InlineData("did:plc:7iza6de2dwap2sbkpav7c6c6")] 20 public void Create_ValidDid_ReturnsDidInstance(string validDid) 21 { 22 // Act 23 var did = Did.Create(validDid); 24 25 // Assert 26 Assert.NotNull(did); 27 Assert.Equal(validDid, did.Value); 28 } 29 30 [Theory] 31 [InlineData("")] 32 [InlineData(" ")] 33 [InlineData(null)] 34 [InlineData("notenough:parts")] 35 [InlineData("wrong:prefix:parts")] 36 public void Create_InvalidDid_ReturnsNull(string? invalidDid) 37 { 38 // Act 39 var did = Did.Create(invalidDid!); 40 41 // Assert 42 Assert.Null(did); 43 } 44 45 [Fact] 46 public void Parse_ValidDid_ReturnsDidInstance() 47 { 48 // Arrange 49 const string validDid = "did:web:example.com"; 50 51 // Act 52 var did = Did.Parse(validDid, null); 53 54 // Assert 55 Assert.NotNull(did); 56 Assert.Equal(validDid, did.Value); 57 } 58 59 [Fact] 60 public void Parse_InvalidDid_ThrowsFormatException() 61 { 62 // Arrange 63 const string invalidDid = "invalid"; 64 65 // Act & Assert 66 Assert.Throws<FormatException>(() => Did.Parse(invalidDid, null)); 67 } 68 69 [Fact] 70 public void TryParse_ValidDid_ReturnsTrue() 71 { 72 // Arrange 73 const string validDid = "did:web:example.com"; 74 75 // Act 76 var success = Did.TryParse(validDid, null, out var did); 77 78 // Assert 79 Assert.True(success); 80 Assert.NotNull(did); 81 Assert.Equal(validDid, did.Value); 82 } 83 84 [Theory] 85 [InlineData("")] 86 [InlineData(null)] 87 [InlineData("invalid")] 88 public void TryParse_InvalidDid_ReturnsFalse(string? invalidDid) 89 { 90 // Act 91 var success = Did.TryParse(invalidDid, null, out var did); 92 93 // Assert 94 Assert.False(success); 95 Assert.Null(did); 96 } 97 98 [Fact] 99 public void Equals_SameValue_ReturnsTrue() 100 { 101 // Arrange 102 var did1 = Did.Parse("did:web:example.com", null); 103 var did2 = Did.Parse("did:web:example.com", null); 104 105 // Act & Assert 106 Assert.True(did1.Equals(did2)); 107 Assert.True(did1 == did2); 108 } 109 110 [Fact] 111 public void Equals_DifferentValue_ReturnsFalse() 112 { 113 // Arrange 114 var did1 = Did.Parse("did:web:example1.com", null); 115 var did2 = Did.Parse("did:web:example2.com", null); 116 117 // Act & Assert 118 Assert.False(did1.Equals(did2)); 119 Assert.False(did1 == did2); 120 } 121 122 [Fact] 123 public void ToString_ReturnsValue() 124 { 125 // Arrange 126 const string didString = "did:web:example.com"; 127 var did = Did.Parse(didString, null); 128 129 // Act 130 var result = did.ToString(); 131 132 // Assert 133 Assert.Equal(didString, result); 134 } 135 136 [Fact] 137 public void ImplicitConversion_ToString_ReturnsValue() 138 { 139 // Arrange 140 const string didString = "did:web:example.com"; 141 var did = Did.Parse(didString, null); 142 143 // Act 144 string result = did; 145 146 // Assert 147 Assert.Equal(didString, result); 148 } 149 150 [Fact] 151 public void ExplicitConversion_FromString_ReturnsDid() 152 { 153 // Arrange 154 const string didString = "did:web:example.com"; 155 156 // Act 157 var did = (Did)didString; 158 159 // Assert 160 Assert.Equal(didString, did.Value); 161 } 162 163 [Fact] 164 public void Load_AnyString_ReturnsDid() 165 { 166 // Arrange 167 const string didString = "any:string:value"; 168 169 // Act 170 var did = Did.Load(didString); 171 172 // Assert 173 Assert.NotNull(did); 174 Assert.Equal(didString, did.Value); 175 } 176}