public async Task Handle_NormalValues_RegisterExternalUser() { // arrange var cancellationToken = new CancellationToken(); var unitOfWorkFactory = new TransactionScopeUnitOfWorkFactory(); var dbContextFactory = new DefaultDbContextFactory(); var identityServiceFactory = new IdentityServiceFactory(); var classifierRepositoryFactoryBuilder = new ClassifierRepositoryFactoryBuilder(dbContextFactory) { UserTypeCode = ClassifierTypeCode.User }; var classifierRepositoryFactory = classifierRepositoryFactoryBuilder.Build(); // todo: test EmailConfirmationService var emailConfirmationServiceMock = new Mock <IEmailConfirmationService>(); var handler = new ExternalRegisterHandler(new NullLogger <ExternalRegisterHandler>(), classifierRepositoryFactory, identityServiceFactory.UserManager, identityServiceFactory.SignInManager, emailConfirmationServiceMock.Object); using (var _ = unitOfWorkFactory.Create()) { // act var command = new ExternalRegister { Email = "*****@*****.**" }; var result = await handler.Handle(command, cancellationToken); // assert Assert.IsTrue(result.Success, string.Join(",", result.Message)); } }
public async Task Handle_NormalValues_RegisterUser() { // arrange var cancellationToken = new CancellationToken(); var unitOfWorkFactory = new TransactionScopeUnitOfWorkFactory(); var dbContextFactory = new DefaultDbContextFactory(); var appOptionsAccessorMock = new Mock <IOptionsMonitor <AppOptions> >(); appOptionsAccessorMock.Setup(x => x.CurrentValue) .Returns(() => new AppOptions { AppUrl = "https://app.montr.net" }); var appOptionsAccessor = appOptionsAccessorMock.Object; var identityServiceFactory = new IdentityServiceFactory(); var classifierRepositoryFactoryBuilder = new ClassifierRepositoryFactoryBuilder(dbContextFactory) { UserTypeCode = ClassifierTypeCode.User }; var classifierRepositoryFactory = classifierRepositoryFactoryBuilder.Build(); // todo: test EmailConfirmationService /* * var dbMessageTemplateRepository = new DbMessageTemplateRepository(dbContextFactory); * var templateRenderer = new MustacheTemplateRenderer(dbMessageTemplateRepository); * var emailConfirmationService = new EmailConfirmationService(userManager, appUrlBuilder, new Mock<IEmailSender>().Object, templateRenderer); */ var appUrlBuilder = new DefaultAppUrlBuilder(appOptionsAccessor); var emailConfirmationServiceMock = new Mock <IEmailConfirmationService>(); var generator = new MasterDataDbGenerator(unitOfWorkFactory, dbContextFactory); var handler = new RegisterHandler(new NullLogger <RegisterHandler>(), classifierRepositoryFactory, identityServiceFactory.UserManager, identityServiceFactory.SignInManager, appUrlBuilder, emailConfirmationServiceMock.Object); using (var _ = unitOfWorkFactory.Create()) { await generator.EnsureClassifierTypeRegistered(Numerator.GetDefaultMetadata(), cancellationToken); await generator.EnsureClassifierTypeRegistered(User.GetDefaultMetadata(), cancellationToken); // act var command = new Register { Email = "*****@*****.**", Password = Guid.NewGuid().ToString() }; var result = await handler.Handle(command, cancellationToken); // assert Assert.IsTrue(result.Success); } }
public async Task ManageUserRoles_NormalValues_ReturnSuccess() { // arrange var cancellationToken = new CancellationToken(); var unitOfWorkFactory = new TransactionScopeUnitOfWorkFactory(); var dbContextFactory = new DefaultDbContextFactory(); var identityServiceFactory = new IdentityServiceFactory(); var classifierRepositoryFactoryBuilder = new ClassifierRepositoryFactoryBuilder(dbContextFactory); var classifierRepositoryFactory = classifierRepositoryFactoryBuilder.Build(); var roleRepository = classifierRepositoryFactory.GetNamedOrDefaultService(classifierRepositoryFactoryBuilder.RoleTypeCode); var userRepository = classifierRepositoryFactory.GetNamedOrDefaultService(classifierRepositoryFactoryBuilder.UserTypeCode); var generator = new MasterDataDbGenerator(unitOfWorkFactory, dbContextFactory); var addHandler = new AddUserRolesHandler(new NullLogger <AddUserRolesHandler>(), unitOfWorkFactory, identityServiceFactory.UserManager); var removeHandler = new RemoveUserRolesHandler(new NullLogger <RemoveUserRolesHandler>(), unitOfWorkFactory, identityServiceFactory.UserManager); var roles = new[] { "test_role_1", "test_role_2", "test_role_3" }; using (var _ = unitOfWorkFactory.Create()) { await generator.EnsureClassifierTypeRegistered(Role.GetDefaultMetadata(), cancellationToken); await generator.EnsureClassifierTypeRegistered(User.GetDefaultMetadata(), cancellationToken); // arrange foreach (var name in roles) { var role = await roleRepository.Insert(new Role { Uid = Guid.NewGuid(), Name = name }, cancellationToken); Assert.IsTrue(role.Success, string.Join(",", role.Errors.SelectMany(x => x.Messages))); } // var dbRoles = identityServiceFactory.RoleManager.Roles.ToList(); var user = await userRepository.Insert(new User { Uid = Guid.NewGuid(), UserName = "******" }, cancellationToken); Assert.IsTrue(user.Success, string.Join(",", user.Errors.SelectMany(x => x.Messages))); // ReSharper disable once PossibleInvalidOperationException var userUid = user.Uid.Value; // act - add roles var addResult = await addHandler.Handle(new AddUserRoles { UserUid = userUid, Roles = roles }, cancellationToken); Assert.IsTrue(addResult.Success, string.Join(",", user.Errors.SelectMany(x => x.Messages))); // act - remove roles var removeResult = await removeHandler.Handle(new RemoveUserRoles { UserUid = userUid, Roles = roles }, cancellationToken); Assert.IsTrue(removeResult.Success, string.Join(",", user.Errors.SelectMany(x => x.Messages))); } }
public void RegistrationTest() { // Arrange var service = IdentityServiceFactory.CreateFromMemory(new List <string> { "janeSmith" }, new List <string> { "john123." }); var customProperties = new Dictionary <string, string> { { "Prop1", "Val1" }, { "Prop2", "Val2" } }; // Act var result1 = service.Authenticate("jsmith", "jane123."); var result2 = service.Register("jSmith", "jane123.", customProperties); var result3 = service.Authenticate("jsmith", "jane123."); var result4 = service.Authenticate("jSmith", "jane123."); var result5 = service.Register("jsmith", "jane123."); var result6 = service.Register("JaneSmith", "john123."); // Assert Assert.IsFalse(result1.IsSuccessful); Assert.AreEqual(AuthenticationError.UserNotFound, result1.Error); Assert.IsTrue(result2.IsSuccessful); Assert.IsNull(result2.Error); Assert.IsTrue(result3.IsSuccessful); Assert.IsNull(result3.Error); Assert.AreEqual("jSmith", result3.OriginalUserName); Assert.AreEqual(2, result3.Properties.Count); Assert.AreEqual(customProperties["Prop1"], result3.Properties["Prop1"]); Assert.AreEqual(customProperties["Prop2"], result3.Properties["Prop2"]); Assert.IsTrue(result4.IsSuccessful); Assert.IsNull(result4.Error); Assert.IsFalse(result5.IsSuccessful); Assert.AreEqual(RegistrationError.UserAlreadyExists, result5.Error); Assert.IsFalse(result6.IsSuccessful); Assert.AreEqual(RegistrationError.UserAlreadyExists, result6.Error); }
public void AuthenticationTest() { // Arrange var service = IdentityServiceFactory.CreateFromMemory(new List <string> { "jsmith" }, new List <string> { "jane123." }); // Act var result1 = service.Authenticate("jsmitch", "jane123."); var result2 = service.Authenticate("jsmith", "jane123"); var result3 = service.Authenticate("jsmith", "jane123."); var result4 = service.Authenticate("jSmith", "jane123."); var result5 = service.Authenticate("jSmith", "Jane123."); // Assert Assert.IsFalse(result1.IsSuccessful); Assert.AreEqual(AuthenticationError.UserNotFound, result1.Error); Assert.IsNull(result1.Properties); Assert.IsNull(result1.OriginalUserName); Assert.IsFalse(result2.IsSuccessful); Assert.AreEqual(AuthenticationError.InvalidPassword, result2.Error); Assert.IsTrue(result3.IsSuccessful); Assert.IsNull(result3.Error); Assert.IsFalse(result3.Properties.Any()); Assert.IsTrue(result4.IsSuccessful); Assert.IsNull(result4.Error); Assert.IsFalse(result5.IsSuccessful); Assert.AreEqual(AuthenticationError.InvalidPassword, result5.Error); }
public void SavingToFileTest() { // Arrange var filePath = $"{Guid.NewGuid()}.json"; var customProperties = new Dictionary <string, string> { { "Prop1", "Val1" }, { "Prop2", "Val2" } }; var service1 = IdentityServiceFactory.CreateFromMemory(new List <string> { "jsmith" }, new List <string> { "jane123." }); // Act var result1 = service1.Authenticate("JaneSmith", "john123."); var result2 = service1.Register("JaneSmith", "john123."); var result3 = service1.Register("JaneSmithX", "john123.X", customProperties); service1.SaveToJson(filePath); var fileContents = File.ReadAllText(filePath); var service2 = IdentityServiceFactory.CreateFromJson(filePath); var result4 = service2.Authenticate("jsmiTh", "jane123."); var result5 = service2.Authenticate("janESmith", "john123."); var result6 = service2.Authenticate("janeSmithX", "john123.X"); // Assert Assert.IsFalse(result1.IsSuccessful); Assert.IsTrue(result2.IsSuccessful); Assert.IsTrue(result3.IsSuccessful); Assert.IsTrue(result4.IsSuccessful); Assert.IsTrue(result5.IsSuccessful); Assert.AreEqual("JaneSmith", result5.OriginalUserName); Assert.IsFalse(result5.Properties.Any()); Assert.IsTrue(result6.IsSuccessful); Assert.AreEqual("JaneSmithX", result6.OriginalUserName); Assert.AreEqual(2, result6.Properties.Count); Assert.AreEqual(customProperties["Prop1"], result6.Properties["Prop1"]); Assert.AreEqual(customProperties["Prop2"], result6.Properties["Prop2"]); try { var fileJson = JToken.Parse(fileContents); AssertCamelCaseJson(fileJson); } catch (JsonException ex) { Assert.Fail($"Invalid JSON format: {ex.Message}"); } Assert.ThrowsException <ArgumentException>(() => service1.SaveToJson(filePath)); // Cleanup in case of success File.Delete(filePath); }
public GetTicketsForUserTests() { _context = DBContextFactory.Create(); _identityServiceFactory = new IdentityServiceFactory(); }
public CreateTicketTests() { _context = DBContextFactory.Create(); _userServiceFactory = new IdentityServiceFactory(); }
public AddMessageTests() { _context = DBContextFactory.Create(); _userServiceFactory = new IdentityServiceFactory(); }