Exemplo n.º 1
0
        public void TestResolveParameters()
        {
            var result = OutgoingMailMessage.ResolveParameters("$L$orem $ipsum$ dolor $$s$i$t$$ amet$blank$, $ $consectetuer $0.99 ad$i$p$i$scing $$elit$. $$$Aenean$ $commodo$ $l$igula eget $dol$or.",
                                                               new Dictionary <string, string>
            {
                { "i", "i" },
                { "L", "L" },
                { "ipsum", "ipswich" },
                { "Aenean", "dol$" },
                { "corpus", "sodalitas" },
                { "nothing", "nil" },
                { "blank", "" },
                { "dol", "do" }
            });

            Assert.AreEqual("Lorem ipswich dolor $sit$ amet, $ $consectetuer $0.99 adipiscing $elit$. $dol$ $commodo$ $l$igula eget door.", result);
        }
        public ResetPasswordResponse ResetPassword(ResetPasswordRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.UserName, "UserName");

            var now  = Platform.Time;
            var user = GetUser(request.UserName);

            // ensure user found, account is active and the current password is correct
            if (string.IsNullOrEmpty(user.EmailAddress))
            {
                throw new RequestValidationException(SR.MessageEmailAddressNotConfigured);
            }

            // ensure user found, account is active and the current password is correct
            if (user == null || !user.IsActive(now))
            {
                // no such user, account not active, or invalid password
                // the error message is deliberately vague
                throw new UserAccessDeniedException();
            }

            // Just use the .NET routine
            var newPassword = Membership.GeneratePassword(8, 1);

            var expiryTime = Platform.Time;

            // change the password
            user.ChangePassword(newPassword, expiryTime);

            // send email
            var settings = new PasswordResetEmailSettings();
            var mail     = new OutgoingMailMessage(
                settings.FromAddress,
                user.EmailAddress,
                settings.SubjectTemplate.Replace("$USER", user.DisplayName),
                settings.BodyTemplate.Replace("$USER", user.DisplayName).Replace("$PASSWORD", newPassword),
                settings.BodyTemplate.ToLower().Contains("html"));

            mail.Enqueue(OutgoingMailClassification.Normal);

            return(new ResetPasswordResponse(user.EmailAddress));
        }
		public ResetPasswordResponse ResetPassword(ResetPasswordRequest request)
		{
			Platform.CheckForNullReference(request, "request");
			Platform.CheckMemberIsSet(request.UserName, "UserName");

			var now = Platform.Time;
			var user = GetUser(request.UserName);

			// ensure user found, account is active and the current password is correct
			if (string.IsNullOrEmpty(user.EmailAddress))
			{
				throw new RequestValidationException(SR.MessageEmailAddressNotConfigured);
			}

			// ensure user found, account is active and the current password is correct
			if (user == null || !user.IsActive(now))
			{
				// no such user, account not active, or invalid password
				// the error message is deliberately vague
				throw new UserAccessDeniedException();
			}

			// Just use the .NET routine
			var newPassword = Membership.GeneratePassword(8, 1);

			var expiryTime = Platform.Time;

			// change the password
			user.ChangePassword(newPassword, expiryTime);

			// send email
			var settings = new PasswordResetEmailSettings();
			var mail = new OutgoingMailMessage(
				settings.FromAddress,
				user.EmailAddress,
				settings.SubjectTemplate.Replace("$USER", user.DisplayName),
				settings.BodyTemplate.Replace("$USER", user.DisplayName).Replace("$PASSWORD", newPassword),
				settings.BodyTemplate.ToLower().Contains("html"));
			mail.Enqueue(OutgoingMailClassification.Normal);

			return new ResetPasswordResponse(user.EmailAddress);
		}
Exemplo n.º 4
0
        public void TestResolveParametersLazy()
        {
            var countI       = 0;
            var countL       = 0;
            var countIpsum   = 0;
            var countAenean  = 0;
            var countCorpus  = 0;
            var countNothing = 0;
            var countBlank   = 0;
            var countDol     = 0;

            var state  = new Object();
            var result = OutgoingMailMessage.ResolveParameters("$L$orem $ipsum$ dolor $$s$i$t$$ amet$blank$, $ $consectetuer $0.99 ad$i$p$i$scing $$elit$. $$$Aenean$ $commodo$ $l$igula eget $dol$or.", state,
                                                               new Dictionary <string, Func <Object, string> >
            {
                {
                    "i", s =>
                    {
                        countI++;
                        return("i");
                    }
                },
                {
                    "L", s =>
                    {
                        countL++;
                        return("L");
                    }
                },
                {
                    "ipsum", s =>
                    {
                        countIpsum++;
                        return("ipswich");
                    }
                },
                {
                    "Aenean", s =>
                    {
                        countAenean++;
                        return("dol$");
                    }
                },
                {
                    "corpus", s =>
                    {
                        countCorpus++;
                        return("sodalitas");
                    }
                },
                {
                    "nothing", s =>
                    {
                        countNothing++;
                        return("nil");
                    }
                },
                {
                    "blank", s =>
                    {
                        countBlank++;
                        return("");
                    }
                },
                {
                    "dol", s =>
                    {
                        countDol++;
                        return("do");
                    }
                }
            });

            Assert.AreEqual("Lorem ipswich dolor $sit$ amet, $ $consectetuer $0.99 adipiscing $elit$. $dol$ $commodo$ $l$igula eget door.", result);
            Assert.AreEqual(1, countI, "function 'i' should have been evaluated exactly once");
            Assert.AreEqual(1, countL, "function 'L' should have been evaluated exactly once");
            Assert.AreEqual(1, countIpsum, "function 'ipsum' should have been evaluated exactly once");
            Assert.AreEqual(1, countAenean, "function 'Aenean' should have been evaluated exactly once");
            Assert.AreEqual(0, countCorpus, "function 'corpus' should not have been evaluated at all");
            Assert.AreEqual(0, countNothing, "function 'nothing' should not have been evaluated at all");
            Assert.AreEqual(1, countBlank, "function 'blank' should have been evaluated exactly once");
            Assert.AreEqual(1, countDol, "function 'dol' should have been evaluated exactly once");
        }