public static MockHttpResponseMessage WithCacheHeader(this MockHttpResponseMessage response, string publicity = "public", DateTimeOffset?expires = null, DateTimeOffset?lastModified = null, string etag = null, TimeSpan?maxAge = null)
        {
            response.Headers.CacheControl = response.Headers.CacheControl ?? new CacheControlHeaderValue();

            if (publicity == "public")
            {
                response.WithPublicCacheHeader();
            }
            else
            {
                response.WithPrivateCacheHeader();
            }


            if (maxAge != null)
            {
                response.WithMaxAge(maxAge.Value);
            }


            if (response.Content != null)
            {
                response.Content.Headers.LastModified = lastModified ?? DateTimeOffset.UtcNow;
            }

            response.WithEtag(etag);

            return(response);
        }
        public static MockHttpResponseMessage WithExpiration(this MockHttpResponseMessage response, DateTimeOffset expiration)
        {
            var exp = expiration.ToUniversalTime();

            response.WithMaxAge(exp - DateTimeOffset.UtcNow);

            if (response.Content != null)
            {
                response.Content.Headers.Expires = exp;
            }

            return(response);
        }