public void ResetPasswordSuccessfultest_TestsIfPasswordIsResetProperly_VerifiesThroughReturnValues()
        {
            IUserApplicationService         userApplicationService         = (IUserApplicationService)_applicationContext["UserApplicationService"];
            IRegistrationApplicationService registrationApplicationService =
                (IRegistrationApplicationService)_applicationContext["RegistrationApplicationService"];
            IUserRepository            userRepository     = (IUserRepository)_applicationContext["UserRepository"];
            IPasswordEncryptionService passwordEncryption =
                (IPasswordEncryptionService)_applicationContext["PasswordEncryptionService"];

            string username         = "******";
            string email            = "*****@*****.**";
            string activationKey    = registrationApplicationService.CreateAccount(new SignupUserCommand(email, username, "burnitdown", "USA", TimeZone.CurrentTimeZone, ""));
            bool   accountActivated = userApplicationService.ActivateAccount(new ActivationCommand(activationKey, username, "burnitdown"));

            Assert.IsTrue(accountActivated);
            ManualResetEvent manualResetEvent = new ManualResetEvent(false);

            manualResetEvent.WaitOne(6000);
            string returnedPasswordCode = userApplicationService.ForgotPassword(new ForgotPasswordCommand(email, username));

            Assert.IsNotNull(returnedPasswordCode);
            string newPassword = "******";

            bool resetPasswordReponse = userApplicationService.ResetPasswordByEmailLink(new ResetPasswordCommand(username, newPassword, returnedPasswordCode));

            Assert.IsTrue(resetPasswordReponse);

            User userByUserName = userRepository.GetUserByUserName(username);

            Assert.IsNotNull(userByUserName);
            Assert.IsTrue(passwordEncryption.VerifyPassword(newPassword, userByUserName.Password));
        }
        public void CreateNewAccountTest_ChecksWhetherTheUserIsCreatedAndSavedToPersistence_VerifiesThroughUsingDatabaseresult()
        {
            IRegistrationApplicationService registrationService =
                (IRegistrationApplicationService)_applicationContext["RegistrationApplicationService"];
            IUserRepository userRepository =
                (IUserRepository)_applicationContext["UserRepository"];
            IPasswordEncryptionService passwordEncryption =
                (IPasswordEncryptionService)_applicationContext["PasswordEncryptionService"];
            ManualResetEvent manualResetEvent = new ManualResetEvent(false);

            string activationKey = registrationService.CreateAccount(new SignupUserCommand(
                                                                         "*****@*****.**", "Bob", "iamnotalice", "Wonderland", TimeZone.CurrentTimeZone, ""));

            // Wait for the email to be sent
            manualResetEvent.WaitOne(5000);
            User receivedUser = userRepository.GetUserByUserName("Bob");

            Assert.NotNull(receivedUser);
            Assert.AreEqual("*****@*****.**", receivedUser.Email);
            Assert.AreEqual("Bob", receivedUser.Username);
            Assert.IsTrue(passwordEncryption.VerifyPassword("iamnotalice", receivedUser.Password));
            Assert.AreEqual("", receivedUser.PublicKey);
            Assert.AreEqual(TimeZone.CurrentTimeZone.StandardName, receivedUser.TimeZone.StandardName);
            Assert.AreEqual(activationKey, receivedUser.ActivationKey);
            Assert.IsFalse(receivedUser.IsActivationKeyUsed.Value);
            Assert.IsFalse(receivedUser.IsUserBlocked.Value);
        }
Beispiel #3
0
 public EncryptPasswordCommand(IBot bot, IAccountService accountService,
                               IUserService userService, IPasswordEncryptionService passwordEncryptionService) : base(bot)
 {
     this.accountService            = accountService;
     this.userService               = userService;
     this.passwordEncryptionService = passwordEncryptionService;
 }
        public void RegistrationTwiceFailTest_ChecksThatAccountWithSameUsernameIsNotSavedAgain_VerifiesExpectingException()
        {
            IRegistrationApplicationService registrationService =
                (IRegistrationApplicationService)_applicationContext["RegistrationApplicationService"];
            IUserRepository userRepository =
                (IUserRepository)_applicationContext["UserRepository"];
            IPasswordEncryptionService passwordEncryption =
                (IPasswordEncryptionService)_applicationContext["PasswordEncryptionService"];
            ManualResetEvent manualResetEvent = new ManualResetEvent(false);
            string           activationKey    = registrationService.CreateAccount(new SignupUserCommand(
                                                                                      "*****@*****.**", "Bob", "iamnotalice", "Wonderland", TimeZone.CurrentTimeZone, ""));

            // Wait for the email to be sent
            manualResetEvent.WaitOne(5000);
            User receivedUser = userRepository.GetUserByUserName("Bob");

            Assert.NotNull(receivedUser);
            Assert.AreEqual("*****@*****.**", receivedUser.Email);
            Assert.AreEqual("Bob", receivedUser.Username);
            Assert.IsTrue(passwordEncryption.VerifyPassword("iamnotalice", receivedUser.Password));
            Assert.AreEqual("", receivedUser.PublicKey);
            Assert.AreEqual(TimeZone.CurrentTimeZone.StandardName, receivedUser.TimeZone.StandardName);
            Assert.AreEqual(activationKey, receivedUser.ActivationKey);

            registrationService.CreateAccount(new SignupUserCommand(
                                                  "*****@*****.**", "Bob", "iamnotalice", "Wonderland", TimeZone.CurrentTimeZone, ""));

            User userByEmail = userRepository.GetUserByEmail("*****@*****.**");

            Assert.IsNull(userByEmail);
        }
Beispiel #5
0
        protected override void Initialize(HttpControllerContext controllerContext)
        {
            base.Initialize(controllerContext);

            _repository        = ServiceLocator.Current.GetInstance <IUserRepository>();
            _encryptionService = ServiceLocator.Current.GetInstance <IPasswordEncryptionService>();
        }
        public void ChangeSettingsSuccessfultTest_ChecksIfTheSettingsForUserChangeSuccessfulyAndValuesInDatabaseChange_VerifiesByReturnedValueAndDatabaseQuerying()
        {
            IUserApplicationService         userApplicationService         = (IUserApplicationService)_applicationContext["UserApplicationService"];
            IRegistrationApplicationService registrationApplicationService =
                (IRegistrationApplicationService)_applicationContext["RegistrationApplicationService"];
            IUserRepository            userRepository     = (IUserRepository)_applicationContext["UserRepository"];
            IPasswordEncryptionService passwordEncryption =
                (IPasswordEncryptionService)_applicationContext["PasswordEncryptionService"];

            string username      = "******";
            string email         = "*****@*****.**";
            string password      = "******";
            string activationKey = registrationApplicationService.CreateAccount(new SignupUserCommand(email, username, password, "USA", TimeZone.CurrentTimeZone, ""));

            User userByUserName = userRepository.GetUserByUserName(username);

            Assert.IsNotNull(userByUserName);
            Assert.AreEqual(email, userByUserName.Email);
            Assert.IsTrue(passwordEncryption.VerifyPassword(password, userByUserName.Password));
            Assert.AreEqual(Language.English, userByUserName.Language);
            Assert.AreEqual(TimeZone.CurrentTimeZone.StandardName, userByUserName.TimeZone.StandardName);
            Assert.AreEqual(new TimeSpan(0, 0, 10, 0), userByUserName.AutoLogout);
            Assert.IsNull(userByUserName.ForgotPasswordCode);
            Assert.IsNull(userByUserName.ForgotPasswordCodeExpiration);
            Assert.AreEqual(0, userByUserName.ForgottenPasswordCodes.Length);

            bool accountActivated = userApplicationService.ActivateAccount(new ActivationCommand(activationKey, username, password));

            Assert.IsTrue(accountActivated);
            ManualResetEvent manualResetEvent = new ManualResetEvent(false);

            manualResetEvent.WaitOne(6000);

            ILoginApplicationService loginApplicationService  = (ILoginApplicationService)_applicationContext["LoginApplicationService"];
            UserValidationEssentials userValidationEssentials = loginApplicationService.Login(new LoginCommand(username, password));

            Assert.IsNotNull(userValidationEssentials);
            Assert.IsNotNull(userValidationEssentials.ApiKey);
            Assert.IsNotNull(userValidationEssentials.SecretKey);
            Assert.IsNotNull(userValidationEssentials.SessionLogoutTime);

            string newEmail             = "*****@*****.**";
            var    resetPasswordReponse = userApplicationService.ChangeSettings(new ChangeSettingsCommand(
                                                                                    userValidationEssentials.ApiKey, newEmail, "", Language.Arabic, TimeZone.CurrentTimeZone, false, 67));

            Assert.IsTrue(resetPasswordReponse.ChangeSuccessful);

            userByUserName = userRepository.GetUserByUserName(username);
            Assert.IsNotNull(userByUserName);
            Assert.AreEqual(newEmail, userByUserName.Email);
            Assert.IsTrue(passwordEncryption.VerifyPassword(password, userByUserName.Password));
            Assert.AreEqual(Language.Arabic, userByUserName.Language);
            Assert.AreEqual(TimeZone.CurrentTimeZone.StandardName, userByUserName.TimeZone.StandardName);
            Assert.AreEqual(new TimeSpan(0, 0, 67, 0), userByUserName.AutoLogout);
            Assert.IsNull(userByUserName.ForgotPasswordCode);
            Assert.IsNull(userByUserName.ForgotPasswordCodeExpiration);
            Assert.AreEqual(0, userByUserName.ForgottenPasswordCodes.Length);
        }
 /// <summary>
 /// Initializes with the UserRepository and PasswordEncryption service
 /// </summary>
 public LoginApplicationService(IUserRepository userRepository, IPasswordEncryptionService passwordEncryptionService,
                                ISecurityKeysApplicationService securityKeysApplicationService, IIdentityAccessPersistenceRepository persistenceRepository,
                                IMfaAuthorizationService mfaAuthorizationService)
 {
     _userRepository                 = userRepository;
     _passwordEncryptionService      = passwordEncryptionService;
     _securityKeysApplicationService = securityKeysApplicationService;
     _persistenceRepository          = persistenceRepository;
     _mfaAuthorizationService        = mfaAuthorizationService;
 }
 /// <summary>
 /// Initializes with the User Repository
 /// </summary>
 public UserApplicationService(IUserRepository userRepository, ISecurityKeysRepository securityKeysRepository,
                               IPasswordEncryptionService passwordEncryptionService, IIdentityAccessPersistenceRepository persistenceRepository,
                               IEmailService emailService, IPasswordCodeGenerationService passwordCodeGenerationService)
 {
     _userRepository            = userRepository;
     _securityKeysRepository    = securityKeysRepository;
     _passwordEncryptionService = passwordEncryptionService;
     _persistenceRepository     = persistenceRepository;
     _emailService = emailService;
     _passwordCodeGenerationService = passwordCodeGenerationService;
 }
 /// <summary>
 /// Parameterized Constructor
 /// </summary>
 public RegistrationApplicationService(IIdentityAccessPersistenceRepository persistenceRepository,
                                       IPasswordEncryptionService passwordEncryptionService, IActivationKeyGenerationService activationKeyGenerationService
                                       , IEmailService emailService, ITierRepository tierRepository, IUserRepository userRepository)
 {
     _persistenceRepository          = persistenceRepository;
     _passwordEncryptionService      = passwordEncryptionService;
     _activationKeyGenerationService = activationKeyGenerationService;
     _emailService   = emailService;
     _tierRepository = tierRepository;
     _userRepository = userRepository;
 }
 public CancelCommand(IBot bot,
                      IUserService userService,
                      IAccountAssemblingService accountAssemblingService,
                      IAccountUpdatingService accountUpdatingService,
                      IPasswordDecryptionService passwordDecryptionService,
                      IPasswordEncryptionService passwordEncryptionService)
     : base(bot)
 {
     this.userService = userService;
     this.accountAssemblingService  = accountAssemblingService;
     this.accountUpdatingService    = accountUpdatingService;
     this.passwordDecryptionService = passwordDecryptionService;
     this.passwordEncryptionService = passwordEncryptionService;
 }
        public void ApplyForTier1()
        {
            IUserApplicationService         userApplicationService         = (IUserApplicationService)_applicationContext["UserApplicationService"];
            IRegistrationApplicationService registrationApplicationService =
                (IRegistrationApplicationService)_applicationContext["RegistrationApplicationService"];
            IUserRepository            userRepository     = (IUserRepository)_applicationContext["UserRepository"];
            IPasswordEncryptionService passwordEncryption =
                (IPasswordEncryptionService)_applicationContext["PasswordEncryptionService"];

            string username = "******";
            string email    = "*****@*****.**";

            registrationApplicationService.CreateAccount(new SignupUserCommand(email, username, "burnitdown", "USA", TimeZone.CurrentTimeZone, ""));
            IUserTierLevelApplicationService tierLevelApplicationService =
                _applicationContext["UserTierLevelApplicationService"] as IUserTierLevelApplicationService;

            tierLevelApplicationService.ApplyForTier1Verification(new VerifyTier1Command("1234", "123", "123", DateTime.Today));
            //TODO: have to modify the test and test case name.
        }
        public void RegisterAccountFailTest_ChecksIfTheUserCannotCreateAccountAgainWIthSameEmail_VerifiesReturnedValueAndQueriesDatabase()
        {
            RegistrationController registrationController = (RegistrationController)_applicationContext["RegistrationController"];
            string            username         = "******";
            string            email            = "*****@*****.**";
            string            password         = "******";
            IHttpActionResult httpActionResult = registrationController.Register(new SignUpParam(email, username, password, "Pakistan", TimeZone.CurrentTimeZone, ""));
            OkNegotiatedContentResult <string> okResponseMessage = (OkNegotiatedContentResult <string>)httpActionResult;
            string activationKey = okResponseMessage.Content;

            Assert.IsNotNullOrEmpty(activationKey);

            IUserRepository            userRepository            = (IUserRepository)_applicationContext["UserRepository"];
            IPasswordEncryptionService passwordEncryptionService = (IPasswordEncryptionService)_applicationContext["PasswordEncryptionService"];

            User userByUserName = userRepository.GetUserByUserName(username);

            Assert.IsNotNull(userByUserName);
            Assert.IsFalse(userByUserName.IsActivationKeyUsed.Value);
            Assert.AreEqual(username, userByUserName.Username);
            Assert.AreEqual(email, userByUserName.Email);

            string username2 = "newUser";
            string password2 = "newPassword";

            httpActionResult = registrationController.Register(new SignUpParam(email, username2, password2, "Pakistan", TimeZone.CurrentTimeZone, ""));
            BadRequestErrorMessageResult badRequest = (BadRequestErrorMessageResult)httpActionResult;

            Assert.IsNotNull(badRequest);

            // Verify that the old credentials are still the same
            userByUserName = userRepository.GetUserByEmail(email);
            Assert.IsNotNull(userByUserName);
            Assert.IsFalse(userByUserName.IsActivationKeyUsed.Value);
            Assert.AreEqual(username, userByUserName.Username);
            Assert.AreEqual(email, userByUserName.Email);
            Assert.IsTrue(passwordEncryptionService.VerifyPassword(password, userByUserName.Password));

            Assert.AreNotEqual(username2, userByUserName.Username);
            Assert.IsFalse(passwordEncryptionService.VerifyPassword(password2, userByUserName.Password));
        }
        public void ResetPasswordFailTest_TestsIfPasswordIsNotChangedIfForgotPasswordReqeusthasNotBeenMade_VerifiesByReturnedValueAndDatabaseQuerying()
        {
            IUserApplicationService         userApplicationService         = (IUserApplicationService)_applicationContext["UserApplicationService"];
            IRegistrationApplicationService registrationApplicationService =
                (IRegistrationApplicationService)_applicationContext["RegistrationApplicationService"];
            IUserRepository            userRepository     = (IUserRepository)_applicationContext["UserRepository"];
            IPasswordEncryptionService passwordEncryption =
                (IPasswordEncryptionService)_applicationContext["PasswordEncryptionService"];

            string username         = "******";
            string email            = "*****@*****.**";
            string password         = "******";
            string activationKey    = registrationApplicationService.CreateAccount(new SignupUserCommand(email, username, password, "USA", TimeZone.CurrentTimeZone, ""));
            bool   accountActivated = userApplicationService.ActivateAccount(new ActivationCommand(activationKey, username, "burnitdown"));

            Assert.IsTrue(accountActivated);
            ManualResetEvent manualResetEvent = new ManualResetEvent(false);

            manualResetEvent.WaitOne(6000);

            User userByUserName = userRepository.GetUserByUserName(username);

            Assert.IsNotNull(userByUserName);
            Assert.IsTrue(passwordEncryption.VerifyPassword(password, userByUserName.Password));
            Assert.IsNull(userByUserName.ForgotPasswordCode);
            Assert.IsNull(userByUserName.ForgotPasswordCodeExpiration);
            Assert.AreEqual(0, userByUserName.ForgottenPasswordCodes.Length);

            string newPassword          = "******";
            bool   resetPasswordReponse = userApplicationService.ResetPasswordByEmailLink(new ResetPasswordCommand(username, newPassword, ""));

            Assert.IsTrue(resetPasswordReponse);

            userByUserName = userRepository.GetUserByUserName(username);
            Assert.IsNotNull(userByUserName);
            Assert.IsTrue(passwordEncryption.VerifyPassword(password, userByUserName.Password));
            Assert.IsNull(userByUserName.ForgotPasswordCode);
            Assert.IsNull(userByUserName.ForgotPasswordCodeExpiration);
            Assert.AreEqual(0, userByUserName.ForgottenPasswordCodes.Length);
        }
        public void LoginSuccessfulTest_TestsifTheLoginisSuccessfulAfterProvidingValidCredentials_VerifiesByGettingUserFromRepositoryAndCheckingCredentials()
        {
            ILoginApplicationService loginApplicationService = (ILoginApplicationService)_applicationContext["LoginApplicationService"];

            Assert.IsNotNull(loginApplicationService);
            IRegistrationApplicationService registrationService  = (IRegistrationApplicationService)_applicationContext["RegistrationApplicationService"];
            IUserRepository            userRepository            = (IUserRepository)_applicationContext["UserRepository"];
            IPasswordEncryptionService passwordEncryptionService = (IPasswordEncryptionService)_applicationContext["PasswordEncryptionService"];
            string username      = "******";
            string email         = "*****@*****.**";
            string password      = "******";
            string activationKey = registrationService.CreateAccount(new SignupUserCommand(
                                                                         email, username, password, "Wonderland", TimeZone.CurrentTimeZone, ""));

            Assert.IsNotNull(activationKey);

            IUserApplicationService userApplicationService = (IUserApplicationService)_applicationContext["UserApplicationService"];
            bool accountActivated = userApplicationService.ActivateAccount(new ActivationCommand(activationKey, "Bob", "alice"));

            Assert.IsTrue(accountActivated);

            UserValidationEssentials userValidationEssentials = loginApplicationService.Login(new LoginCommand("Bob", "alice"));

            Assert.IsNotNull(userValidationEssentials);
            Assert.IsNotNull(userValidationEssentials.ApiKey);
            Assert.IsNotNull(userValidationEssentials.SecretKey);
            Assert.IsNotNull(userValidationEssentials.SessionLogoutTime);

            User user = userRepository.GetUserByUserName(username);

            Assert.IsNotNull(user);
            Assert.AreEqual(user.Email, email);
            Assert.AreEqual(user.ActivationKey, activationKey);
            Assert.AreEqual(userValidationEssentials.SessionLogoutTime, user.AutoLogout);
            Assert.IsTrue(passwordEncryptionService.VerifyPassword(password, user.Password));
        }
Beispiel #15
0
 public AccountService(IUnitOfWork unitOfWork, IPasswordEncryptionService passwordEncryptionService, IMapper mapper)
 {
     this.unitOfWork = unitOfWork;
     this.passwordEncryptionService = passwordEncryptionService;
     this.mapper = mapper;
 }
        public UserAccountsManager(IDatabaseManager databaseManager)
        {
            _passwordEncryptor = new PasswordEncryptionService();

            _userAccountsContext = new UserAccountsContext(databaseManager);
        }
 public LoginRepository(IPasswordEncryptionService passwordEncryptionService)
 {
     _passwordEncryptionService = passwordEncryptionService;
 }