Skip to content

Commit 2400d9b

Browse files
committed
Fix SignOutResultAssertions tests.
1 parent 7467117 commit 2400d9b

File tree

4 files changed

+143
-118
lines changed

4 files changed

+143
-118
lines changed

src/FluentAssertions.AspNetCore.Mvc/SignOutResultAssertions.cs

Lines changed: 30 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ public SignOutResultAssertions WithAuthenticationProperties(AuthenticationProper
6565
Execute.Assertion
6666
.ForCondition(actualAuthenticationProperties == expectedAuthenticationProperties)
6767
.BecauseOf(reason, reasonArgs)
68-
.FailWith(string.Format(FailureMessages.CommonFailMessage, "SignOutResult.AuthenticationProperties", expectedAuthenticationProperties, actualAuthenticationProperties));
68+
.WithDefaultIdentifier("SignOutResult.AuthenticationProperties")
69+
.FailWith(FailureMessages.CommonFailMessage, expectedAuthenticationProperties, actualAuthenticationProperties);
6970

7071
return this;
7172
}
@@ -88,7 +89,8 @@ public SignOutResultAssertions WithIsPersistent(bool expectedIsPersistent, strin
8889
Execute.Assertion
8990
.ForCondition(actualIsPersistent == expectedIsPersistent)
9091
.BecauseOf(reason, reasonArgs)
91-
.FailWith(string.Format(FailureMessages.CommonFailMessage, "SignOutResult.AuthenticationProperties.IsPersistent", expectedIsPersistent, actualIsPersistent));
92+
.WithDefaultIdentifier("SignOutResult.AuthenticationProperties.IsPersistent")
93+
.FailWith(FailureMessages.CommonFailMessage, expectedIsPersistent, actualIsPersistent);
9294

9395
return this;
9496
}
@@ -111,7 +113,8 @@ public SignOutResultAssertions WithRedirectUri(string expectedRedirectUri, strin
111113
Execute.Assertion
112114
.ForCondition(string.Equals(actualRedirectUri, expectedRedirectUri))
113115
.BecauseOf(reason, reasonArgs)
114-
.FailWith(string.Format(FailureMessages.CommonFailMessage, "SignOutResult.AuthenticationProperties.RedirectUri", expectedRedirectUri, actualRedirectUri));
116+
.WithDefaultIdentifier("SignOutResult.AuthenticationProperties.RedirectUri")
117+
.FailWith(FailureMessages.CommonFailMessage, expectedRedirectUri, actualRedirectUri);
115118

116119
return this;
117120
}
@@ -130,42 +133,13 @@ public SignOutResultAssertions WithRedirectUri(string expectedRedirectUri, strin
130133
public SignOutResultAssertions WithIssuedUtc(DateTimeOffset? expectedIssuedUtc, string reason = "", params object[] reasonArgs)
131134
{
132135
var actualResult = IssuedUtc;
133-
134-
var expectedIssuedUtcAsString = expectedIssuedUtc?.ToString("r", (IFormatProvider) CultureInfo.InvariantCulture);
135-
136-
var expectedResult = DateTimeOffset.TryParseExact(expectedIssuedUtcAsString, "r", (IFormatProvider)CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out var result)
137-
? new DateTimeOffset?(result)
138-
: new DateTimeOffset?();
139-
140-
if (actualResult == null && expectedResult == null)
141-
{
142-
return this;
143-
}
144-
145-
if (actualResult == null)
146-
{
147-
Execute.Assertion
148-
.ForCondition(false)
149-
.BecauseOf(reason, reasonArgs)
150-
.FailWith(string.Format(FailureMessages.CommonFailMessage, "SignOutResult.AuthenticationProperties.IssuedUtc", expectedResult, null));
151-
152-
return this;
153-
}
154-
155-
if (expectedResult == null)
156-
{
157-
Execute.Assertion
158-
.ForCondition(false)
159-
.BecauseOf(reason, reasonArgs)
160-
.FailWith(string.Format(FailureMessages.CommonFailMessage, "SignOutResult.AuthenticationProperties.IssuedUtc", null, actualResult));
161-
162-
return this;
163-
}
136+
DateTimeOffset? expectedResult = RoundToSeconds(expectedIssuedUtc);
164137

165138
Execute.Assertion
166-
.ForCondition(DateTimeOffset.Compare(expectedResult.Value, actualResult.Value) == 0)
139+
.ForCondition(EqualityComparer<DateTimeOffset?>.Default.Equals(expectedResult, actualResult))
167140
.BecauseOf(reason, reasonArgs)
168-
.FailWith(string.Format(FailureMessages.CommonFailMessage, "SignOutResult.AuthenticationProperties.IssuedUtc", expectedResult.Value, actualResult.Value));
141+
.WithDefaultIdentifier("SignOutResult.AuthenticationProperties.IssuedUtc")
142+
.FailWith(FailureMessages.CommonFailMessage, expectedResult, actualResult);
169143

170144
return this;
171145
}
@@ -185,41 +159,13 @@ public SignOutResultAssertions WithExpiresUtc(DateTimeOffset? expectedExpiresUtc
185159
{
186160
var actualResult = ExpiresUtc;
187161

188-
var expectedExpiresUtcAsString = expectedExpiresUtc?.ToString("r", (IFormatProvider)CultureInfo.InvariantCulture);
189-
190-
var expectedResult = DateTimeOffset.TryParseExact(expectedExpiresUtcAsString, "r", (IFormatProvider)CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out var result)
191-
? new DateTimeOffset?(result)
192-
: new DateTimeOffset?();
193-
194-
if (actualResult == null && expectedResult == null)
195-
{
196-
return this;
197-
}
198-
199-
if (actualResult == null)
200-
{
201-
Execute.Assertion
202-
.ForCondition(false)
203-
.BecauseOf(reason, reasonArgs)
204-
.FailWith(string.Format(FailureMessages.CommonFailMessage, "SignOutResult.AuthenticationProperties.ExpiresUtc", expectedResult, null));
205-
206-
return this;
207-
}
208-
209-
if (expectedResult == null)
210-
{
211-
Execute.Assertion
212-
.ForCondition(false)
213-
.BecauseOf(reason, reasonArgs)
214-
.FailWith(string.Format(FailureMessages.CommonFailMessage, "SignOutResult.AuthenticationProperties.ExpiresUtc", null, actualResult));
215-
216-
return this;
217-
}
162+
DateTimeOffset? expectedResult = RoundToSeconds(expectedExpiresUtc);
218163

219164
Execute.Assertion
220-
.ForCondition(DateTimeOffset.Compare(expectedResult.Value, actualResult.Value) == 0)
165+
.ForCondition(EqualityComparer<DateTimeOffset?>.Default.Equals(expectedResult, actualResult))
221166
.BecauseOf(reason, reasonArgs)
222-
.FailWith(string.Format(FailureMessages.CommonFailMessage, "SignOutResult.AuthenticationProperties.ExpiresUtc", expectedResult.Value, actualResult.Value));
167+
.WithDefaultIdentifier("SignOutResult.AuthenticationProperties.ExpiresUtc")
168+
.FailWith(FailureMessages.CommonFailMessage, expectedResult, actualResult);
223169

224170
return this;
225171
}
@@ -243,7 +189,8 @@ public SignOutResultAssertions WithAllowRefresh(bool? expectedAllowRefresh, stri
243189
Execute.Assertion
244190
.ForCondition(actualAllowRefresh == expectedAllowRefresh)
245191
.BecauseOf(reason, reasonArgs)
246-
.FailWith(string.Format(FailureMessages.CommonFailMessage, "SignOutResult.AuthenticationProperties.AllowRefresh", expectedAllowRefresh, actualAllowRefresh));
192+
.WithDefaultIdentifier("SignOutResult.AuthenticationProperties.AllowRefresh")
193+
.FailWith(FailureMessages.CommonFailMessage, expectedAllowRefresh, actualAllowRefresh);
247194

248195
return this;
249196
}
@@ -323,5 +270,19 @@ public SignOutResultAssertions ContainsScheme(string expectedScheme, string reas
323270
}
324271

325272
#endregion
273+
274+
#region Private Methods
275+
276+
private static DateTimeOffset? RoundToSeconds(DateTimeOffset? expectedIssuedUtc)
277+
{
278+
var expectedIssuedUtcAsString = expectedIssuedUtc?.ToString("r", CultureInfo.InvariantCulture);
279+
280+
var expectedResult = DateTimeOffset.TryParseExact(expectedIssuedUtcAsString, "r", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out var result)
281+
? new DateTimeOffset?(result)
282+
: new DateTimeOffset?();
283+
return expectedResult;
284+
}
285+
286+
#endregion
326287
}
327288
}

tests/FluentAssertions.AspNetCore.Mvc.Tests/Helpers/FailureMessageHelper.cs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Linq;
3+
using System.Text;
34

45
namespace FluentAssertions.Mvc.Tests.Helpers
56
{
@@ -43,9 +44,23 @@ public static string ExpectedKeyButNotFound(string context, string key, string e
4344
private static object ToString(DateTimeOffset? expected)
4445
{
4546
if (expected.HasValue)
46-
return $"<{expected:yyyy-MM-dd HH:mm:ss.fffffff z}h>";
47-
else
48-
return "<null>";
47+
{
48+
var builder = new StringBuilder($"<{expected:yyyy-MM-dd HH:mm:ss}");
49+
if(expected.Value.Millisecond > 0)
50+
{
51+
builder.AppendFormat(".{0:fffffff}", expected.Value);
52+
}
53+
if (expected.Value.Offset.Hours > 0)
54+
{
55+
builder.AppendFormat(" +{0}h", expected.Value.Offset.Hours);
56+
} else if (expected.Value.Offset.Hours < 0)
57+
{
58+
builder.AppendFormat(" -{0}h", expected.Value.Offset.Hours);
59+
}
60+
builder.Append('>');
61+
return builder.ToString();
62+
}
63+
return "<null>";
4964
}
5065

5166
}

0 commit comments

Comments
 (0)