예제 #1
0
        public void Recover_DoesNotSendRecoveryInformation()
        {
            AccountRecoveryView account = ObjectFactory.CreateAccountRecoveryView();

            account.Email = "*****@*****.**";

            service.Recover(account);

            mailClient.DidNotReceive().Send(Arg.Any <String>(), Arg.Any <String>(), Arg.Any <String>());
        }
예제 #2
0
        public void SetUp()
        {
            validator = Substitute.For <IAccountValidator>();
            service   = Substitute.For <IAccountService>();

            accountRecovery = ObjectFactory.CreateAccountRecoveryView();
            accountReset    = ObjectFactory.CreateAccountResetView();
            accountLogin    = ObjectFactory.CreateAccountLoginView();
            account         = new AccountView();

            controller = Substitute.ForPartsOf <AuthController>(validator, service);
            controller.ControllerContext = new ControllerContext();
        }
예제 #3
0
        public void SetUp()
        {
            validator = Substitute.For <IAccountValidator>();
            service   = Substitute.For <IAccountService>();

            accountRecovery = ObjectFactory.CreateAccountRecoveryView();
            accountReset    = ObjectFactory.CreateAccountResetView();
            accountLogin    = ObjectFactory.CreateAccountLoginView();
            account         = new AccountView();

            controller     = Substitute.ForPartsOf <AuthController>(service, validator);
            controller.Url = new UrlHelper(new HttpMock().HttpContext.Request.RequestContext);
            controller.ControllerContext = new ControllerContext();
        }
        public AuthControllerTests()
        {
            mail       = Substitute.For <IMailClient>();
            service    = Substitute.For <IAccountService>();
            validator  = Substitute.For <IAccountValidator>();
            controller = Substitute.ForPartsOf <AuthController>(validator, service, mail);
            controller.ControllerContext.HttpContext = Substitute.For <HttpContext>();
            controller.TempData = Substitute.For <ITempDataDictionary>();
            controller.ControllerContext.RouteData = new RouteData();
            controller.Url = Substitute.For <IUrlHelper>();

            accountRecovery = ObjectFactory.CreateAccountRecoveryView();
            accountReset    = ObjectFactory.CreateAccountResetView();
            accountLogin    = ObjectFactory.CreateAccountLoginView();
        }
예제 #5
0
        public AuthControllerTests()
        {
            mailClient = Substitute.For <IMailClient>();
            service    = Substitute.For <IAccountService>();
            validator  = Substitute.For <IAccountValidator>();
            controller = Substitute.ForPartsOf <AuthController>(validator, service, mailClient);
            HttpContextBase context = HttpContextFactory.CreateHttpContextBase();

            controller.Url = new UrlHelper(context.Request.RequestContext);
            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = context;

            accountRecovery = ObjectFactory.CreateAccountRecoveryView();
            accountReset    = ObjectFactory.CreateAccountResetView();
            accountLogin    = ObjectFactory.CreateAccountLoginView();
        }
예제 #6
0
        public void Recover_SendsRecoveryInformation()
        {
            HttpRequest         request          = HttpContext.Current.Request;
            String              scheme           = HttpContext.Current.Request.Url.Scheme;
            Account             recoveredAccount = context.Set <Account>().Single();
            UrlHelper           urlHelper        = new UrlHelper(request.RequestContext);
            AccountRecoveryView account          = ObjectFactory.CreateAccountRecoveryView();

            service.Recover(account);

            String expectedEmail        = account.Email;
            String expectedEmailSubject = Messages.RecoveryEmailSubject;
            String recoveryUrl          = urlHelper.Action("Reset", "Auth", new { token = recoveredAccount.RecoveryToken }, scheme);
            String expectedEmailBody    = String.Format(Messages.RecoveryEmailBody, recoveryUrl);

            mailClient.Received().Send(expectedEmail, expectedEmailSubject, expectedEmailBody);
        }
예제 #7
0
        public void Recover_UpdatesAccountRecoveryInformation()
        {
            AccountRecoveryView account  = ObjectFactory.CreateAccountRecoveryView();
            Account             expected = context.Set <Account>().AsNoTracking().Single();
            String oldToken = expected.RecoveryToken;

            account.Email = account.Email.ToLower();

            service.Recover(account);

            Account actual = context.Set <Account>().Single();

            expected.RecoveryTokenExpirationDate = actual.RecoveryTokenExpirationDate;
            expected.RecoveryToken = actual.RecoveryToken;

            Assert.AreEqual(actual.RecoveryTokenExpirationDate.Value.Ticks, DateTime.Now.AddMinutes(30).Ticks, 10000000);
            Assert.AreNotEqual(oldToken, actual.RecoveryToken);
            TestHelper.PropertyWiseEqual(expected, actual);
            Assert.IsNotNull(actual.RecoveryToken);
        }
예제 #8
0
 public void CanRecover_ValidAccount()
 {
     Assert.True(validator.CanRecover(ObjectFactory.CreateAccountRecoveryView()));
     Assert.Empty(validator.ModelState);
     Assert.Empty(validator.Alerts);
 }
예제 #9
0
        public void CanRecover_InvalidState_ReturnsFalse()
        {
            validator.ModelState.AddModelError("Test", "Test");

            Assert.False(validator.CanRecover(ObjectFactory.CreateAccountRecoveryView()));
        }
예제 #10
0
 public void CanRecover_ValidAccount()
 {
     Assert.True(validator.CanRecover(ObjectFactory.CreateAccountRecoveryView()));
 }
예제 #11
0
        public void CanRecover_CanNotRecoverAccountWithInvalidModelState()
        {
            validator.ModelState.AddModelError("Test", "Test");

            Assert.IsFalse(validator.CanRecover(ObjectFactory.CreateAccountRecoveryView()));
        }