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