public async void SelectorResultNullWhenNoQueryParameterOrCookie() { // Arrange var queryCollection = new QueryCollection(); // No Query Parameter var requestCookies = new RequestCookies(); // No Cookie var responseCookies = new ResponseCookies(); var mockContext = new Mock <HttpContext>(); mockContext.Setup(p => p.User.IsInRole(SwitcherooThemeSelector.RequiredRole)).Returns(true); mockContext.SetupGet(p => p.Request.Query).Returns(queryCollection); mockContext.SetupGet(p => p.Request.Cookies).Returns(requestCookies); mockContext.SetupGet(p => p.Response.Cookies).Returns(responseCookies); var mockContextAccessor = new Mock <IHttpContextAccessor>(); mockContextAccessor.SetupGet(p => p.HttpContext).Returns(mockContext.Object); var mockThemeService = new Mock <ISiteThemeService>(); mockThemeService.Setup(p => p.GetCurrentThemeNameAsync()).ReturnsAsync(CurrentActiveTheme); IThemeSelector selector = new SwitcherooThemeSelector(mockThemeService.Object, mockContextAccessor.Object); // Act var result = await selector.GetThemeAsync(); // Assert Assert.Null(result); Assert.Empty(responseCookies.Cookies); }
public async void OnlyRequiredRoleCanChangeTheme(string userRole) { // Arrange const string selectedThemeName = "TheAgencyTheme"; var queryCollection = new QueryCollection(new Dictionary <string, StringValues> { { SwitcherooThemeSelector.QueryStringKey, new StringValues(selectedThemeName) } }); var requestCookies = new RequestCookies(); var responseCookies = new ResponseCookies(); var mockContext = new Mock <HttpContext>(); mockContext.Setup(p => p.User.IsInRole(userRole)) .Returns((string p) => p.Equals(SwitcherooThemeSelector.RequiredRole)); mockContext.SetupGet(p => p.Request.Query).Returns(queryCollection); mockContext.SetupGet(p => p.Request.Cookies).Returns(requestCookies); mockContext.SetupGet(p => p.Response.Cookies).Returns(responseCookies); var mockContextAccessor = new Mock <IHttpContextAccessor>(); mockContextAccessor.SetupGet(p => p.HttpContext).Returns(mockContext.Object); var mockThemeService = new Mock <ISiteThemeService>(); mockThemeService.Setup(p => p.GetCurrentThemeNameAsync()).ReturnsAsync(CurrentActiveTheme); IThemeSelector selector = new SwitcherooThemeSelector(mockThemeService.Object, mockContextAccessor.Object); // Act var result = await selector.GetThemeAsync(); // Assert if (userRole.Equals(SwitcherooThemeSelector.RequiredRole)) { Assert.NotNull(result); Assert.Equal(selectedThemeName, result.ThemeName); Assert.Equal(SwitcherooThemeSelector.Priority, result.Priority); Assert.Single(responseCookies.Cookies); Assert.Equal(SwitcherooThemeSelector.CookieName, responseCookies.Cookies.First().Key); Assert.Equal(selectedThemeName, responseCookies.Cookies.First().Value); } else { Assert.Null(result); Assert.Empty(responseCookies.Cookies); } }
public async void QueryTakesPrecedenceOverCookie(string selectedThemeName) { // Arrange var queryCollection = new QueryCollection(new Dictionary <string, StringValues> { { SwitcherooThemeSelector.QueryStringKey, new StringValues(selectedThemeName) } }); var requestCookies = new RequestCookies(new Dictionary <string, string> { { SwitcherooThemeSelector.CookieName, "AnyThemeName" } }); var responseCookies = new ResponseCookies(); var mockContext = new Mock <HttpContext>(); mockContext.Setup(p => p.User.IsInRole(SwitcherooThemeSelector.RequiredRole)).Returns(true); mockContext.SetupGet(p => p.Request.Query).Returns(queryCollection); mockContext.SetupGet(p => p.Request.Cookies).Returns(requestCookies); mockContext.SetupGet(p => p.Response.Cookies).Returns(responseCookies); var mockContextAccessor = new Mock <IHttpContextAccessor>(); mockContextAccessor.SetupGet(p => p.HttpContext).Returns(mockContext.Object); var mockThemeService = new Mock <ISiteThemeService>(); mockThemeService.Setup(p => p.GetCurrentThemeNameAsync()).ReturnsAsync(CurrentActiveTheme); IThemeSelector selector = new SwitcherooThemeSelector(mockThemeService.Object, mockContextAccessor.Object); // Act var result = await selector.GetThemeAsync(); // Assert Assert.NotNull(result); Assert.Equal(selectedThemeName, result.ThemeName); Assert.Equal(SwitcherooThemeSelector.Priority, result.Priority); Assert.Single(responseCookies.Cookies); Assert.Equal(SwitcherooThemeSelector.CookieName, responseCookies.Cookies.First().Key); Assert.Equal(selectedThemeName, responseCookies.Cookies.First().Value); }