public void WhenSettingAuthenticationCookieFromTicket_ThenAddsToResponseCookie()
        {
            var cookies = new HttpCookieCollection();
            var formsAuth = new DefaultFormsAuthentication();
            var context = MvcMockHelpers.FakeHttpContext();
            var responseMock = Mock.Get(context.Response);
            responseMock.Setup(r => r.Cookies).Returns(cookies);

            formsAuth.SetAuthCookie(context, new FormsAuthenticationTicket("TestName", false, 55));

            Assert.NotNull(cookies[FormsAuthentication.FormsCookieName]);
            Assert.Equal("TestName",
                         FormsAuthentication.Decrypt(cookies[FormsAuthentication.FormsCookieName].Value).Name);
        }
        public void WhenDecryptingAuthenticationTicket_TheReturnsTicket()
        {
            var formsAuth = new DefaultFormsAuthentication();
            var ticket = new FormsAuthenticationTicket("test", false, 10);
            string encryptedTicket = FormsAuthentication.Encrypt(ticket);

            var recoveredTicket = formsAuth.Decrypt(encryptedTicket);

            Assert.NotNull(recoveredTicket);
            Assert.Equal(ticket.Name, recoveredTicket.Name);
            Assert.Equal(ticket.Expiration, recoveredTicket.Expiration);
            Assert.Equal(ticket.IsPersistent, recoveredTicket.IsPersistent);
            Assert.Equal(ticket.IssueDate, recoveredTicket.IssueDate);
        }
        public void WhenSettingAuthenticationCookieFromTicket_ThenSetsExpiryFromFormsAuthenticationTimeoutValue()
        {
            var cookies = new HttpCookieCollection();
            var formsAuth = new DefaultFormsAuthentication();
            var context = MvcMockHelpers.FakeHttpContext();
            var responseMock = Mock.Get(context.Response);
            responseMock.Setup(r => r.Cookies).Returns(cookies);

            formsAuth.SetAuthCookie(context, new FormsAuthenticationTicket("TestName", false, 55));

            var cookie = cookies[FormsAuthentication.FormsCookieName];
            var now = DateTime.Now;
            var formsTimeout = FormsAuthentication.Timeout;

            // assumes test can run +/- 1 minute
            Assert.True(cookie.Expires >= now.AddMinutes(formsTimeout.Minutes - 1));
            Assert.True(cookie.Expires <= now.AddMinutes(formsTimeout.Minutes + 1));
        }