public async Task Can_Login_as_Customer() { // arrange var user = UserBuilder.Create() .WithRole(UserRole.Customer) .WithEmail(HealthyJuicesConstants.DEFAULT_USER_LOGIN) .Active() .WithPassword(HealthyJuicesConstants.DEFAULT_USER_PASSWORD) .Build(ArrangeRepositoryContext); var dto = new Login.Query(HealthyJuicesConstants.DEFAULT_USER_LOGIN, HealthyJuicesConstants.DEFAULT_USER_PASSWORD); var controller = new AuthorizationController(Mediator); // act var result = await controller.LoginAsync(dto); // assert result.AccessToken.Should().NotBeNullOrEmpty(); result.User.Should().NotBeNull(); result.User.Email.Should().Be(dto.Email); var subject = AssertRepositoryContext.Users.FirstOrDefault(); subject.Should().NotBeNull(); subject.Roles.Should().Be(UserRole.Customer); subject.Email.Should().Be(dto.Email); subject.Password.Text.Should().NotBeNullOrWhiteSpace(); subject.Password.Salt.Should().NotBeNullOrWhiteSpace(); subject.IsActive.Should().BeTrue(); subject.IsRemoved.Should().BeFalse(); }
public async Task ResetPassword_Should_change_password_and_reset_pemisiontoken() { // arrange var user = UserBuilder.Create() .WithEmail(HealthyJuicesConstants.DEFAULT_USER_LOGIN) .WithPassword(RandomString) .WithPermissionsToken(RandomString, DateTime.Today.AddDays(1)) .Active() .Build(ArrangeRepositoryContext); var controller = new AuthorizationController(Mediator); var newPass = "******"; var dto = new ResetPassword.Command(HealthyJuicesConstants.DEFAULT_USER_LOGIN, user.PermissionsToken.Token, newPass); // act await controller.ResetPasswordAsync(dto); // assert var subject = AssertRepositoryContext.Users.FirstOrDefault(); subject.Should().NotBeNull(); subject.Password.Salt.Should().NotBe(user.Password.Salt); subject.Password.Salt.Should().NotBe(user.Password.Text); subject.Password.CheckValidity(newPass).Should().BeTrue(); subject.IsActive.Should().BeTrue(); subject.PermissionsToken.Should().BeNull(); MailerMock.VerifyNoOtherCalls(); }
public void Create_when_SetPassword_has_not_been_called_throws_InvalidOperationException() { // arrange ICryptoService cryptoService = MockRepository.GenerateStub<ICryptoService>(); UserBuilder builder = new UserBuilder(cryptoService) .SetEmail("Email") .SetName("Name") .SetSurname("Surname"); // assert Assert.Throws<InvalidOperationException>(() => builder.Create()); }
public async Task Orders_can_be_created() { // arrange var user = UserBuilder.Create().WithRole(UserRole.Customer).WithEmail("*****@*****.**").WithRole(UserRole.Customer).Active().Build(ArrangeRepositoryContext); var company = CompanyBuilder.Create().WithName("test company").WithUsers(user).Build(ArrangeRepositoryContext); var product = ProductBuilder.Create().WithName("test Prod").Active().Build(ArrangeRepositoryContext); var amount = 2; var request = new CreateOrder.Command { DeliveryDate = DateTime.Now.AddDays(1), UserId = user.Id, OrderProducts = new List <OrderItemDto> { new OrderItemDto() { ProductId = product.Id, Amount = amount } } }; var controller = new OrdersController(Mediator); controller.SetUserId(user.Id); // act var result = await controller.CreateAsync(request); // assert result.Should().NotBeNullOrWhiteSpace(); var subject = AssertRepositoryContext.Orders .Include(x => x.OrderProducts) .ThenInclude(x => x.Product) .FirstOrDefault(); subject.Should().NotBeNull(); subject.DeliveryDate.Should().Be(request.DeliveryDate); subject.UserId.Should().Be(request.UserId); subject.DestinationCompanyId.Should().Be(company.Id); subject.OrderProducts.Count.Should().Be(1); subject.OrderProducts.First().ProductId.Should().Be(product.Id); subject.OrderProducts.First().Amount.Should().Be(amount); }
public async Task ConfirmEmailRegister_Should_activate_user_and_reset_pemisiontoken() { // arrange var user = UserBuilder.Create() .WithEmail(HealthyJuicesConstants.DEFAULT_USER_LOGIN) .WithPermissionsToken(RandomString, DateTime.Today.AddDays(1)) .Build(ArrangeRepositoryContext); var controller = new AuthorizationController(Mediator); // act await controller.ConfirmRegisterAsync(HealthyJuicesConstants.DEFAULT_USER_LOGIN, user.PermissionsToken.Token); // assert var subject = AssertRepositoryContext.Users.FirstOrDefault(); subject.Should().NotBeNull(); subject.IsActive.Should().BeTrue(); subject.PermissionsToken.Should().BeNull(); }
public async Task Can_not_create_order_in_unavailability_duration() { // arrange var user = UserBuilder.Create().WithRole(UserRole.Customer).WithEmail("*****@*****.**").WithRole(UserRole.Customer).Active().Build(ArrangeRepositoryContext); var company = CompanyBuilder.Create().WithName("test company").WithUsers(user).Removed().Build(ArrangeRepositoryContext); var product = ProductBuilder.Create().WithName("test Prod").Active().Build(ArrangeRepositoryContext); var unavailability = UnavailabilityBuilder.Create().From(DateTime.Now).To(DateTime.Now.AddDays(3)).WithReason(UnavailabilityReason.Sick).Build(ArrangeRepositoryContext); var request = new CreateOrder.Command { DeliveryDate = DateTime.Now.AddDays(1), UserId = user.Id, OrderProducts = new List <OrderItemDto> { new OrderItemDto() { ProductId = product.Id, Amount = 1 } } }; var controller = new OrdersController(Mediator); controller.SetUserId(user.Id); // act Func <Task> act = () => controller.CreateAsync(request); var exception = await Assert.ThrowsAsync <BadRequestException>(act); //assert exception.Message.Should().Be("Can not create order in unavailability duration"); // assert var subject = AssertRepositoryContext.Orders.ToList(); subject.Count.Should().Be(0); }
public async Task ForgotPassword_Should_save_new_token_and_send_email() { // arrange var user = UserBuilder.Create().WithRole(UserRole.Customer).WithEmail(HealthyJuicesConstants.DEFAULT_USER_LOGIN).WithPassword(HealthyJuicesConstants.DEFAULT_USER_PASSWORD).Build(ArrangeRepositoryContext); var controller = new AuthorizationController(Mediator); var dto = new ForgotPassword.Command(HealthyJuicesConstants.DEFAULT_USER_LOGIN); // act await controller.ForgotPasswordAsync(dto); // assert var subject = AssertRepositoryContext.Users.FirstOrDefault(); subject.Should().NotBeNull(); subject.PermissionsToken.Token.Should().NotBeNullOrEmpty(); subject.PermissionsToken.Expiration.Should().BeAfter(DateTime.Now); subject.PermissionsToken.Expiration.Should().BeBefore(DateTime.Now.AddDays(2)); MailerMock.Verify(mock => mock.SendAsync(It.Is <string>(x => x == HealthyJuicesConstants.DEFAULT_USER_LOGIN), It.IsAny <string>(), It.Is <string>(x => x.Contains(subject.PermissionsToken.Token)), false), Times.Once); MailerMock.VerifyNoOtherCalls(); }