public async Task CreateIdentityRequestHandler_Handle_Returns_InvalidUserKey() { AuthenticationContext.OpenInMemoryConnection(); try { CreateIdentityResponse response; var request = new CreateIdentityRequest(); using (var context = AuthenticationContext.GetInMemoryContext()) { var handler = new CreateIdentityRequestHandler(context); response = await handler.Handle(request); } using (var context = AuthenticationContext.GetInMemoryContext()) { Assert.IsFalse(context.Users.Any()); Assert.IsNull(response.ActivationToken); Assert.IsFalse(response.IsSuccess); Assert.AreEqual(ErrorType.InvalidKey, response.ErrorType); } } finally { AuthenticationContext.CloseInMemoryConnection(); } }
public async Task UserLoginRequestHandler_Handle_Returns_Success() { AuthenticationContext.OpenInMemoryConnection(); try { //Arrange using (var context = AuthenticationContext.GetInMemoryContext()) { var user = new User { UserKey = Guid.NewGuid(), Name = "Test User", Created = DateTime.Now, IsActive = true, Role = Role.Donator }; var credential = new Credential { CredentialType = CredentialType.Default, User = user, Identifier = "Admin", Secret = Encryption.CreateHash("admin"), }; context.Add(user); context.Add(credential); context.SaveChanges(); } UserLoginResponse response; var request = new UserLoginRequest { Identifier = "admin", LoginTypeCode = CredentialType.Default }; //Act using (var context = AuthenticationContext.GetInMemoryContext()) { var handler = new UserLoginRequestHandler(context); response = await handler.Handle(request); } //Assert using (var context = AuthenticationContext.GetInMemoryContext()) { Assert.IsTrue(response.IsSuccess); Assert.IsTrue(Encryption.ValidatePassword("admin", response.EncrytedPassword)); Assert.AreEqual(response.UserName, context.Users.Single().Name); Assert.AreEqual(response.UserKey, context.Users.Single().UserKey); Assert.IsTrue(response.Role.OnlyHasFlag(Role.Donator)); } } finally { AuthenticationContext.CloseInMemoryConnection(); } }
public async Task UserLoginRequestHandler_Handle_Returns_InactiveAccount() { AuthenticationContext.OpenInMemoryConnection(); try { //Arrange using (var context = AuthenticationContext.GetInMemoryContext()) { var user = new User { UserKey = Guid.NewGuid(), Name = "Test User", Created = DateTime.Now, IsActive = false, Role = Role.Donator }; var credential = new Credential { CredentialType = CredentialType.Default, User = user, Identifier = "Admin", Secret = Core.Encryption.CreateHash("admin"), }; context.Add(user); context.Add(credential); context.SaveChanges(); } UserLoginResponse response; var request = new UserLoginRequest { Identifier = "admin", LoginTypeCode = CredentialType.Default }; //Act using (var context = AuthenticationContext.GetInMemoryContext()) { var handler = new UserLoginRequestHandler(context); response = await handler.Handle(request); } //Assert Assert.AreEqual(ErrorType.InactiveAccount, response.ErrorType); Assert.IsNull(response.EncrytedPassword); Assert.IsFalse(response.IsSuccess); Assert.IsNull(response.UserName); Assert.AreEqual(response.UserKey, Guid.Empty); Assert.AreEqual(Role.Default, response.Role); } finally { AuthenticationContext.CloseInMemoryConnection(); } }
public async Task UserUpdatedEventHandler_Consume_Updates_Name() { AuthenticationContext.OpenInMemoryConnection(); try { var userUpdatedEvent = new UserUpdatedEvent { UserKey = Guid.NewGuid(), FirstName = "Ellen", LastName = "Doe", EmailAddress = "*****@*****.**" }; var user = new User { UserKey = userUpdatedEvent.UserKey, Name = "John Doe" }; var credential = new Credential { CredentialType = CredentialType.Email, User = user, Identifier = "*****@*****.**" }; using (var context = AuthenticationContext.GetInMemoryContext()) { context.Users.Add(user); context.Credentials.Add(credential); context.SaveChanges(); } using (var context = AuthenticationContext.GetInMemoryContext()) { var handler = new UserUpdatedEventHandler(context); await handler.ConsumeAsync(userUpdatedEvent); } using (var context = AuthenticationContext.GetInMemoryContext()) { Assert.AreEqual("Ellen Doe", context.Users.Single().Name); Assert.AreEqual("*****@*****.**", context.Credentials.Single().Identifier); } } finally { AuthenticationContext.CloseInMemoryConnection(); } }
public async Task GetUserActivationTokenRequestHandler_Handle_ReturnsToken() { AuthenticationContext.OpenInMemoryConnection(); try { using (var context = AuthenticationContext.GetInMemoryContext()) { var user = new User { Id = Guid.NewGuid(), Name = "John Doe", IsActive = false }; var credential = new Credential { Id = Guid.NewGuid(), CredentialType = CredentialType.Email, Identifier = "*****@*****.**", User = user }; context.Users.Add(user); context.Credentials.Add(credential); context.SaveChanges(); } GetUserActivationTokenResponse response; var request = new GetUserActivationTokenRequest { EmailAddress = "*****@*****.**" }; using (var context = AuthenticationContext.GetInMemoryContext()) { var handler = new GetUserActivationTokenRequestHandler(context); response = await handler.Handle(request); } using (var context = AuthenticationContext.GetInMemoryContext()) { Assert.IsFalse(context.Users.Single().IsActive); Assert.IsNotNull(response.ActivationToken); Assert.AreEqual(context.Users.Single().ActivationToken, response.ActivationToken); Assert.AreEqual(context.Users.Single().Name, response.UserName); } } finally { AuthenticationContext.CloseInMemoryConnection(); } }
public async Task CreateIdentityRequestHandler_Handle_Returns_EmailExists() { AuthenticationContext.OpenInMemoryConnection(); try { using (var context = AuthenticationContext.GetInMemoryContext()) { var user = new User { Id = Guid.NewGuid(), Name = "John Doe" }; context.Credentials.Add(new Credential { Id = Guid.NewGuid(), CredentialType = CredentialType.Email, Identifier = "*****@*****.**", User = user }); context.Users.Add(user); context.SaveChanges(); } CreateIdentityResponse response; var request = new CreateIdentityRequest { UserKey = Guid.NewGuid(), Identifier = "*****@*****.**", CredentialType = CredentialType.Email }; using (var context = AuthenticationContext.GetInMemoryContext()) { var handler = new CreateIdentityRequestHandler(context); response = await handler.Handle(request); } using (var context = AuthenticationContext.GetInMemoryContext()) { Assert.IsTrue(context.Users.Count() == 1); Assert.IsNull(response.ActivationToken); Assert.IsFalse(response.IsSuccess); Assert.AreEqual(ErrorType.EmailExists, response.ErrorType); } } finally { AuthenticationContext.CloseInMemoryConnection(); } }
public async Task UpdateRolesRequestHandler_Handle_ReturnsInvalidUserKey() { AuthenticationContext.OpenInMemoryConnection(); try { UpdateRolesResponse response; var request = new UpdateRolesRequest { UserKey = Guid.NewGuid(), Role = Role.CharityOwner }; using (var context = AuthenticationContext.GetInMemoryContext()) { var user = new User { Id = Guid.NewGuid(), UserKey = Guid.NewGuid(), Name = "John Doe", Role = Role.Donator }; context.Users.Add(user); context.SaveChanges(); } using (var context = AuthenticationContext.GetInMemoryContext()) { var handler = new UpdateRolesRequestHandler(context); response = await handler.Handle(request); } using (var context = AuthenticationContext.GetInMemoryContext()) { Assert.IsTrue(context.Users.Single().Role.OnlyHasFlag(Role.Donator)); Assert.AreEqual(response.ErrorType, ErrorType.InvalidKey); Assert.IsFalse(response.IsSuccess); } } finally { AuthenticationContext.CloseInMemoryConnection(); } }
public async Task CreateIdentityRequestHandler_Handle_Returns_ActivationCode() { AuthenticationContext.OpenInMemoryConnection(); try { CreateIdentityResponse response; var request = new CreateIdentityRequest { CredentialType = CredentialType.Email, Identifier = "*****@*****.**", Role = Role.Donator, Secret = "password", UserKey = Guid.NewGuid(), UserName = "******" }; using (var context = AuthenticationContext.GetInMemoryContext()) { var handler = new CreateIdentityRequestHandler(context); response = await handler.Handle(request); } using (var context = AuthenticationContext.GetInMemoryContext()) { Assert.IsNotNull(response.ActivationToken); Assert.IsTrue(response.IsSuccess); Assert.IsTrue(context.Users.Count() == 1); Assert.AreEqual(request.UserName, context.Users.Single().Name); Assert.AreEqual(request.UserKey, context.Users.Single().UserKey); Assert.AreEqual(request.Role, context.Users.Single().Role); Assert.IsTrue(context.Credentials.Count() == 1); Assert.AreEqual(request.CredentialType, context.Credentials.Single().CredentialType); Assert.AreEqual(request.Identifier, context.Credentials.Single().Identifier); Assert.AreEqual(request.Secret, context.Credentials.Single().Secret); } } finally { AuthenticationContext.CloseInMemoryConnection(); } }
public async Task ActivateUserRequestHandler_Handle_Returns_TokenExpired() { AuthenticationContext.OpenInMemoryConnection(); try { using (var context = AuthenticationContext.GetInMemoryContext()) { context.Users.Add(new User { Id = Guid.NewGuid(), Name = "John Doe", ActivationToken = "testtoken", ActivationTokenExpirationDate = DateTime.UtcNow.Subtract(TimeSpan.FromDays(1)) }); context.SaveChanges(); } ActivateUserResponse response; var request = new ActivateUserRequest { ActivationToken = "testtoken" }; using (var context = AuthenticationContext.GetInMemoryContext()) { var handler = new ActivateUserRequestHandler(context); response = await handler.Handle(request); } using (var context = AuthenticationContext.GetInMemoryContext()) { Assert.IsFalse(context.Users.Single().IsActive); Assert.AreEqual(ErrorType.TokenExpired, response.ErrorType); Assert.IsFalse(response.IsSuccess); } } finally { AuthenticationContext.CloseInMemoryConnection(); } }
public async Task ActivateUserRequestHandler_Handle_Returns_Success() { AuthenticationContext.OpenInMemoryConnection(); try { using (var context = AuthenticationContext.GetInMemoryContext()) { context.Users.Add(new User { Id = Guid.NewGuid(), Name = "John Doe", ActivationToken = "token", ActivationTokenExpirationDate = DateTime.UtcNow.AddDays(1) }); context.SaveChanges(); } ActivateUserResponse response; var request = new ActivateUserRequest { ActivationToken = "token" }; using (var context = AuthenticationContext.GetInMemoryContext()) { var handler = new ActivateUserRequestHandler(context); response = await handler.Handle(request); } using (var context = AuthenticationContext.GetInMemoryContext()) { Assert.IsTrue(context.Users.Single().IsActive); Assert.IsNull(context.Users.Single().ActivationToken); Assert.IsTrue(response.IsSuccess); } } finally { AuthenticationContext.CloseInMemoryConnection(); } }