public async Task Should_UseUserManager_ToResetPassword_UsingPasswordResetToken()
        {
            // Arrange
            var resetPasswordDto = new ResetPasswordDto
            {
                Email              = "*****@*****.**",
                Password           = "******",
                PasswordResetToken = "123xyz"
            };

            var userMock = new Mock <ApplicationUser>();

            userMock.Setup(m => m.Email).Returns(resetPasswordDto.Email);

            var store           = new Mock <IUserStore <ApplicationUser> >();
            var userManagerMock = new Mock <UserManager <ApplicationUser> >(store.Object, null, null, null, null, null, null, null, null);

            userManagerMock.Setup(m => m.FindByEmailAsync(resetPasswordDto.Email)).Returns(Task.FromResult(userMock.Object));
            userManagerMock.Setup(m =>
                                  m.ResetPasswordAsync(userMock.Object, resetPasswordDto.PasswordResetToken, resetPasswordDto.Password)).Returns(Task.FromResult(IdentityResult.Success));

            var sut = new ResetPasswordService(userManagerMock.Object);

            // Act
            await sut.ResetPassword(resetPasswordDto);

            // Assert
            userManagerMock.Verify(m => m.ResetPasswordAsync(userMock.Object, resetPasswordDto.PasswordResetToken, resetPasswordDto.Password), Times.Once);
        }
        public async Task Should_HaveErrors_When_UserNotFound()
        {
            // Arrange
            var resetPasswordDto = new ResetPasswordDto
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            var userMock = new Mock <ApplicationUser>();

            userMock.Setup(m => m.Email).Returns(resetPasswordDto.Email);

            var store           = new Mock <IUserStore <ApplicationUser> >();
            var userManagerMock = new Mock <UserManager <ApplicationUser> >(store.Object, null, null, null, null, null, null, null, null);

            userManagerMock.Setup(m => m.FindByEmailAsync(resetPasswordDto.Email)).Returns(Task.FromResult((ApplicationUser)null));

            var sut = new ResetPasswordService(userManagerMock.Object);

            // Act
            await sut.ResetPassword(resetPasswordDto);

            // Assert
            sut.Status.HasErrors.ShouldBeTrue();
        }
Пример #3
0
        public ActionResult PerformInitialResetPassword(InitialResetPasswordModel model)
        {
            if (ModelState.IsValid == false)
            {
                return(CurrentUmbracoPage());
            }

            var existingMember = Services.MemberService.GetByEmail(model.EmailAddress);

            if (existingMember == null)
            {
                ModelState.AddModelError("Model", "Unable to find user with provided email address.");
                return(CurrentUmbracoPage());
            }
            var  config         = ResetPasswordConfiguration.GetConfig();
            var  requestService = new PetaPocoResetPasswordRequestService(ApplicationContext.DatabaseContext, config);
            var  service        = new ResetPasswordService(Services.MemberService, requestService);
            Guid token;

            if (service.TryCreateInitialRequest(existingMember, out token) == false)
            {
                ModelState.AddModelError("Model", "Unable to reset password at this time.");
                return(CurrentUmbracoPage());
            }

            var notificationService = new ResetPasswordEmailNotificationService(config);

            notificationService.SendInitialRequestEmail(existingMember, token, CurrentPage);

            TempData.SetSuccessFlag(SuccessFlags.InitialResetPasswordRequestSuccess);

            return(RedirectToCurrentUmbracoPage());
        }
Пример #4
0
        public ActionResult RestPass(RecoverPass_VM recoverPass_VM)
        {
            if (recoverPass_VM.NewPassword == "" || recoverPass_VM.NewPassword == null)
            {
                return(View("Index"));
            }

            if (recoverPass_VM.NewPassword != recoverPass_VM.ConfirmedPassword)
            {
                ViewBag.ErrorMessage = "Please make shure Passowrds are matched";
                return(View("Index"));
            }
            else
            {
                // Update User Row With new password.
                string Email = EncryptDecryptString.Decrypt(Request.Url.Segments.Last(), "Taj$$Key");
                ResetPasswordService ResetService = new ResetPasswordService();
                var Model = new RegisterViewModel {
                    Email = Email, Password = EncryptDecryptString.Encrypt(recoverPass_VM.NewPassword, "Taj$$Key")
                };
                Model.IsActive = null; Model.Mobile = null; Model.Phone = null; Model.UserID = null; Model.Username = null;
                int Result = ResetService.Update(Model);
                if (Result < 0)
                {
                    ViewBag.ErrorMessage = _GlobalizationManager.GetTranslatedText("There is an Error while recovering your password", Enum_LangModule.MaskanWeb, "84");
                    return(View("Index"));
                }
                else
                {
                    ViewBag.ErrorMessage = _GlobalizationManager.GetTranslatedText("Your password successfully recovered, Please login with your new password.", Enum_LangModule.MaskanWeb, "83");
                    return(View("Index"));
                }
            }
        }
Пример #5
0
        public ActionResult PerformResetPassword(ResetPasswordModel model, string requestToken)
        {
            if (ModelState.IsValid == false)
            {
                return(CurrentUmbracoPage());
            }

            var config         = ResetPasswordConfiguration.GetConfig();
            var requestService = new PetaPocoResetPasswordRequestService(ApplicationContext.DatabaseContext, config);
            var service        = new ResetPasswordService(Services.MemberService, requestService);

            var request = requestService.Get(requestToken);

            if (service.IsRequestTokenValid(requestToken) == false)
            {
                return(PartialView("~/Views/Partials/ResetPassword/InvalidRequestToken.cshtml"));
            }

            var existingMember = service.GetMemberByRequest(request);

            if (service.ResetPassword(existingMember, request, model.NewPassword) == false)
            {
                ModelState.AddModelError("Model", "Unable to reset password at this time.");
                return(CurrentUmbracoPage());
            }

            var notificationService = new ResetPasswordEmailNotificationService(config);

            notificationService.SendCompletedRequestEmail(existingMember, CurrentPage);

            TempData.SetSuccessFlag(SuccessFlags.CompletedResetPasswordSuccess);

            return(RedirectToCurrentUmbracoPage());
        }
Пример #6
0
 public ResetPasswordServiceTests()
 {
     _userService = A.Fake <IUserService>();
     _passwordManagementService = A.Fake <IPasswordManagementService>();
     _messageParser             = A.Fake <IMessageParser <ResetPasswordMessageTemplate, User> >();
     _resetPasswordService      = new ResetPasswordService(_userService,
                                                           _passwordManagementService,
                                                           _messageParser);
 }
Пример #7
0
        protected void Button1_Click(object sender, EventArgs e)//密码重置
        {
            ResetPasswordService port = new ResetPasswordService();

            port.ClientCertificates.Add(certificate);
            String ruslet = port._ResetPassword("100001", "2", "18616562850", "415086", 1);

            MsgBox(ruslet);
        }
 public ResetPasswordServiceTests()
 {
     _userManagementService     = A.Fake <IUserManagementService>();
     _passwordManagementService = A.Fake <IPasswordManagementService>();
     _userLookup           = A.Fake <IUserLookup>();
     _resetPasswordService = new ResetPasswordService(_userManagementService,
                                                      _passwordManagementService,
                                                      _userLookup);
 }
Пример #9
0
        public void ResetPassword_Controller_Put_Test()
        {
            foreach (LanguageEnum LanguageRequest in AllowableLanguages)
            {
                foreach (int ContactID in new List <int>()
                {
                    AdminContactID
                })                                                             //, TestEmailValidatedContactID, TestEmailNotValidatedContactID })
                {
                    ResetPasswordController resetPasswordController = new ResetPasswordController(DatabaseTypeEnum.SqlServerTestDB);
                    Assert.IsNotNull(resetPasswordController);
                    Assert.AreEqual(DatabaseTypeEnum.SqlServerTestDB, resetPasswordController.DatabaseType);

                    ResetPassword resetPasswordLast = new ResetPassword();
                    using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
                    {
                        Query query = new Query();
                        query.Language = LanguageRequest;

                        ResetPasswordService resetPasswordService = new ResetPasswordService(query, db, ContactID);
                        resetPasswordLast = (from c in db.ResetPasswords select c).FirstOrDefault();
                    }

                    // ok with ResetPassword info
                    IHttpActionResult jsonRet = resetPasswordController.GetResetPasswordWithID(resetPasswordLast.ResetPasswordID);
                    Assert.IsNotNull(jsonRet);

                    OkNegotiatedContentResult <ResetPassword> Ret = jsonRet as OkNegotiatedContentResult <ResetPassword>;
                    ResetPassword resetPasswordRet = Ret.Content;
                    Assert.AreEqual(resetPasswordLast.ResetPasswordID, resetPasswordRet.ResetPasswordID);

                    BadRequestErrorMessageResult badRequest = jsonRet as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest);

                    // Put to return success
                    IHttpActionResult jsonRet2 = resetPasswordController.Put(resetPasswordRet, LanguageRequest.ToString());
                    Assert.IsNotNull(jsonRet2);

                    OkNegotiatedContentResult <ResetPassword> resetPasswordRet2 = jsonRet2 as OkNegotiatedContentResult <ResetPassword>;
                    Assert.IsNotNull(resetPasswordRet2);

                    BadRequestErrorMessageResult badRequest2 = jsonRet2 as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest2);

                    // Put to return CSSPError because ResetPasswordID of 0 does not exist
                    resetPasswordRet.ResetPasswordID = 0;
                    IHttpActionResult jsonRet3 = resetPasswordController.Put(resetPasswordRet, LanguageRequest.ToString());
                    Assert.IsNotNull(jsonRet3);

                    OkNegotiatedContentResult <ResetPassword> resetPasswordRet3 = jsonRet3 as OkNegotiatedContentResult <ResetPassword>;
                    Assert.IsNull(resetPasswordRet3);

                    BadRequestErrorMessageResult badRequest3 = jsonRet3 as BadRequestErrorMessageResult;
                    Assert.IsNotNull(badRequest3);
                }
            }
        }
Пример #10
0
 public IHttpActionResult GetResetPasswordList([FromUri] string lang = "en", [FromUri] int skip  = 0, [FromUri] int take      = 200,
                                               [FromUri] string asc  = "", [FromUri] string desc = "", [FromUri] string where = "", [FromUri] string extra = "")
 {
     using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
     {
         ResetPasswordService resetPasswordService = new ResetPasswordService(new Query()
         {
             Lang = lang
         }, db, ContactID);
        public ResetPasswordProviderMiddleware(RequestDelegate next,
                                               IAuthInternalRepository internalRepository,
                                               ResetPasswordService resetPasswordService)
        {
            _next = next;
            _resetPasswordService = resetPasswordService;

            _emailService         = new EmailService();
            _resetPasswordService = new ResetPasswordService(internalRepository);
        }
Пример #12
0
        private void SetupTest(ContactModel contactModelToDo, CultureInfo culture, string actionStr)
        {
            LanguageEnum languageEnum = (culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en);

            if (contactModelToDo == null)
            {
                user = null;
            }
            else
            {
                user = new GenericPrincipal(new GenericIdentity(contactModelToDo.LoginEmail, "Forms"), null);
            }
            routeData = new RouteData();
            routeData.Values.Add("culture", culture);
            routeData.Values.Add("controller", "Contact");
            routeData.Values.Add("action", actionStr);

            stubHttpContext            = new StubHttpContextBase();
            stubHttpRequestBase        = new StubHttpRequestBase();
            stubHttpContext.RequestGet = () => stubHttpRequestBase;
            requestContext             = new RequestContext(stubHttpContext, routeData);
            controller     = new ContactController();
            controller.Url = new UrlHelper(requestContext);
            controller.ControllerContext = new ControllerContext(stubHttpContext, routeData, controller);
            stubHttpContext.UserGet      = () => user;
            randomService        = new RandomService(languageEnum, user);
            resetPasswordService = new ResetPasswordService(languageEnum, user);
            tvItemService        = new TVItemService(languageEnum, user);
            tvItemLinkService    = new TVItemLinkService(languageEnum, user);
            telService           = new TelService(languageEnum, user);

            controller.SetRequestContext(requestContext);

            Assert.IsNotNull(controller);
            Assert.AreEqual(2, controller.CultureListAllowable.Count);
            Assert.AreEqual("en-CA", controller.CultureListAllowable[0]);
            Assert.AreEqual("fr-CA", controller.CultureListAllowable[1]);
            Assert.IsNotNull(controller._ContactService);
            Assert.IsNotNull(controller._RequestContext);
            Assert.IsNotNull(controller.urlModel);
            Assert.IsNotNull(culture.Name, controller._RequestContext.RouteData.Values["culture"].ToString());
            Assert.IsNotNull("Contact", controller._RequestContext.RouteData.Values["controller"].ToString());
            Assert.IsNotNull(actionStr, controller._RequestContext.RouteData.Values["action"].ToString());
            Assert.AreEqual((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), controller.LanguageRequest);
            Assert.AreEqual((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), controller.ViewBag.Language);
            Assert.AreEqual(culture.Name, controller.CultureRequest);
            Assert.AreEqual(culture.Name, controller.ViewBag.Culture);
            if (contactModelToDo != null)
            {
                Assert.AreEqual(contactModelToDo.IsAdmin, controller.IsAdmin);
                Assert.AreEqual(contactModelToDo.IsAdmin, controller.ViewBag.IsAdmin);
            }
            Assert.AreEqual(true, controller.Debug);
            Assert.AreEqual(true, controller.ViewBag.Debug);
        }
Пример #13
0
	public void ResetPassword (string userName)
	{
		resetPassword = new ResetPasswordService ();
		resetPassword.SucceededEvent += ResetPaswordComplete;
		resetPassword.FailedEvent += FailedResetPassword;
		#if UNITY_EDITOR
		resetPassword.StartService("*****@*****.**",serverSettings);
		#elif UNITY_ANDROID
		resetPassword.StartService(userName,serverSettings);
		#endif
	}
Пример #14
0
        public void ResetPassword_CRUD_Test()
        {
            foreach (CultureInfo culture in AllowableCulture)
            {
                ChangeCulture(culture);

                using (CSSPDBContext dbTestDB = new CSSPDBContext(DatabaseTypeEnum.SqlServerTestDB))
                {
                    ResetPasswordService resetPasswordService = new ResetPasswordService(new Query()
                    {
                        Lang = culture.TwoLetterISOLanguageName
                    }, dbTestDB, ContactID);

                    int count = 0;
                    if (count == 1)
                    {
                        // just so we don't get a warning during compile [The variable 'count' is assigned but its value is never used]
                    }

                    ResetPassword resetPassword = GetFilledRandomResetPassword("");

                    // -------------------------------
                    // -------------------------------
                    // CRUD testing
                    // -------------------------------
                    // -------------------------------

                    count = resetPasswordService.GetResetPasswordList().Count();

                    Assert.AreEqual(count, (from c in dbTestDB.ResetPasswords select c).Count());

                    resetPasswordService.Add(resetPassword);
                    if (resetPassword.HasErrors)
                    {
                        Assert.AreEqual("", resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);
                    }
                    Assert.AreEqual(true, resetPasswordService.GetResetPasswordList().Where(c => c == resetPassword).Any());
                    resetPasswordService.Update(resetPassword);
                    if (resetPassword.HasErrors)
                    {
                        Assert.AreEqual("", resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);
                    }
                    Assert.AreEqual(count + 1, resetPasswordService.GetResetPasswordList().Count());
                    resetPasswordService.Delete(resetPassword);
                    if (resetPassword.HasErrors)
                    {
                        Assert.AreEqual("", resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);
                    }
                    Assert.AreEqual(count, resetPasswordService.GetResetPasswordList().Count());
                }
            }
        }
Пример #15
0
        public ActionResult RenderForm(string requestToken)
        {
            var config         = ResetPasswordConfiguration.GetConfig();
            var requestService = new PetaPocoResetPasswordRequestService(ApplicationContext.DatabaseContext, config);
            var service        = new ResetPasswordService(Services.MemberService, requestService);

            if (service.IsRequestTokenValid(requestToken) == false)
            {
                return(PartialView("~/Views/Partials/ResetPassword/InvalidRequestToken.cshtml"));
            }

            return(PartialView("~/Views/Partials/ResetPassword/ResetPasswordForm.cshtml", new ResetPasswordModel()));
        }
        public IHttpActionResult GetResetPasswordWithID([FromUri] int ResetPasswordID, [FromUri] string lang = "en", [FromUri] string extra = "")
        {
            using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
            {
                ResetPasswordService resetPasswordService = new ResetPasswordService(new Query()
                {
                    Language = (lang == "fr" ? LanguageEnum.fr : LanguageEnum.en)
                }, db, ContactID);

                resetPasswordService.Query = resetPasswordService.FillQuery(typeof(ResetPassword), lang, 0, 1, "", "", extra);

                if (resetPasswordService.Query.Extra == "A")
                {
                    ResetPasswordExtraA resetPasswordExtraA = new ResetPasswordExtraA();
                    resetPasswordExtraA = resetPasswordService.GetResetPasswordExtraAWithResetPasswordID(ResetPasswordID);

                    if (resetPasswordExtraA == null)
                    {
                        return(NotFound());
                    }

                    return(Ok(resetPasswordExtraA));
                }
                else if (resetPasswordService.Query.Extra == "B")
                {
                    ResetPasswordExtraB resetPasswordExtraB = new ResetPasswordExtraB();
                    resetPasswordExtraB = resetPasswordService.GetResetPasswordExtraBWithResetPasswordID(ResetPasswordID);

                    if (resetPasswordExtraB == null)
                    {
                        return(NotFound());
                    }

                    return(Ok(resetPasswordExtraB));
                }
                else
                {
                    ResetPassword resetPassword = new ResetPassword();
                    resetPassword = resetPasswordService.GetResetPasswordWithResetPasswordID(ResetPasswordID);

                    if (resetPassword == null)
                    {
                        return(NotFound());
                    }

                    return(Ok(resetPassword));
                }
            }
        }
Пример #17
0
        public void ResetPassword_Controller_GetResetPasswordWithID_Test()
        {
            foreach (LanguageEnum LanguageRequest in AllowableLanguages)
            {
                foreach (int ContactID in new List <int>()
                {
                    AdminContactID
                })                                                             //, TestEmailValidatedContactID, TestEmailNotValidatedContactID })
                {
                    ResetPasswordController resetPasswordController = new ResetPasswordController(DatabaseTypeEnum.SqlServerTestDB);
                    Assert.IsNotNull(resetPasswordController);
                    Assert.AreEqual(DatabaseTypeEnum.SqlServerTestDB, resetPasswordController.DatabaseType);

                    ResetPassword resetPasswordFirst = new ResetPassword();
                    using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
                    {
                        ResetPasswordService resetPasswordService = new ResetPasswordService(new Query(), db, ContactID);
                        resetPasswordFirst = (from c in db.ResetPasswords select c).FirstOrDefault();
                    }

                    // ok with ResetPassword info
                    IHttpActionResult jsonRet = resetPasswordController.GetResetPasswordWithID(resetPasswordFirst.ResetPasswordID);
                    Assert.IsNotNull(jsonRet);

                    OkNegotiatedContentResult <ResetPassword> Ret = jsonRet as OkNegotiatedContentResult <ResetPassword>;
                    ResetPassword resetPasswordRet = Ret.Content;
                    Assert.AreEqual(resetPasswordFirst.ResetPasswordID, resetPasswordRet.ResetPasswordID);

                    BadRequestErrorMessageResult badRequest = jsonRet as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest);

                    // Not Found
                    IHttpActionResult jsonRet2 = resetPasswordController.GetResetPasswordWithID(0);
                    Assert.IsNotNull(jsonRet2);

                    OkNegotiatedContentResult <ResetPassword> resetPasswordRet2 = jsonRet2 as OkNegotiatedContentResult <ResetPassword>;
                    Assert.IsNull(resetPasswordRet2);

                    NotFoundResult notFoundRequest = jsonRet2 as NotFoundResult;
                    Assert.IsNotNull(notFoundRequest);
                }
            }
        }
        public void SetupTest(ContactModel contactModelToDo, CultureInfo culture)
        {
            Thread.CurrentThread.CurrentCulture   = culture;
            Thread.CurrentThread.CurrentUICulture = culture;

            if (contactModelToDo == null)
            {
                user = null;
            }
            else
            {
                contactModel = contactModelToDo;
                user         = new GenericPrincipal(new GenericIdentity(contactModel.LoginEmail, "Forms"), null);
            }
            resetPasswordService  = new ResetPasswordService((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), user);
            testDBService         = new TestDBService((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), user, TableName, Plurial);
            randomService         = new RandomService((culture.TwoLetterISOLanguageName == "fr" ? LanguageEnum.fr : LanguageEnum.en), user);
            resetPasswordModelNew = new ResetPasswordModel();
            resetPassword         = new ResetPassword();
        }
        public IHttpActionResult Delete([FromBody] ResetPassword resetPassword, [FromUri] string lang = "en")
        {
            using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
            {
                ResetPasswordService resetPasswordService = new ResetPasswordService(new Query()
                {
                    Language = (lang == "fr" ? LanguageEnum.fr : LanguageEnum.en)
                }, db, ContactID);

                if (!resetPasswordService.Delete(resetPassword))
                {
                    return(BadRequest(String.Join("|||", resetPassword.ValidationResults)));
                }
                else
                {
                    resetPassword.ValidationResults = null;
                    return(Ok(resetPassword));
                }
            }
        }
Пример #20
0
        public void GetResetPasswordList_Test()
        {
            foreach (CultureInfo culture in AllowableCulture)
            {
                ChangeCulture(culture);

                using (CSSPDBContext dbTestDB = new CSSPDBContext(DatabaseTypeEnum.SqlServerTestDB))
                {
                    ResetPasswordService resetPasswordService = new ResetPasswordService(new Query()
                    {
                        Lang = culture.TwoLetterISOLanguageName
                    }, dbTestDB, ContactID);
                    ResetPassword resetPassword = (from c in dbTestDB.ResetPasswords select c).FirstOrDefault();
                    Assert.IsNotNull(resetPassword);

                    List <ResetPassword> resetPasswordDirectQueryList = new List <ResetPassword>();
                    resetPasswordDirectQueryList = (from c in dbTestDB.ResetPasswords select c).Take(200).ToList();

                    foreach (string extra in new List <string>()
                    {
                        null, "A", "B", "C", "D", "E"
                    })
                    {
                        resetPasswordService.Query.Extra = extra;

                        if (string.IsNullOrWhiteSpace(extra))
                        {
                            List <ResetPassword> resetPasswordList = new List <ResetPassword>();
                            resetPasswordList = resetPasswordService.GetResetPasswordList().ToList();
                            CheckResetPasswordFields(resetPasswordList);
                        }
                        else
                        {
                            //Assert.AreEqual(true, false);
                        }
                    }
                }
            }
        }
Пример #21
0
        public void GetResetPasswordList_2Where_Test()
        {
            foreach (CultureInfo culture in AllowableCulture)
            {
                ChangeCulture(culture);

                using (CSSPDBContext dbTestDB = new CSSPDBContext(DatabaseTypeEnum.SqlServerTestDB))
                {
                    foreach (string extra in new List <string>()
                    {
                        null, "A", "B", "C", "D", "E"
                    })
                    {
                        ResetPasswordService resetPasswordService = new ResetPasswordService(new Query()
                        {
                            Lang = culture.TwoLetterISOLanguageName
                        }, dbTestDB, ContactID);

                        resetPasswordService.Query = resetPasswordService.FillQuery(typeof(ResetPassword), culture.TwoLetterISOLanguageName, 0, 10000, "", "", "ResetPasswordID,GT,2|ResetPasswordID,LT,5", extra);

                        List <ResetPassword> resetPasswordDirectQueryList = new List <ResetPassword>();
                        resetPasswordDirectQueryList = (from c in dbTestDB.ResetPasswords select c).Where(c => c.ResetPasswordID > 2 && c.ResetPasswordID < 5).ToList();

                        if (string.IsNullOrWhiteSpace(extra))
                        {
                            List <ResetPassword> resetPasswordList = new List <ResetPassword>();
                            resetPasswordList = resetPasswordService.GetResetPasswordList().ToList();
                            CheckResetPasswordFields(resetPasswordList);
                            Assert.AreEqual(resetPasswordDirectQueryList[0].ResetPasswordID, resetPasswordList[0].ResetPasswordID);
                        }
                        else
                        {
                            //Assert.AreEqual(true, false);
                        }
                    }
                }
            }
        }
Пример #22
0
        public async Task <string> ForgetPassword(string token, Guid userId, string email)
        {
            string modelError = null;

            using (IResetPasswordService resetPasswordSvc = new ResetPasswordService())
            {
                ResetPassword resetPassword = new ResetPassword();
                if (await resetPasswordSvc.GetAll().AnyAsync(m => m.UserId == userId && m.IsSuccess == false))
                {
                    resetPassword = await resetPasswordSvc.GetAll().Where(m => m.UserId == userId && m.IsSuccess == false).OrderByDescending(m => m.CreatTime).FirstAsync();
                }
                else
                {
                    resetPassword = null;
                }
                //获取最新的一条reset password,找不到有效的或者间隔大于5分钟才可申请
                if (resetPassword == null || DateTime.Now >= resetPassword.CreatTime.AddMinutes(5))
                {
                    //在reset password中添加数据 token
                    ResetPassword data = new ResetPassword
                    {
                        Email  = email,
                        Token  = token,
                        UserId = userId
                    };
                    await resetPasswordSvc.CreatAsync(data);

                    return(modelError);
                }
                else
                {
                    modelError = "不可频繁申请,请在" + resetPassword.CreatTime.AddMinutes(5) + "后再重试";
                    return(modelError);
                }
            }
        }
Пример #23
0
        public void SetUp()
        {
            _userManager = new Mock <IUserManager>();

            _sut = new ResetPasswordService(_userManager.Object);
        }
Пример #24
0
        public void ResetPassword_Controller_Post_Test()
        {
            foreach (LanguageEnum LanguageRequest in AllowableLanguages)
            {
                foreach (int ContactID in new List <int>()
                {
                    AdminContactID
                })                                                             //, TestEmailValidatedContactID, TestEmailNotValidatedContactID })
                {
                    ResetPasswordController resetPasswordController = new ResetPasswordController(DatabaseTypeEnum.SqlServerTestDB);
                    Assert.IsNotNull(resetPasswordController);
                    Assert.AreEqual(DatabaseTypeEnum.SqlServerTestDB, resetPasswordController.DatabaseType);

                    ResetPassword resetPasswordLast = new ResetPassword();
                    using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
                    {
                        Query query = new Query();
                        query.Language = LanguageRequest;
                        query.Asc      = "";
                        query.Desc     = "";

                        ResetPasswordService resetPasswordService = new ResetPasswordService(query, db, ContactID);
                        resetPasswordLast = (from c in db.ResetPasswords select c).FirstOrDefault();
                    }

                    // ok with ResetPassword info
                    IHttpActionResult jsonRet = resetPasswordController.GetResetPasswordWithID(resetPasswordLast.ResetPasswordID);
                    Assert.IsNotNull(jsonRet);

                    OkNegotiatedContentResult <ResetPassword> Ret = jsonRet as OkNegotiatedContentResult <ResetPassword>;
                    ResetPassword resetPasswordRet = Ret.Content;
                    Assert.AreEqual(resetPasswordLast.ResetPasswordID, resetPasswordRet.ResetPasswordID);

                    BadRequestErrorMessageResult badRequest = jsonRet as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest);

                    // Post to return CSSPError because ResetPasswordID exist
                    IHttpActionResult jsonRet2 = resetPasswordController.Post(resetPasswordRet, LanguageRequest.ToString());
                    Assert.IsNotNull(jsonRet2);

                    OkNegotiatedContentResult <ResetPassword> resetPasswordRet2 = jsonRet2 as OkNegotiatedContentResult <ResetPassword>;
                    Assert.IsNull(resetPasswordRet2);

                    BadRequestErrorMessageResult badRequest2 = jsonRet2 as BadRequestErrorMessageResult;
                    Assert.IsNotNull(badRequest2);

                    // Post to return newly added ResetPassword
                    resetPasswordRet.ResetPasswordID           = 0;
                    resetPasswordController.Request            = new System.Net.Http.HttpRequestMessage();
                    resetPasswordController.Request.RequestUri = new System.Uri("http://localhost:5000/api/resetPassword");
                    IHttpActionResult jsonRet3 = resetPasswordController.Post(resetPasswordRet, LanguageRequest.ToString());
                    Assert.IsNotNull(jsonRet3);

                    CreatedNegotiatedContentResult <ResetPassword> resetPasswordRet3 = jsonRet3 as CreatedNegotiatedContentResult <ResetPassword>;
                    Assert.IsNotNull(resetPasswordRet3);

                    BadRequestErrorMessageResult badRequest3 = jsonRet3 as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest3);

                    IHttpActionResult jsonRet4 = resetPasswordController.Delete(resetPasswordRet, LanguageRequest.ToString());
                    Assert.IsNotNull(jsonRet4);

                    OkNegotiatedContentResult <ResetPassword> resetPasswordRet4 = jsonRet4 as OkNegotiatedContentResult <ResetPassword>;
                    Assert.IsNotNull(resetPasswordRet4);

                    BadRequestErrorMessageResult badRequest4 = jsonRet4 as BadRequestErrorMessageResult;
                    Assert.IsNull(badRequest4);
                }
            }
        }
Пример #25
0
        public void ResetPassword_Controller_GetResetPasswordList_Test()
        {
            foreach (LanguageEnum LanguageRequest in AllowableLanguages)
            {
                foreach (int ContactID in new List <int>()
                {
                    AdminContactID
                })                                                             //, TestEmailValidatedContactID, TestEmailNotValidatedContactID })
                {
                    ResetPasswordController resetPasswordController = new ResetPasswordController(DatabaseTypeEnum.SqlServerTestDB);
                    Assert.IsNotNull(resetPasswordController);
                    Assert.AreEqual(DatabaseTypeEnum.SqlServerTestDB, resetPasswordController.DatabaseType);

                    ResetPassword resetPasswordFirst = new ResetPassword();
                    int           count = -1;
                    Query         query = new Query();
                    using (CSSPDBContext db = new CSSPDBContext(DatabaseTypeEnum.SqlServerTestDB))
                    {
                        ResetPasswordService resetPasswordService = new ResetPasswordService(query, db, ContactID);
                        resetPasswordFirst = (from c in db.ResetPasswords select c).FirstOrDefault();
                        count = (from c in db.ResetPasswords select c).Count();
                        count = (query.Take > count ? count : query.Take);
                    }

                    // ok with ResetPassword info
                    IHttpActionResult jsonRet = resetPasswordController.GetResetPasswordList();
                    Assert.IsNotNull(jsonRet);

                    OkNegotiatedContentResult <List <ResetPassword> > ret = jsonRet as OkNegotiatedContentResult <List <ResetPassword> >;
                    Assert.AreEqual(resetPasswordFirst.ResetPasswordID, ret.Content[0].ResetPasswordID);
                    Assert.AreEqual((count > query.Take ? query.Take : count), ret.Content.Count);

                    List <ResetPassword> resetPasswordList = new List <ResetPassword>();
                    count = -1;
                    query = new Query();
                    using (CSSPDBContext db = new CSSPDBContext(DatabaseTypeEnum.SqlServerTestDB))
                    {
                        ResetPasswordService resetPasswordService = new ResetPasswordService(query, db, ContactID);
                        resetPasswordList = (from c in db.ResetPasswords select c).OrderBy(c => c.ResetPasswordID).Skip(0).Take(2).ToList();
                        count             = (from c in db.ResetPasswords select c).Count();
                    }

                    if (count > 0)
                    {
                        query.Skip = 0;
                        query.Take = 5;
                        count      = (query.Take > count ? query.Take : count);

                        // ok with ResetPassword info
                        jsonRet = resetPasswordController.GetResetPasswordList(query.Language.ToString(), query.Skip, query.Take);
                        Assert.IsNotNull(jsonRet);

                        ret = jsonRet as OkNegotiatedContentResult <List <ResetPassword> >;
                        Assert.AreEqual(resetPasswordList[0].ResetPasswordID, ret.Content[0].ResetPasswordID);
                        Assert.AreEqual((count > query.Take ? query.Take : count), ret.Content.Count);

                        if (count > 1)
                        {
                            query.Skip = 1;
                            query.Take = 5;
                            count      = (query.Take > count ? query.Take : count);

                            // ok with ResetPassword info
                            IHttpActionResult jsonRet2 = resetPasswordController.GetResetPasswordList(query.Language.ToString(), query.Skip, query.Take);
                            Assert.IsNotNull(jsonRet2);

                            OkNegotiatedContentResult <List <ResetPassword> > ret2 = jsonRet2 as OkNegotiatedContentResult <List <ResetPassword> >;
                            Assert.AreEqual(resetPasswordList[1].ResetPasswordID, ret2.Content[0].ResetPasswordID);
                            Assert.AreEqual((count > query.Take ? query.Take : count), ret2.Content.Count);
                        }
                    }
                }
            }
        }
Пример #26
0
        public async Task <string> ResetPassword(string token, Guid userId, string password)
        {
            string modelError = null;

            using (IResetPasswordService resetPasswordSvc = new ResetPasswordService())
            {
                ResetPassword resetPassword = new ResetPassword();
                if (await resetPasswordSvc.GetAll().AnyAsync(m => m.UserId == userId))
                {
                    resetPassword = await resetPasswordSvc.GetAll().Where(m => m.UserId == userId && m.Token == token).OrderByDescending(m => m.CreatTime).FirstAsync();
                }
                else
                {
                    resetPassword = null;
                }
                //查找reset password中是否有对应的token而且对应的id是否一致 issuccess是否已经成功 时间是否到期
                if (resetPassword != null)
                {
                    if (resetPassword.IsSuccess == false)
                    {
                        if (DateTime.Now >= resetPassword.ExpireTime)
                        {
                            modelError = "该链接已过期,请重新申请!";
                            return(modelError);
                        }
                        else
                        {
                            //一致的话reset password issuccess修改为成功
                            resetPassword.IsSuccess = true;
                            await resetPasswordSvc.EditAsync(resetPassword);

                            //user表用户密码修改
                            using (IUserService userSvc = new UserService())
                            {
                                User user = await userSvc.GetAll().FirstAsync(m => m.Id == userId && m.Email == resetPassword.Email);

                                if (user != null)
                                {
                                    user.Password = password;
                                    await userSvc.EditAsync(user);

                                    return(modelError);
                                }
                                else
                                {
                                    modelError = "找不到用户信息,修改密码失败!";
                                    return(modelError);
                                }
                            }
                        }
                    }
                    else
                    {
                        modelError = "该链接已被使用,如未成功修改请重新申请忘记密码!";
                        return(modelError);
                    }
                }
                else
                {
                    modelError = "token信息不正确";
                    return(modelError);
                }
            }
        }
        public IHttpActionResult GetResetPasswordList([FromUri] string lang = "en", [FromUri] int skip  = 0, [FromUri] int take      = 200,
                                                      [FromUri] string asc  = "", [FromUri] string desc = "", [FromUri] string where = "", [FromUri] string extra = "")
        {
            using (CSSPDBContext db = new CSSPDBContext(DatabaseType))
            {
                ResetPasswordService resetPasswordService = new ResetPasswordService(new Query()
                {
                    Lang = lang
                }, db, ContactID);

                if (extra == "A") // QueryString contains [extra=A]
                {
                    resetPasswordService.Query = resetPasswordService.FillQuery(typeof(ResetPasswordExtraA), lang, skip, take, asc, desc, where, extra);

                    if (resetPasswordService.Query.HasErrors)
                    {
                        return(Ok(new List <ResetPasswordExtraA>()
                        {
                            new ResetPasswordExtraA()
                            {
                                HasErrors = resetPasswordService.Query.HasErrors,
                                ValidationResults = resetPasswordService.Query.ValidationResults,
                            },
                        }.ToList()));
                    }
                    else
                    {
                        return(Ok(resetPasswordService.GetResetPasswordExtraAList().ToList()));
                    }
                }
                else if (extra == "B") // QueryString contains [extra=B]
                {
                    resetPasswordService.Query = resetPasswordService.FillQuery(typeof(ResetPasswordExtraB), lang, skip, take, asc, desc, where, extra);

                    if (resetPasswordService.Query.HasErrors)
                    {
                        return(Ok(new List <ResetPasswordExtraB>()
                        {
                            new ResetPasswordExtraB()
                            {
                                HasErrors = resetPasswordService.Query.HasErrors,
                                ValidationResults = resetPasswordService.Query.ValidationResults,
                            },
                        }.ToList()));
                    }
                    else
                    {
                        return(Ok(resetPasswordService.GetResetPasswordExtraBList().ToList()));
                    }
                }
                else // QueryString has no parameter [extra] or extra is empty
                {
                    resetPasswordService.Query = resetPasswordService.FillQuery(typeof(ResetPassword), lang, skip, take, asc, desc, where, extra);

                    if (resetPasswordService.Query.HasErrors)
                    {
                        return(Ok(new List <ResetPassword>()
                        {
                            new ResetPassword()
                            {
                                HasErrors = resetPasswordService.Query.HasErrors,
                                ValidationResults = resetPasswordService.Query.ValidationResults,
                            },
                        }.ToList()));
                    }
                    else
                    {
                        return(Ok(resetPasswordService.GetResetPasswordList().ToList()));
                    }
                }
            }
        }
Пример #28
0
        public void ResetPassword_Properties_Test()
        {
            foreach (CultureInfo culture in AllowableCulture)
            {
                ChangeCulture(culture);

                using (CSSPDBContext dbTestDB = new CSSPDBContext(DatabaseTypeEnum.SqlServerTestDB))
                {
                    ResetPasswordService resetPasswordService = new ResetPasswordService(new Query()
                    {
                        Lang = culture.TwoLetterISOLanguageName
                    }, dbTestDB, ContactID);

                    int count = 0;
                    if (count == 1)
                    {
                        // just so we don't get a warning during compile [The variable 'count' is assigned but its value is never used]
                    }

                    count = resetPasswordService.GetResetPasswordList().Count();

                    ResetPassword resetPassword = GetFilledRandomResetPassword("");

                    // -------------------------------
                    // -------------------------------
                    // Properties testing
                    // -------------------------------
                    // -------------------------------


                    // -----------------------------------
                    // [Key]
                    // Is NOT Nullable
                    // resetPassword.ResetPasswordID   (Int32)
                    // -----------------------------------

                    resetPassword = null;
                    resetPassword = GetFilledRandomResetPassword("");
                    resetPassword.ResetPasswordID = 0;
                    resetPasswordService.Update(resetPassword);
                    Assert.AreEqual(string.Format(CSSPServicesRes._IsRequired, "ResetPasswordID"), resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);

                    resetPassword = null;
                    resetPassword = GetFilledRandomResetPassword("");
                    resetPassword.ResetPasswordID = 10000000;
                    resetPasswordService.Update(resetPassword);
                    Assert.AreEqual(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "ResetPassword", "ResetPasswordID", resetPassword.ResetPasswordID.ToString()), resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);


                    // -----------------------------------
                    // Is NOT Nullable
                    // [DataType(DataType.EmailAddress)]
                    // [StringLength(256))]
                    // resetPassword.Email   (String)
                    // -----------------------------------

                    resetPassword = null;
                    resetPassword = GetFilledRandomResetPassword("Email");
                    Assert.AreEqual(false, resetPasswordService.Add(resetPassword));
                    Assert.AreEqual(1, resetPassword.ValidationResults.Count());
                    Assert.IsTrue(resetPassword.ValidationResults.Where(c => c.ErrorMessage == string.Format(CSSPServicesRes._IsRequired, "Email")).Any());
                    Assert.AreEqual(null, resetPassword.Email);
                    Assert.AreEqual(count, resetPasswordService.GetResetPasswordList().Count());

                    resetPassword       = null;
                    resetPassword       = GetFilledRandomResetPassword("");
                    resetPassword.Email = GetRandomString("", 257);
                    Assert.AreEqual(false, resetPasswordService.Add(resetPassword));
                    Assert.AreEqual(string.Format(CSSPServicesRes._MaxLengthIs_, "Email", "256"), resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);
                    Assert.AreEqual(count, resetPasswordService.GetResetPasswordList().Count());

                    // -----------------------------------
                    // Is NOT Nullable
                    // [CSSPAfter(Year = 1980)]
                    // resetPassword.ExpireDate_Local   (DateTime)
                    // -----------------------------------

                    resetPassword = null;
                    resetPassword = GetFilledRandomResetPassword("");
                    resetPassword.ExpireDate_Local = new DateTime();
                    resetPasswordService.Add(resetPassword);
                    Assert.AreEqual(string.Format(CSSPServicesRes._IsRequired, "ExpireDate_Local"), resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);
                    resetPassword = null;
                    resetPassword = GetFilledRandomResetPassword("");
                    resetPassword.ExpireDate_Local = new DateTime(1979, 1, 1);
                    resetPasswordService.Add(resetPassword);
                    Assert.AreEqual(string.Format(CSSPServicesRes._YearShouldBeBiggerThan_, "ExpireDate_Local", "1980"), resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);

                    // -----------------------------------
                    // Is NOT Nullable
                    // [StringLength(8))]
                    // resetPassword.Code   (String)
                    // -----------------------------------

                    resetPassword = null;
                    resetPassword = GetFilledRandomResetPassword("Code");
                    Assert.AreEqual(false, resetPasswordService.Add(resetPassword));
                    Assert.AreEqual(1, resetPassword.ValidationResults.Count());
                    Assert.IsTrue(resetPassword.ValidationResults.Where(c => c.ErrorMessage == string.Format(CSSPServicesRes._IsRequired, "Code")).Any());
                    Assert.AreEqual(null, resetPassword.Code);
                    Assert.AreEqual(count, resetPasswordService.GetResetPasswordList().Count());

                    resetPassword      = null;
                    resetPassword      = GetFilledRandomResetPassword("");
                    resetPassword.Code = GetRandomString("", 9);
                    Assert.AreEqual(false, resetPasswordService.Add(resetPassword));
                    Assert.AreEqual(string.Format(CSSPServicesRes._MaxLengthIs_, "Code", "8"), resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);
                    Assert.AreEqual(count, resetPasswordService.GetResetPasswordList().Count());

                    // -----------------------------------
                    // Is NOT Nullable
                    // [CSSPAfter(Year = 1980)]
                    // resetPassword.LastUpdateDate_UTC   (DateTime)
                    // -----------------------------------

                    resetPassword = null;
                    resetPassword = GetFilledRandomResetPassword("");
                    resetPassword.LastUpdateDate_UTC = new DateTime();
                    resetPasswordService.Add(resetPassword);
                    Assert.AreEqual(string.Format(CSSPServicesRes._IsRequired, "LastUpdateDate_UTC"), resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);
                    resetPassword = null;
                    resetPassword = GetFilledRandomResetPassword("");
                    resetPassword.LastUpdateDate_UTC = new DateTime(1979, 1, 1);
                    resetPasswordService.Add(resetPassword);
                    Assert.AreEqual(string.Format(CSSPServicesRes._YearShouldBeBiggerThan_, "LastUpdateDate_UTC", "1980"), resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);

                    // -----------------------------------
                    // Is NOT Nullable
                    // [CSSPExist(ExistTypeName = "TVItem", ExistPlurial = "s", ExistFieldID = "TVItemID", AllowableTVtypeList = Contact)]
                    // resetPassword.LastUpdateContactTVItemID   (Int32)
                    // -----------------------------------

                    resetPassword = null;
                    resetPassword = GetFilledRandomResetPassword("");
                    resetPassword.LastUpdateContactTVItemID = 0;
                    resetPasswordService.Add(resetPassword);
                    Assert.AreEqual(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "TVItem", "LastUpdateContactTVItemID", resetPassword.LastUpdateContactTVItemID.ToString()), resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);

                    resetPassword = null;
                    resetPassword = GetFilledRandomResetPassword("");
                    resetPassword.LastUpdateContactTVItemID = 1;
                    resetPasswordService.Add(resetPassword);
                    Assert.AreEqual(string.Format(CSSPServicesRes._IsNotOfType_, "LastUpdateContactTVItemID", "Contact"), resetPassword.ValidationResults.FirstOrDefault().ErrorMessage);


                    // -----------------------------------
                    // Is NOT Nullable
                    // [NotMapped]
                    // resetPassword.HasErrors   (Boolean)
                    // -----------------------------------

                    // No testing requied

                    // -----------------------------------
                    // Is NOT Nullable
                    // [NotMapped]
                    // resetPassword.ValidationResults   (IEnumerable`1)
                    // -----------------------------------

                    // No testing requied
                }
            }
        }
        public void TestInitialize()
        {
            _mock = AutoMock.GetLoose();

            _resetPasswordService = _mock.Create <ResetPasswordService>();
        }