1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System.Collections;
using Moq;
using Xunit;
namespace System.Web.WebPages.Test
{
public class CookieBrowserOverrideStoreTest
{
[Fact]
public void GetOverriddenUserAgentReturnsNullIfNoResponseOrRequestCookieIsSet()
{
// Arrange
CookieBrowserOverrideStore store = new CookieBrowserOverrideStore();
// Act & Assert
Assert.Null(store.GetOverriddenUserAgent(CreateCookieContext().Object));
}
[Fact]
public void GetOverriddenUserAgentReturnsUserAgentFromRequestCookieIfNoResponseCookie()
{
// Arrange
CookieBrowserOverrideStore store = new CookieBrowserOverrideStore();
HttpCookie existingOverrideCookie = new HttpCookie(CookieBrowserOverrideStore.BrowserOverrideCookieName, "existingRequestAgent");
HttpContextBase context = CreateCookieContext(requestCookie: existingOverrideCookie).Object;
// Act & Assert
Assert.Equal("existingRequestAgent", store.GetOverriddenUserAgent(context));
}
[Fact]
public void SetOverriddenUserAgentWithNoExistingCookie()
{
// Arrange
CookieBrowserOverrideStore store = new CookieBrowserOverrideStore();
HttpContextBase context = CreateCookieContext().Object;
// Act
store.SetOverriddenUserAgent(context, "setUserAgent");
// Assert
Assert.Equal("setUserAgent", store.GetOverriddenUserAgent(context));
}
[Fact]
public void SetOverriddenUserWithExistingRequestCookie()
{
// Arrange
CookieBrowserOverrideStore store = new CookieBrowserOverrideStore();
HttpCookie existingOverrideCookie = new HttpCookie(CookieBrowserOverrideStore.BrowserOverrideCookieName, "existingRequestAgent");
HttpContextBase context = CreateCookieContext(requestCookie: existingOverrideCookie).Object;
// Act
store.SetOverriddenUserAgent(context, "setUserAgent");
// Assert
Assert.Equal("setUserAgent", store.GetOverriddenUserAgent(context));
}
[Fact]
public void SetOverriddenUserWithExistingResponseCookie()
{
// Arrange
CookieBrowserOverrideStore store = new CookieBrowserOverrideStore();
HttpContextBase context = CreateCookieContext().Object;
// Act & Assert
store.SetOverriddenUserAgent(context, "testUserAgent");
Assert.Equal("testUserAgent", store.GetOverriddenUserAgent(context));
store.SetOverriddenUserAgent(context, "subsequentTestUserAgent");
Assert.Equal("subsequentTestUserAgent", store.GetOverriddenUserAgent(context));
}
[Fact]
public void SetOverriddenUserAgentNullWithRequestCookie()
{
// Arrange
CookieBrowserOverrideStore store = new CookieBrowserOverrideStore();
HttpCookie existingOverrideCookie = new HttpCookie(CookieBrowserOverrideStore.BrowserOverrideCookieName, "setUserAgent");
HttpContextBase context = CreateCookieContext(requestCookie: existingOverrideCookie).Object;
// Act
store.SetOverriddenUserAgent(context, null);
// Assert
Assert.Null(store.GetOverriddenUserAgent(context));
}
[Fact]
public void SetOverriddenUserAgentNullWithNoExistingCookie()
{
// Arrange
CookieBrowserOverrideStore store = new CookieBrowserOverrideStore();
HttpContextBase context = CreateCookieContext().Object;
// Act
store.SetOverriddenUserAgent(context, null);
// Assert
Assert.Null(store.GetOverriddenUserAgent(context));
}
[Fact]
public void SetOverriddenUserAgentSetsExpiration()
{
// Arrange
CookieBrowserOverrideStore store = new CookieBrowserOverrideStore();
CookieBrowserOverrideStore sessionStore = new CookieBrowserOverrideStore(daysToExpire: 0);
CookieBrowserOverrideStore longTermStore = new CookieBrowserOverrideStore(daysToExpire: 100);
CookieBrowserOverrideStore negativeTermStore = new CookieBrowserOverrideStore(daysToExpire: -1);
HttpContextBase context = CreateCookieContext().Object;
// Act & Assert
store.SetOverriddenUserAgent(context, "testUserAgent");
Assert.True(DateTime.Now.AddDays(6.5) < context.Response.Cookies[CookieBrowserOverrideStore.BrowserOverrideCookieName].Expires &&
context.Response.Cookies[CookieBrowserOverrideStore.BrowserOverrideCookieName].Expires < DateTime.Now.AddDays(7.5));
sessionStore.SetOverriddenUserAgent(context, "testUserAgent");
Assert.True(context.Response.Cookies[CookieBrowserOverrideStore.BrowserOverrideCookieName].Expires < DateTime.Now);
longTermStore.SetOverriddenUserAgent(context, "testUserAgent");
Assert.True(context.Response.Cookies[CookieBrowserOverrideStore.BrowserOverrideCookieName].Expires > DateTime.Now.AddDays(99));
negativeTermStore.SetOverriddenUserAgent(context, "testUserAgent");
Assert.True(context.Response.Cookies[CookieBrowserOverrideStore.BrowserOverrideCookieName].Expires < DateTime.Now);
}
internal static Mock<HttpContextBase> CreateCookieContext(HttpCookie requestCookie = null, HttpCookie responseCookie = null)
{
Mock<HttpContextBase> context = new Mock<HttpContextBase>();
HttpCookieCollection requestCookies = new HttpCookieCollection();
if (requestCookie != null)
{
requestCookies.Add(requestCookie);
}
HttpCookieCollection responseCookies = new HttpCookieCollection();
if (responseCookie != null)
{
responseCookies.Add(responseCookie);
}
context.Setup(c => c.Request.Cookies).Returns(requestCookies);
context.Setup(c => c.Response.Cookies).Returns(responseCookies);
context.Setup(c => c.Items).Returns(new Hashtable());
return context;
}
}
}
|