Skip to content

Merge pull request #5 from Kros-sk/invalidation #4

Merge pull request #5 from Kros-sk/invalidation

Merge pull request #5 from Kros-sk/invalidation #4

GitHub Actions / Unit Tests succeeded Apr 18, 2024 in 1s

141 passed, 0 failed and 0 skipped

Tests passed successfully

✅ TestResults/_fv-az1215-32_2024-04-18_09_16_31.trx

141 tests were completed in 1s with 141 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Kros.Ocelot.ETagCaching.Test.ETagCacheContextShould 1✅ 237ms
Kros.Ocelot.ETagCaching.Test.ETagCachePolicyBuilderShould 4✅ 51ms
Kros.Ocelot.ETagCaching.Test.ETagCachingIntegrationTests 7✅ 451ms
Kros.Ocelot.ETagCaching.Test.ETagCachingMiddlewareShould 17✅ 142ms
Kros.Ocelot.ETagCaching.Test.ETagCachingOptionsShould 2✅ 12ms
Kros.Ocelot.ETagCaching.Test.OcelotPipelineConfigurationExtensionShould 1✅ 141ms
Kros.Ocelot.ETagCaching.Test.Policies.ArchTests 1✅ 28ms
Kros.Ocelot.ETagCaching.Test.Policies.CacheControlPolicyShould 3✅ 4ms
Kros.Ocelot.ETagCaching.Test.Policies.CacheEntryEstraPropsPolicyShould 4✅ 70ms
Kros.Ocelot.ETagCaching.Test.Policies.CacheKeyPolicyShould 3✅ 6ms
Kros.Ocelot.ETagCaching.Test.Policies.CompositePolicyShould 1✅ 45ms
Kros.Ocelot.ETagCaching.Test.Policies.DefaultPolicyShould 78✅ 23ms
Kros.Ocelot.ETagCaching.Test.Policies.EmptyPolicyShould 3✅ 9ms
Kros.Ocelot.ETagCaching.Test.Policies.ETagPolicyShould 3✅ 8ms
Kros.Ocelot.ETagCaching.Test.Policies.ExpirationPolicyShould 3✅ 6ms
Kros.Ocelot.ETagCaching.Test.Policies.StatusCodePolicyShould 3✅ 7ms
Kros.Ocelot.ETagCaching.Test.Policies.TagTemplatesPolicyShould 3✅ 117ms
Kros.Ocelot.ETagCaching.Test.PublicApiTests 1✅ 236ms
Kros.Ocelot.ETagCaching.Test.ServiceCollectionExtensionsShould 3✅ 11ms

✅ Kros.Ocelot.ETagCaching.Test.ETagCacheContextShould

✅ OverrideToString

✅ Kros.Ocelot.ETagCaching.Test.ETagCachePolicyBuilderShould

✅ BuildCustomPolicy
✅ BuildDefaultPolicy
✅ BuildEmptyPolicyIfNotDefaultPolicyIsAlowed
✅ BuildPolicy

✅ Kros.Ocelot.ETagCaching.Test.ETagCachingIntegrationTests

✅ EndpointWithCachePolicyShouldNotReturnETagHeader
✅ EndpointWithCachePolicyShouldReturn200OK_WhenETagIsInvalid
✅ EndpointWithCachePolicyShouldReturn200OK_WhenIfNoneMatchHeaderIsNotPresent
✅ EndpointWithCachePolicyShouldReturn200OK_WhenResourceIsCreated
✅ EndpointWithCachePolicyShouldReturn304NotModified_WhenETagIsValid
✅ EndpointWithCachePolicyShouldReturnDownstreamData_WhenIfNoneMatchHeaderIsNotPresent
✅ EndpointWithCachePolicyShouldReturnETagHeader

✅ Kros.Ocelot.ETagCaching.Test.ETagCachingMiddlewareShould

✅ AddCacheFeatureToContextFeatures
✅ AddCacheHeadersToResponse
✅ CacheDownstreamResponseBeforeServingNotModifiedResponse
✅ CacheDownstreamResponseIfPolicyAllowsIt
✅ CallNextMiddlewareWhenPolicyAllowsCachingAndNeedDownstreamResponse
✅ CallNextMiddlewareWhenPolicyDoesNotAllowCaching
✅ CallNextMiddlewareWhenPolicyIsNotSetForDownstreamRoute
✅ DoNotCacheIfPolicyDoesNotAllowIt
✅ DoNotCacheIfPolicyIsNotSetForDownstreamRoute
✅ DoNotCallNextMiddlewareWhenNotModifiedResponseIsServed
✅ DoNotServeNotModifiedResponseIfPolicyDoesNotAllowIt
✅ DoNotServeNotModifiedResponseIfRequestIsModified
✅ InvalidateCacheIfIsConfigured
✅ LoginformationsWhenServeFromCache
✅ LoginformationsWhenServeNotModified
✅ ServeCacheHeadersIfPolicyAllowsIt
✅ ServeNotModifiedResponseIfPolicyAllowsItAndRequestIsNotModified

✅ Kros.Ocelot.ETagCaching.Test.ETagCachingOptionsShould

✅ ThrowExceptionIfNameIsEmptyOrWhiteSpace(name: " ")
✅ ThrowExceptionIfNameIsEmptyOrWhiteSpace(name: "")

✅ Kros.Ocelot.ETagCaching.Test.OcelotPipelineConfigurationExtensionShould

✅ SetsPreQueryStringBuilderMiddleware

✅ Kros.Ocelot.ETagCaching.Test.Policies.ArchTests

✅ PoliciesNamespaceClassesShouldBeInternal

✅ Kros.Ocelot.ETagCaching.Test.Policies.CacheControlPolicyShould

✅ AddCacheControlHeaderToResponse_WhenServeDownstreamResponseAsyncWasCall
✅ AddCacheControlHeaderToResponse_WhenServeNotModifiedAsyncWasCall
✅ NotChangeContextState_WhenCacheETagAsyncWasCall

✅ Kros.Ocelot.ETagCaching.Test.Policies.CacheEntryEstraPropsPolicyShould

✅ AddExtraPropsToCacheEntry
✅ AddMultipleExtraPropsToCacheEntry
✅ NotChangeContextState_WhenServeDownstreamResponseAsyncWasCall
✅ NotChangeContextState_WhenServeNotModifiedAsyncWasCall

✅ Kros.Ocelot.ETagCaching.Test.Policies.CacheKeyPolicyShould

✅ CreateCacheKeyInContext_WhenCacheETagAsyncWasCall
✅ NotChangeContextState_WhenServeDownstreamResponseAsyncWasCall
✅ NotChangeContextState_WhenServeNotModifiedAsyncWasCall

✅ Kros.Ocelot.ETagCaching.Test.Policies.CompositePolicyShould

✅ CombineMultiplePoliciesIntoOne

✅ Kros.Ocelot.ETagCaching.Test.Policies.DefaultPolicyShould

✅ AllowCacheResponseFor200StatusCode
✅ AllowCacheResponseForGetMethod(httpMethod: "DELETE", allowed: False)
✅ AllowCacheResponseForGetMethod(httpMethod: "GET", allowed: True)
✅ AllowCacheResponseForGetMethod(httpMethod: "HEAD", allowed: False)
✅ AllowCacheResponseForGetMethod(httpMethod: "OPTIONS", allowed: False)
✅ AllowCacheResponseForGetMethod(httpMethod: "PATCH", allowed: False)
✅ AllowCacheResponseForGetMethod(httpMethod: "POST", allowed: False)
✅ AllowCacheResponseForGetMethod(httpMethod: "PUT", allowed: False)
✅ AllowServeFromCacheWhenIfNoneMatchHeaderIsPresent
✅ DisableCacheIfNoCacheHeaderIsPresent
✅ DisallowServeFromCacheWhenIfNoneMatchHeaderIsNotPresent
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: Accepted)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: AlreadyReported)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: BadGateway)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: BadRequest)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: Conflict)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: Continue)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: Created)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: EarlyHints)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: ExpectationFailed)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: FailedDependency)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: Forbidden)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: Found)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: GatewayTimeout)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: Gone)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: HttpVersionNotSupported)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: IMUsed)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: InsufficientStorage)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: InternalServerError)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: LengthRequired)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: Locked)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: LoopDetected)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: MethodNotAllowed)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: MisdirectedRequest)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: MovedPermanently)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: MultipleChoices)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: MultiStatus)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: NetworkAuthenticationRequired)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: NoContent)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: NonAuthoritativeInformation)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: NotAcceptable)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: NotExtended)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: NotFound)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: NotImplemented)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: NotModified)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: PartialContent)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: PaymentRequired)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: PermanentRedirect)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: PreconditionFailed)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: PreconditionRequired)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: Processing)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: ProxyAuthenticationRequired)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: RedirectKeepVerb)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: RequestedRangeNotSatisfiable)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: RequestEntityTooLarge)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: RequestHeaderFieldsTooLarge)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: RequestTimeout)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: RequestUriTooLong)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: ResetContent)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: SeeOther)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: ServiceUnavailable)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: SwitchingProtocols)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: TooManyRequests)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: Unauthorized)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: UnavailableForLegalReasons)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: UnprocessableEntity)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: UnsupportedMediaType)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: Unused)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: UpgradeRequired)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: UseProxy)
✅ DoNotAllowCacheResponseForNon200StatusCode(statusCode: VariantAlsoNegotiates)
✅ DoNotAllowCacheResponseForNoStoreHeader
✅ EnableETagCache
✅ SetCachedResponseHeadersWhenCacheValue
✅ SetCacheKey
✅ SetDefaultExpirationTime
✅ SetResponseHeadersWhenCacheValue
✅ SetStatusCodeNotModifiedIfServeFromCache

✅ Kros.Ocelot.ETagCaching.Test.Policies.EmptyPolicyShould

✅ NotChangeContextState_WhenCacheETagAsyncWasCall
✅ NotChangeContextState_WhenServeDownstreamResponseAsyncWasCall
✅ NotChangeContextState_WhenServeNotModifiedAsyncWasCall

✅ Kros.Ocelot.ETagCaching.Test.Policies.ETagPolicyShould

✅ GenerateETag
✅ NotChangeContextState_WhenServeDownstreamResponseAsyncWasCall
✅ NotChangeContextState_WhenServeNotModifiedAsyncWasCall

✅ Kros.Ocelot.ETagCaching.Test.Policies.ExpirationPolicyShould

✅ NotChangeContextState_WhenServeDownstreamResponseAsyncWasCall
✅ NotChangeContextState_WhenServeNotModifiedAsyncWasCall
✅ SetExpirationTimeToContext

✅ Kros.Ocelot.ETagCaching.Test.Policies.StatusCodePolicyShould

✅ NotChangeContextState_WhenCacheETagAsyncWasCall
✅ NotChangeContextState_WhenServeDownstreamResponseAsyncWasCall
✅ ReturnStatusCode_WhenServeNotModifiedAsyncWasCall

✅ Kros.Ocelot.ETagCaching.Test.Policies.TagTemplatesPolicyShould

✅ AddTagsToContext
✅ NotChangeContextState_WhenServeDownstreamResponseAsyncWasCall
✅ NotChangeContextState_WhenServeNotModifiedAsyncWasCall

✅ Kros.Ocelot.ETagCaching.Test.PublicApiTests

✅ Assembly_Has_No_Public_Api_Changes

✅ Kros.Ocelot.ETagCaching.Test.ServiceCollectionExtensionsShould

✅ AddETagCaching
✅ AddETagCachingWithoutDefaultPolicy
✅ ThrowExceptionWhenPolicyWithTheSameNameIsAdded