Skip to content

Commit 9b5344a

Browse files
authored
AuthDomain is case insensitive (#119)
Resolves #118. - Convert AuthDomain to lower case when persisting on Events. - RMs do all auth domain comparisons after converting to lower case. - Fixed namespaces in IdentityStorage.Tests files. - Removed unused duplicate TestMessages file from IdentityStorage.Tests/Helpers.
1 parent da6b705 commit 9b5344a

File tree

17 files changed

+82
-96
lines changed

17 files changed

+82
-96
lines changed

src/ReactiveDomain.IdentityStorage.Tests/ClientStoreTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Text;
55
using System.Threading.Tasks;
66

7-
namespace ReactiveDomain.Users.Tests
7+
namespace ReactiveDomain.IdentityStorage.Tests
88
{
99
internal class ClientStoreTests
1010
{

src/ReactiveDomain.IdentityStorage.Tests/Helpers/TestMessages.cs

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/ReactiveDomain.IdentityStorage.Tests/MockPrinciple.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using ReactiveDomain.IdentityStorage.ReadModels;
22

3-
namespace ReactiveDomain.Users.Tests
3+
namespace ReactiveDomain.IdentityStorage.Tests
44
{
55
internal class MockPrinciple : IPrinciple
66
{

src/ReactiveDomain.IdentityStorage.Tests/ResourceStoreTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using ReactiveDomain.IdentityStorage.Services;
33
using Xunit;
44

5-
namespace ReactiveDomain.Users.Services
5+
namespace ReactiveDomain.IdentityStorage.Tests
66
{
77
public class ResourceStoreTests
88
{

src/ReactiveDomain.IdentityStorage.Tests/SubjectAggTests.cs

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using ReactiveDomain.IdentityStorage.Messages;
55
using Xunit;
66

7-
namespace ReactiveDomain.Users.Tests
7+
namespace ReactiveDomain.IdentityStorage.Tests
88
{
99
public class SubjectAggTests
1010
{
@@ -13,26 +13,26 @@ public class SubjectAggTests
1313
private readonly Guid _subjectId = Guid.NewGuid();
1414
private readonly Guid _userId = Guid.NewGuid();
1515

16-
private string subClaim = "subject1";
17-
private string authProvider = "AD";
18-
private string authDomain = "LocalHost";
19-
private string hostIpAddress = "127.0.0.1";
20-
private string clientId = "Application1";
16+
private const string SubClaim = "subject1";
17+
private const string AuthProvider = "AD";
18+
private const string AuthDomain = "LocalHost";
19+
private const string HostIpAddress = "127.0.0.1";
20+
private const string ClientId = "Application1";
2121

2222
[Fact]
2323
public void can_create_subject()
2424
{
25-
Assert.Throws<ArgumentException>(() => new Subject(Guid.Empty, _userId, subClaim, authProvider, authDomain, _command));
26-
Assert.Throws<ArgumentException>(() => new Subject(_subjectId, Guid.Empty, subClaim, authProvider, authDomain, _command));
27-
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, null, authProvider, authDomain, _command));
28-
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, String.Empty, authProvider, authDomain, _command));
29-
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, subClaim, null, authDomain, _command));
30-
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, subClaim, String.Empty, authDomain, _command));
31-
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, subClaim, authProvider, null, _command));
32-
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, subClaim, authProvider, String.Empty, _command));
33-
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, subClaim, authProvider, authDomain, null));
34-
35-
var sub = new Subject(_subjectId, _userId, subClaim, authProvider, authDomain, _command);
25+
Assert.Throws<ArgumentException>(() => new Subject(Guid.Empty, _userId, SubClaim, AuthProvider, AuthDomain, _command));
26+
Assert.Throws<ArgumentException>(() => new Subject(_subjectId, Guid.Empty, SubClaim, AuthProvider, AuthDomain, _command));
27+
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, null, AuthProvider, AuthDomain, _command));
28+
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, string.Empty, AuthProvider, AuthDomain, _command));
29+
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, SubClaim, null, AuthDomain, _command));
30+
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, SubClaim, string.Empty, AuthDomain, _command));
31+
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, SubClaim, AuthProvider, null, _command));
32+
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, SubClaim, AuthProvider, string.Empty, _command));
33+
Assert.Throws<ArgumentNullException>(() => new Subject(_subjectId, _userId, SubClaim, AuthProvider, AuthDomain, null));
34+
35+
var sub = new Subject(_subjectId, _userId, SubClaim, AuthProvider, AuthDomain, _command);
3636
var events = ((IEventSource)sub).TakeEvents();
3737
Assert.Collection(
3838
events,
@@ -41,9 +41,9 @@ public void can_create_subject()
4141
var created = Assert.IsType<SubjectMsgs.SubjectCreated>(e);
4242
Assert.Equal(_subjectId, created.SubjectId);
4343
Assert.Equal(_userId, created.UserId);
44-
Assert.Equal(subClaim, created.SubClaim);
45-
Assert.Equal(authProvider, created.AuthProvider);
46-
Assert.Equal(authDomain, created.AuthDomain);
44+
Assert.Equal(SubClaim, created.SubClaim);
45+
Assert.Equal(AuthProvider, created.AuthProvider);
46+
Assert.Equal(AuthDomain.ToLowerInvariant(), created.AuthDomain);
4747
Assert.Equal(_command.CorrelationId, created.CorrelationId);
4848
Assert.Equal(_command.MsgId, created.CausationId);
4949
});
@@ -54,8 +54,8 @@ public void can_create_subject()
5454
public void can_log_authenticated_subject()
5555
{
5656

57-
var sub = new Subject(_subjectId, _userId, subClaim, authProvider, authDomain, _command);
58-
sub.Authenticated(hostIpAddress, clientId);
57+
var sub = new Subject(_subjectId, _userId, SubClaim, AuthProvider, AuthDomain, _command);
58+
sub.Authenticated(HostIpAddress, ClientId);
5959

6060
var events = ((IEventSource)sub).TakeEvents();
6161
Assert.Collection(
@@ -65,17 +65,17 @@ public void can_log_authenticated_subject()
6565
{
6666
var authenticated = Assert.IsType<SubjectMsgs.Authenticated>(e);
6767
Assert.Equal(_subjectId, authenticated.SubjectId);
68-
Assert.Equal(hostIpAddress, authenticated.HostIpAddress);
69-
Assert.Equal(clientId, authenticated.ClientId);
68+
Assert.Equal(HostIpAddress, authenticated.HostIpAddress);
69+
Assert.Equal(ClientId, authenticated.ClientId);
7070
});
7171
}
7272

7373
[Fact]
7474
public void can_log_authenticated_failed_account_locked()
7575
{
7676

77-
var sub = new Subject(_subjectId, _userId, subClaim, authProvider, authDomain, _command);
78-
sub.NotAuthenticatedAccountLocked(hostIpAddress, clientId);
77+
var sub = new Subject(_subjectId, _userId, SubClaim, AuthProvider, AuthDomain, _command);
78+
sub.NotAuthenticatedAccountLocked(HostIpAddress, ClientId);
7979

8080
var events = ((IEventSource)sub).TakeEvents();
8181
Assert.Collection(
@@ -85,16 +85,16 @@ public void can_log_authenticated_failed_account_locked()
8585
{
8686
var authenticated = Assert.IsType<SubjectMsgs.AuthenticationFailedAccountLocked>(e);
8787
Assert.Equal(_subjectId, authenticated.SubjectId);
88-
Assert.Equal(hostIpAddress, authenticated.HostIpAddress);
89-
Assert.Equal(clientId, authenticated.ClientId);
88+
Assert.Equal(HostIpAddress, authenticated.HostIpAddress);
89+
Assert.Equal(ClientId, authenticated.ClientId);
9090
});
9191
}
9292
[Fact]
9393
public void can_log_authenticated_failed_account_disabled()
9494
{
9595

96-
var sub = new Subject(_subjectId, _userId, subClaim, authProvider, authDomain, _command);
97-
sub.NotAuthenticatedAccountDisabled(hostIpAddress, clientId);
96+
var sub = new Subject(_subjectId, _userId, SubClaim, AuthProvider, AuthDomain, _command);
97+
sub.NotAuthenticatedAccountDisabled(HostIpAddress, ClientId);
9898

9999
var events = ((IEventSource)sub).TakeEvents();
100100
Assert.Collection(
@@ -104,16 +104,16 @@ public void can_log_authenticated_failed_account_disabled()
104104
{
105105
var authenticated = Assert.IsType<SubjectMsgs.AuthenticationFailedAccountDisabled>(e);
106106
Assert.Equal(_subjectId, authenticated.SubjectId);
107-
Assert.Equal(hostIpAddress, authenticated.HostIpAddress);
108-
Assert.Equal(clientId, authenticated.ClientId);
107+
Assert.Equal(HostIpAddress, authenticated.HostIpAddress);
108+
Assert.Equal(ClientId, authenticated.ClientId);
109109
});
110110
}
111111
[Fact]
112112
public void can_log_authenticated_failed_invalid_credentials()
113113
{
114114

115-
var sub = new Subject(_subjectId, _userId, subClaim, authProvider, authDomain, _command);
116-
sub.NotAuthenticatedInvalidCredentials(hostIpAddress, clientId);
115+
var sub = new Subject(_subjectId, _userId, SubClaim, AuthProvider, AuthDomain, _command);
116+
sub.NotAuthenticatedInvalidCredentials(HostIpAddress, ClientId);
117117

118118
var events = ((IEventSource)sub).TakeEvents();
119119
Assert.Collection(
@@ -123,8 +123,8 @@ public void can_log_authenticated_failed_invalid_credentials()
123123
{
124124
var authenticated = Assert.IsType<SubjectMsgs.AuthenticationFailedInvalidCredentials>(e);
125125
Assert.Equal(_subjectId, authenticated.SubjectId);
126-
Assert.Equal(hostIpAddress, authenticated.HostIpAddress);
127-
Assert.Equal(clientId, authenticated.ClientId);
126+
Assert.Equal(HostIpAddress, authenticated.HostIpAddress);
127+
Assert.Equal(ClientId, authenticated.ClientId);
128128
});
129129
}
130130
}

src/ReactiveDomain.IdentityStorage.Tests/SubjectRmTests.cs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@
77
using ReactiveDomain.IdentityStorage.ReadModels;
88
using Xunit;
99

10-
namespace ReactiveDomain.Users.Tests
10+
namespace ReactiveDomain.IdentityStorage.Tests
1111
{
1212
public class SubjectRmTests
1313
{
1414
private readonly MockRepositorySpecification _fixture;
1515
private readonly SubjectsRm _rm;
16-
private Dictionary<string, Dictionary<Guid, Guid>> _subjects = new Dictionary<string, Dictionary<Guid, Guid>>(); //{provider/domain}-{userId-subjectId}
16+
private readonly Dictionary<string, Dictionary<Guid, Guid>> _subjects = new Dictionary<string, Dictionary<Guid, Guid>>(); //{provider/domain}-{userId-subjectId}
1717

18-
private string authProvider = "AD";
19-
private string authProvider2 = "Google";
20-
private string authDomain = "MyDomain";
18+
private const string AuthProvider = "AD";
19+
private const string AuthProvider2 = "Google";
20+
private const string AuthDomain = "MyDomain";
2121

2222
public SubjectRmTests()
2323
{
@@ -41,9 +41,9 @@ public void readmodel_lists_added_subjects()
4141
public void readmodel_lists_multiple_domains()
4242
{
4343
var userId = Guid.NewGuid();
44-
AddNewSubject(userId, provider: authProvider, domain: authDomain);
45-
AddNewSubject(provider: authProvider2, domain: "other1");
46-
AddNewSubject(provider: authProvider2, domain: "other2");
44+
AddNewSubject(userId, provider: AuthProvider, domain: AuthDomain);
45+
AddNewSubject(provider: AuthProvider2, domain: "other1");
46+
AddNewSubject(provider: AuthProvider2, domain: "other2");
4747
Assert.Equal(_subjects, _rm.SubjectsByUserId);
4848
}
4949
[Fact]
@@ -52,45 +52,45 @@ public void can_get_subject_ids()
5252
var user1 = Guid.NewGuid();
5353
var user2 = Guid.NewGuid();
5454
var user3 = Guid.NewGuid();
55-
var sub1 = AddNewSubject(user1, provider: authProvider2, domain: "other1");
56-
var sub2 = AddNewSubject(user2, provider: authProvider2, domain: "other2");
55+
var sub1 = AddNewSubject(user1, provider: AuthProvider2, domain: "other1");
56+
var sub2 = AddNewSubject(user2, provider: AuthProvider2, domain: "other2");
5757
var sub3 = AddNewSubject(user3);
5858
Guid testSub = Guid.Empty;
59-
AssertEx.IsOrBecomesTrue(()=> _rm.TryGetSubjectIdForUser(user1, authProvider2, "other1", out testSub));
59+
AssertEx.IsOrBecomesTrue(()=> _rm.TryGetSubjectIdForUser(user1, AuthProvider2, "other1", out testSub));
6060
Assert.Equal(sub1, testSub);
61-
Assert.True(_rm.TryGetSubjectIdForUser(user2, authProvider2, "other2", out testSub));
61+
Assert.True(_rm.TryGetSubjectIdForUser(user2, AuthProvider2, "other2", out testSub));
6262
Assert.Equal(sub2, testSub);
63-
Assert.True(_rm.TryGetSubjectIdForUser(user3, authProvider, authDomain, out testSub));
63+
Assert.True(_rm.TryGetSubjectIdForUser(user3, AuthProvider, AuthDomain, out testSub));
6464
Assert.Equal(sub3, testSub);
6565
}
6666
[Fact]
6767
public void can_get_subject_id_for_principle()
6868
{
6969
var userId = Guid.NewGuid();
70-
var subjectId = AddNewSubject(userId, provider: authProvider, domain: authDomain);
71-
var user = new MockPrinciple { Provider = authProvider, Domain = authDomain, SId = userId.ToString() };
70+
var subjectId = AddNewSubject(userId, provider: AuthProvider, domain: AuthDomain);
71+
var user = new MockPrinciple { Provider = AuthProvider, Domain = AuthDomain, SId = userId.ToString() };
7272
Assert.True(_rm.TryGetSubjectIdForPrinciple(user, out var id));
7373
Assert.Equal(subjectId, id);
7474
}
7575
[Fact]
7676
public void missing_sub_id_returns_false()
7777
{
78-
Assert.False(_rm.TryGetSubjectIdForUser(Guid.NewGuid(), authProvider, authDomain, out Guid testSub));
78+
Assert.False(_rm.TryGetSubjectIdForUser(Guid.NewGuid(), AuthProvider, AuthDomain, out Guid testSub));
7979
Assert.Equal(Guid.Empty, testSub);
8080
}
8181
[Fact]
8282
public void wrong_domain_returns_false()
8383
{
8484
var user1 = Guid.NewGuid();
85-
var sub1 = AddNewSubject(user1, authProvider, authDomain);
85+
var sub1 = AddNewSubject(user1, AuthProvider, AuthDomain);
8686
//no
87-
Assert.False(_rm.TryGetSubjectIdForUser(user1, authProvider, "other1", out Guid testSub));
87+
Assert.False(_rm.TryGetSubjectIdForUser(user1, AuthProvider, "other1", out Guid testSub));
8888
Assert.Equal(Guid.Empty, testSub);
8989
//no
90-
Assert.False(_rm.TryGetSubjectIdForUser(user1, authProvider2, authDomain, out testSub));
90+
Assert.False(_rm.TryGetSubjectIdForUser(user1, AuthProvider2, AuthDomain, out testSub));
9191
Assert.Equal(Guid.Empty, testSub);
9292
//yes
93-
Assert.True(_rm.TryGetSubjectIdForUser(user1, authProvider, authDomain, out testSub));
93+
Assert.True(_rm.TryGetSubjectIdForUser(user1, AuthProvider, AuthDomain, out testSub));
9494
Assert.Equal(sub1, testSub);
9595

9696
}
@@ -103,15 +103,15 @@ private Guid AddNewSubject(Guid? specifiedUserId = null, string provider = null,
103103
var subjectId = Guid.NewGuid();
104104
var userId = specifiedUserId ?? Guid.NewGuid();
105105

106-
if (!_subjects.TryGetValue($"{provider ?? authProvider}-{domain ?? authDomain}", out var subjects))
106+
if (!_subjects.TryGetValue($"{provider ?? AuthProvider}-{(domain ?? AuthDomain).ToLowerInvariant()}", out var subjects))
107107
{
108108
subjects = new Dictionary<Guid, Guid>();
109-
_subjects.Add($"{provider ?? authProvider}-{domain ?? authDomain}", subjects);
109+
_subjects.Add($"{provider ?? AuthProvider}-{(domain ?? AuthDomain).ToLowerInvariant()}", subjects);
110110
}
111111
subjects.Add(userId, subjectId);
112112

113113
var evt = MessageBuilder.New(
114-
() => new SubjectMsgs.SubjectCreated(subjectId, userId, userId.ToString(), provider ?? authProvider, domain ?? authDomain));
114+
() => new SubjectMsgs.SubjectCreated(subjectId, userId, userId.ToString(), provider ?? AuthProvider, (domain ?? AuthDomain).ToLowerInvariant()));
115115
var stream = _fixture.StreamNameBuilder.GenerateForAggregate(typeof(Subject), subjectId);
116116
_fixture.StreamStoreConnection.AppendToStream(
117117
stream,

src/ReactiveDomain.IdentityStorage.Tests/TestMessages.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using ReactiveDomain.Messaging;
22

3-
namespace ReactiveDomain.Users.Tests
3+
namespace ReactiveDomain.IdentityStorage.Tests
44
{
55
class TestMessages
66
{

src/ReactiveDomain.IdentityStorage.Tests/UserAggregateTests.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22
using ReactiveDomain.IdentityStorage.Domain;
33
using ReactiveDomain.IdentityStorage.Messages;
44
using ReactiveDomain.Messaging;
5-
using ReactiveDomain.Users.Tests.Helpers;
65
using Xunit;
76

8-
namespace ReactiveDomain.Users.Tests
7+
namespace ReactiveDomain.IdentityStorage.Tests
98
{
109
[Collection("UserDomainTests")]
1110
public sealed class UserAggregateTests
@@ -247,7 +246,7 @@ public void cannot_create_user_with_malformed_email()
247246
_command));
248247
}
249248
[Fact]
250-
public void can_mapp_authdomain()
249+
public void can_map_authdomain()
251250
{
252251
var user = new User(
253252
_id,
@@ -302,7 +301,7 @@ public void can_mapp_authdomain()
302301
Assert.Equal(_id, mapped.UserId);
303302
Assert.Equal(_userSidFromAuthProvider, mapped.SubjectId);
304303
Assert.Equal(AuthProvider, mapped.AuthProvider);
305-
Assert.Equal(AuthDomain, mapped.AuthDomain);
304+
Assert.Equal(AuthDomain.ToLowerInvariant(), mapped.AuthDomain);
306305
Assert.Equal(UserName, mapped.UserName);
307306
}
308307
else
@@ -374,7 +373,7 @@ public void can_map_additional_authdomains()
374373
Assert.Equal(_id, mapped.UserId);
375374
Assert.Equal(_userSidFromAuthProvider, mapped.SubjectId);
376375
Assert.Equal(AuthProvider, mapped.AuthProvider);
377-
Assert.Equal(AuthDomain, mapped.AuthDomain);
376+
Assert.Equal(AuthDomain.ToLowerInvariant(), mapped.AuthDomain);
378377
Assert.Equal(UserName, mapped.UserName);
379378
}
380379
else
@@ -389,7 +388,7 @@ public void can_map_additional_authdomains()
389388
Assert.Equal(_id, mapped.UserId);
390389
Assert.Equal(otherSid, mapped.SubjectId);
391390
Assert.Equal(AuthProvider, mapped.AuthProvider);
392-
Assert.Equal(AuthDomain, mapped.AuthDomain);
391+
Assert.Equal(AuthDomain.ToLowerInvariant(), mapped.AuthDomain);
393392
Assert.Equal(UserName, mapped.UserName);
394393
}
395394
else

src/ReactiveDomain.IdentityStorage.Tests/UserServiceTests.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
using System;
22
using ReactiveDomain.Foundation;
3-
using ReactiveDomain.IdentityStorage;
43
using ReactiveDomain.IdentityStorage.Domain;
54
using ReactiveDomain.IdentityStorage.Messages;
65
using ReactiveDomain.IdentityStorage.Services;
76
using ReactiveDomain.Messaging;
87
using ReactiveDomain.Testing;
9-
using ReactiveDomain.Users.Services;
10-
using ReactiveDomain.Users.Tests.Helpers;
118
using Xunit;
129

13-
namespace ReactiveDomain.Users.Tests
10+
namespace ReactiveDomain.IdentityStorage.Tests
1411
{
1512
[Collection("UserDomainTests")]
1613
public sealed class UserServiceTests :

0 commit comments

Comments
 (0)