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 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));
        }