public void TestCookieIsWrittenAndRemovedCorrectly(WriteCookieTestParameters parameters) { var response = new Mock <IResponse>(); var cacheControlHeaderWriter = new Mock <ICacheControlHeaderWriter>(); var request = MockRequest(parameters); var sessionData = parameters.HasSessionData ? NonEmptySessionData : EmptySessionData; var expectedCookie = ExpectedCookie(parameters); var cookieWriter = new CookieWriter(CookieSettings, cacheControlHeaderWriter.Object); cookieWriter.WriteCookie( request.Object, response.Object, new RawSession(parameters.State, sessionData), Expiration); if (expectedCookie is { } cookie) { response.Verify(r => r.SetCookie(cookie)); cacheControlHeaderWriter.Verify(w => w.AddCacheControlHeaders(response.Object)); } response.VerifyNoOtherCalls(); cacheControlHeaderWriter.VerifyNoOtherCalls(); }
private static Cookie?ExpectedCookie(WriteCookieTestParameters parameters) { return(parameters.ExpectedAction switch { Action.SetCookie => Cookie, Action.RemoveCookie => UnsetCookie, _ => null, });
private static Mock <IRequest> MockRequest(WriteCookieTestParameters parameters) { var request = new Mock <IRequest>(); request .Setup(r => r.HasCookie(CookieName)) .Returns(parameters.CookieWasSetInRequest); return(request); }