public CookieTempDataProvider( IDataProtectionProvider dataProtectionProvider, ILoggerFactory loggerFactory, IOptions <CookieTempDataProviderOptions> options) { _dataProtector = dataProtectionProvider.CreateProtector(Purpose); _logger = loggerFactory.CreateLogger <CookieTempDataProvider>(); _tempDataSerializer = new TempDataSerializer(); _chunkingCookieManager = new ChunkingCookieManager(); _options = options.Value; }
public void SaveTempData_HonorsCookieSecurePolicy_OnOptions( bool isRequestSecure, CookieSecurePolicy cookieSecurePolicy, bool expectedSecureFlag) { // Arrange var values = new Dictionary <string, object>(); values.Add("int", 10); var tempDataProviderStore = new TempDataSerializer(); var expectedDataToProtect = tempDataProviderStore.Serialize(values); var expectedDataInCookie = WebEncoders.Base64UrlEncode(expectedDataToProtect); var dataProtector = new PassThroughDataProtector(); var options = new CookieTempDataProviderOptions(); options.Cookie.SecurePolicy = cookieSecurePolicy; var tempDataProvider = GetProvider(dataProtector, options); var responseCookies = new MockResponseCookieCollection(); var httpContext = new Mock <HttpContext>(); httpContext .SetupGet(hc => hc.Request.PathBase) .Returns("/"); httpContext .SetupGet(hc => hc.Request.IsHttps) .Returns(isRequestSecure); httpContext .Setup(hc => hc.Response.Cookies) .Returns(responseCookies); // Act tempDataProvider.SaveTempData(httpContext.Object, values); // Assert Assert.Equal(1, responseCookies.Count); var cookieInfo = responseCookies[CookieTempDataProvider.CookieName]; Assert.NotNull(cookieInfo); Assert.Equal(expectedDataInCookie, cookieInfo.Value); Assert.Equal(expectedDataToProtect, dataProtector.PlainTextToProtect); Assert.Equal("/", cookieInfo.Options.Path); Assert.Equal(expectedSecureFlag, cookieInfo.Options.Secure); Assert.True(cookieInfo.Options.HttpOnly); Assert.Null(cookieInfo.Options.Expires); Assert.Null(cookieInfo.Options.Domain); }
private CookieTempDataProvider GetProvider(IDataProtector dataProtector = null, CookieTempDataProviderOptions options = null) { if (dataProtector == null) { dataProtector = new PassThroughDataProtector(); } if (options == null) { options = new CookieTempDataProviderOptions(); } var testOptions = new Mock <IOptions <CookieTempDataProviderOptions> >(); testOptions.SetupGet(o => o.Value).Returns(options); return(new CookieTempDataProvider(new PassThroughDataProtectionProvider(dataProtector), NullLoggerFactory.Instance, testOptions.Object)); }
public CompositeTempDataProvider( IDataProtectionProvider dataProtectionProvider, IOptions <CookieTempDataProviderOptions> options, TempDataSerializer tempDataSerializer, ILoggerFactory loggerFactory) { _dataProtector = dataProtectionProvider.CreateProtector(Purpose); _tempDataSerializer = tempDataSerializer; _chunkingCookieManager = new ChunkingCookieManager(); _logger = loggerFactory.CreateLogger <CookieTempDataProvider>(); _options = options.Value; _cookieName = options.Value.Cookie.Name; _tempDataCookieLoadFailure = LoggerMessage.Define <string>( LogLevel.Warning, new EventId(3, "TempDataCookieLoadFailure"), "The temp data cookie {CookieName} could not be loaded."); }