Example #1
0
        public async Task Login_User_ShouldReturnToken()
        {
            // Arrange
            var expectedUsers = new UserModel[] { new UserModel {
                                                      Username = "******", Password = "******"
                                                  } };
            var mock = expectedUsers.AsQueryable().BuildMock();
            Mock <IRepository <UserModel> > userRepo = new Mock <IRepository <UserModel> >();

            userRepo.Setup(repo => repo.FindAll()).Returns(mock.Object);
            userRepo.Setup(repo => repo.Find(It.IsAny <Expression <Func <UserModel, bool> > >()))
            .Returns(mock.Object);
            Mock <IOptions <JwtOptions> > config = new Mock <IOptions <JwtOptions> >();

            config.Setup(x => x.Value).Returns(new JwtOptions {
                Key    = "testKey12312_woeifo23423",
                Issuer = "http://localhost:5000"
            });

            var handler = new LoginCommandHandler(config.Object, userRepo.Object);

            // Act
            await handler.Handle(new LoginCommand {
                Username = "******",
                Password = "******"
            }, It.IsAny <CancellationToken>());

            // Assert
            userRepo.Verify(x => x.Find(It.IsAny <Expression <Func <UserModel, bool> > >()), Times.Once);
        }
Example #2
0
        public async Task Handle_ValidCommand_ShouldLoginSuccessfully(LoginOutput loginOutput)
        {
            // Arrange
            _mapperMock.Setup(m => m.Map <LoginOutput>(It.IsAny <User>())).Returns(loginOutput); // AutoMapper setup

            _appsettingMock.SetReturnsDefault(new AppSettings
            {
                Issuer = "key1",
                Secret = "kesdfaaaaaasffffffffy1"
            });

            var sut = new LoginCommandHandler(_context, _mapperMock.Object, _appsettingMock.Object); // creating system under test

            var temUser = _fixture.Create <User>();

            temUser.PasswordHash = "3pRTT3NlZJrki0wrSlmOjA==";

            // Act
            await ContextOperation.CreateEntity(_context, temUser);

            var password = SecurityHelper.Decrypt(temUser.PasswordHash);

            var output = await sut.Handle(new LoginCommand { Email = temUser.Email, Password = password }, CancellationToken.None);

            // Assert
            Assert.True(!string.IsNullOrEmpty(output.Token));
        }
Example #3
0
        public async Task SuccessfulLogin()
        {
            // Arrange
            _command.Email    = "*****@*****.**";
            _command.Password = "******";

            var fakeStaff = Mock.Of <Staff>();

            fakeStaff.Id   = 123;
            fakeStaff.Name = "FakeName";
            fakeStaff.Role = Role.LIBRARYASSISTANT;

            _staffRepo.Setup(x => x.GetByEmail(It.IsAny <string>())).Returns(fakeStaff);
            _passwordHelper.Setup(x => x.ValidatePassword(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .Returns(true);

            _signInManager.Setup(x => x.SignInAsync(It.IsAny <ClaimsPrincipal>(), It.IsAny <bool>())).Returns(Task.FromResult(0));

            var cacheEntry = Mock.Of <ICacheEntry>();

            _memoryCache
            .Setup(m => m.CreateEntry(It.IsAny <object>()))
            .Returns(cacheEntry);

            var sut = new LoginCommandHandler(_signInManager.Object, _passwordHelper.Object, _memoryCache.Object, _staffRepo.Object);

            // Act
            var result = await sut.Handle(_command, default);

            // Assert
            Assert.True(result);
        }
Example #4
0
        public async Task Login_User_ShouldReturnBadRequestException(string exceptionMessage)
        {
            // Arrange
            var expectedUsers = new UserModel[] { new UserModel {
                                                      Username = "******", Password = "******"
                                                  } };
            var mock = expectedUsers.AsQueryable().BuildMock();
            Mock <IRepository <UserModel> > userRepo = new Mock <IRepository <UserModel> >();

            userRepo.Setup(repo => repo.FindAll()).Returns(mock.Object);
            userRepo.Setup(repo => repo.Find(It.IsAny <Expression <Func <UserModel, bool> > >()))
            .Returns(new UserModel[] { }.AsQueryable().BuildMock().Object);
            Mock <IOptions <JwtOptions> > config = new Mock <IOptions <JwtOptions> >();

            config.Setup(x => x.Value).Returns(new JwtOptions {
                Key    = "testKey12312_woeifo23423",
                Issuer = "http://localhost:5000"
            });

            var handler = new LoginCommandHandler(config.Object, userRepo.Object);

            // Act
            var ex = await Assert.ThrowsAsync <BadRequestException>(() => handler.Handle(new LoginCommand {
                Username = "******",
                Password = "******"
            }, It.IsAny <CancellationToken>()));

            // Assert
            ex.Message.Should().Be(string.Format(exceptionMessage, "testUsername"));
        }
Example #5
0
        // Command Handling
        #region Command Handling
        public CommandStatus Handle(LoginCommand command)
        {
            ICollectionRead <Usuario> cmdData    = new UsuarioData();
            LoginCommandHandler       cmdHandler = new LoginCommandHandler(cmdData);

            return(cmdHandler.Handle(command));
        }
 public LoginCommandHandlerTests()
 {
     _refreshTokenRepositoryMock = new Mock <IRefreshTokenRepository>();
     _userRepositoryMock         = new Mock <IUserRepository>();
     _encryptorMock      = new Mock <IEncryptor>();
     _emailValidatorMock = new Mock <IEmailValidator>();
     _tokenServiceMock   = new Mock <ITokenService>();
     _handler            = new LoginCommandHandler(_userRepositoryMock.Object, _encryptorMock.Object, _emailValidatorMock.Object, _tokenServiceMock.Object, _refreshTokenRepositoryMock.Object);
 }
        public LoginCommandHandlerTests()
        {
            _securityUserManager = new Mock <ISecurityUserManager>(MockBehavior.Strict);
            _jwtFactory          = new Mock <IJwtFactory>(MockBehavior.Strict);
            _userRepo            = new Mock <IUserRepository>(MockBehavior.Strict);

            _sut = new LoginCommandHandler(_securityUserManager.Object, _jwtFactory.Object, _userRepo.Object);

            _outputPort = new Mock <IOutputPort <LoginCommandResponse> >(MockBehavior.Strict);
        }
Example #8
0
        public async Task RejectsOnNOnExistingEmail()
        {
            _command.Email    = "*****@*****.**";
            _command.Password = "******";

            var sut = new LoginCommandHandler(_signInManager.Object, _passwordHelper.Object, _memoryCache.Object, _staffRepo.Object);

            var result = await sut.Handle(_command, default);

            Assert.False(result);
        }
        public async Task LoginCommandHandler_ShouldReturn_LoginCommandResult()
        {
            // var mockIHttpClientFactory = Substitute.For<IHttpClientFactory>();
            var messageHandler = new MockHttpMessageHandler("As per our requirement we mock string!", HttpStatusCode.OK);
            var httpClient     = new HttpClient(messageHandler);

            httpClient.BaseAddress = new Uri("https://www.google.com");
            var handler = new LoginCommandHandler(httpClient);
            var result  = await handler.Handle(new LoginCommand(), new CancellationToken());

            Assert.NotNull(result);
        }
        public IServiceProvider Initialize()
        {
            var loginCommandhandler          = new LoginCommandHandler();
            var positionsReader              = new PositionsReader();
            IServiceProvider serviceProvider = new ServiceCollection()
                                               .AddSingleton <IValidator <LoginCommand> >(loginCommandhandler)
                                               .AddSingleton <ICommandHandler <LoginCommand> >(loginCommandhandler)
                                               .AddSingleton <IValidator <PositionsQuery> >(positionsReader)
                                               .AddSingleton <IQueryHandler <PositionsQuery, PositionsList> >(positionsReader)
                                               .BuildServiceProvider();

            return(serviceProvider);
        }
Example #11
0
        // Command Handling
        public void In_LoginCommand(LoginCommand command)
        {
            try
            {
                ICollectionRead <Usuario> cmdData    = new UsuarioData();
                LoginCommandHandler       cmdHandler = new LoginCommandHandler(cmdData);

                Out_LoginCommandResult(cmdHandler.Handle(command));
            }
            catch (Exception)
            {
                throw;
            }
        }
Example #12
0
        public async Task RejectsOnWrongPassword()
        {
            _command.Email    = "*****@*****.**";
            _command.Password = "******";

            _staffRepo.Setup(x => x.GetByEmail(It.IsAny <string>())).Returns(new Staff());
            _passwordHelper.Setup(x => x.ValidatePassword(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .Returns(false);

            var sut = new LoginCommandHandler(_signInManager.Object, _passwordHelper.Object, _memoryCache.Object, _staffRepo.Object);

            var result = await sut.Handle(_command, default);

            Assert.False(result);
        }
Example #13
0
        public UserTest_Creation()
        {
            var cnnString = "mongodb://192.168.99.100:27017/TestDb";

            _userRepository = new UserRepository(new AppSettings {
                MongoDbCnnString = cnnString
            });
            _createUserCommand   = new CreateUserCommandHandler(_userRepository);
            _loginCommandHandler = new LoginCommandHandler(_userRepository, new LoginService(new JwtTokenGeneratorStrategy(new AppSettings {
                JwtSecret = _jwtSecret
            })));

            var mongoUrl = new MongoUrl(cnnString);

            _database = new MongoClient(mongoUrl).GetDatabase(mongoUrl.DatabaseName);
        }
        public override IController CreateController(RequestContext requestContext, string controllerName)
        {
            Type controllerType = GetControllerType(requestContext, controllerName);
            var perRequestStore = PerRequestStore.Current;

            if (controllerType == typeof(HomeController))
            {
                var movieRepository = new EfMovieViewRepository(perRequestStore.Context.Value);
                return new HomeController(movieRepository);
            }

            if (controllerType == typeof(ReservationController))
            {
                var handler = new ReserveSeatCommandHandler(
                    perRequestStore.UserRepository.Value,
                    perRequestStore.RoomRepository.Value,
                    new PureWinChanceCalculatorFactory(perRequestStore.UserRepository.Value));
                var auditingHandler = new AuditingCommandHandler<ReserveSeatCommand>(
                    handler,
                    perRequestStore.AuditLogger.Value);
                var transactionalHandler = new TransactionalCommandHandler<ReserveSeatCommand>(
                    auditingHandler,
                    perRequestStore.Context.Value);
                return new ReservationController(transactionalHandler);
            }

            if (controllerType == typeof(LoginController))
            {
                var handler = new LoginCommandHandler(new EfAuthenticationRepository(perRequestStore.Context.Value), perRequestStore.CurrentUserProvider.Value, new StringHasher());
                var auditingHandler = new AuditingLoginCommandHandler(handler, perRequestStore.AuditLogger.Value);
                var transactionalHandler = new TransactionalCommandHandler<LoginCommand>(auditingHandler, perRequestStore.Context.Value);
                return new LoginController(new EfLoginRepository(perRequestStore.Context.Value), transactionalHandler);
            }

            if (controllerType == typeof(AuditController))
            {
                return new AuditController(new EfAuditViewRepository(perRequestStore.Context.Value));
            }

            if (controllerType == typeof(NotificationController))
            {
                return new NotificationController(new EfNotificationViewRepository(perRequestStore.Context.Value));
            }

            return base.CreateController(requestContext, controllerName);
        }
Example #15
0
        public async Task Should_ThrowException_When_InputIsNull()
        {
            // Arrange
            var userStore = new Mock <IUserStore <User> >();

            userStore.Setup(x => x.FindByIdAsync("123", CancellationToken.None))
            .ReturnsAsync(new User()
            {
                UserName = "******",
                Id       = 123
            });

            var userManager = new UserManager <User>(userStore.Object, null, null, null, null, null, null, null, null);
            var jwtService  = new Mock <IJwtService>();

            // Act
            var commandHandler = new LoginCommandHandler(userManager, jwtService.Object);

            // Assert
            await Assert.ThrowsAsync <InvalidNullInputException>(() => commandHandler.Handle(null, CancellationToken.None));
        }
Example #16
0
        public void ExecuteCommand(ICommand command)
        {
            //var commandName = command.GetType().Name;
            //var handler = GetType().Assembly.GetTypes().FirstOrDefault(f => f.Name == $"{commandName}Handler");
            //if (handler != null)
            //{
            //    var handlerInstace = Activator.CreateInstance(handler, command, null);
            //    var handlerMethod = handler.GetMethods().FirstOrDefault(f => f.Name == "Execute");
            //    if (handlerMethod != null)
            //        handlerMethod.Invoke(handlerInstace, new object[] { });
            //}

            if (command.GetType() == typeof(LoginCommand))
            {
                var authCommand = (LoginCommand)command;
                var handler     = new LoginCommandHandler(authCommand, UserRepository);
                handler.Execute();
            }

            if (command.GetType() == typeof(CreateMovieCommand))
            {
                var createMovieCommand = (CreateMovieCommand)command;
                var handler            = new CreateMovieCommandHandler(createMovieCommand, MovieRepository);
                handler.Execute();
            }

            if (command.GetType() == typeof(EditMovieCommand))
            {
                var editCommand = (EditMovieCommand)command;
                var handler     = new EditMovieCommandHandler(editCommand, Context, MovieRepository);
                handler.Execute();
            }

            if (command.GetType() == typeof(DeleteMovieCommand))
            {
                var deleteCommand = (DeleteMovieCommand)command;
                var handler       = new DeleteMovieCommandHandler(deleteCommand, MovieRepository);
                handler.Execute();
            }
        }
Example #17
0
        public async Task Handle_InValidCommand_ShouldLoginWithError(LoginOutput loginOutput)
        {
            // Arrange
            _mapperMock.Setup(m => m.Map <LoginOutput>(It.IsAny <User>())).Returns(loginOutput); // AutoMapper setup

            _appsettingMock.SetReturnsDefault(new AppSettings
            {
                Issuer = "key1",
                Secret = "kesdfaaaaaasffffffffy1"
            });

            var sut = new LoginCommandHandler(_context, _mapperMock.Object, _appsettingMock.Object); // creating system under test

            var temUser = _fixture.Create <User>();

            // Act

            // Assert
            await Assert.ThrowsAsync <NotFoundException>(() => sut.Handle(new LoginCommand {
                Email = _fixture.Create <string>(), Password = _fixture.Create <string>()
            }, CancellationToken.None));
        }
Example #18
0
 public LoginCommandHandlerTest()
 {
     _handler = new LoginCommandHandler(_accountRepositoryMock.Object, _tokenCreatorMock.Object, _userStatusVerificationMock.Object);
 }
Example #19
0
 void GivenSystemUnderTest()
 {
     _sut = new LoginCommandHandler(_userAccountDataRepository, _jwtSettings);
 }
Example #20
0
 public LoginCommandTests()
 {
     _handler = new LoginCommandHandler(Context, HasherServiceMock);
 }