/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Middleware/OutputCaching/test/OutputCachePoliciesTests.cs
297 строк
9 KB
github-actions[bot]
Update .NET SDK to 10.0.100-alpha.1.24560.6 (#58862)
18 ноя 2024, 23:34
Не верифицирован
18 ноя 2024, 23:34
3ed133d
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.OutputCaching.Policies; namespace Microsoft.AspNetCore.OutputCaching.Tests; public class OutputCachePoliciesTests { [Fact] public async Task DefaultCachePolicy_EnablesCache() { IOutputCachePolicy policy = DefaultPolicy.Instance; var context = TestUtils.CreateUninitializedContext(); await policy.CacheRequestAsync(context, default); Assert.True(context.EnableOutputCaching); } [Fact] public async Task DefaultCachePolicy_VariesByHost() { IOutputCachePolicy policy = DefaultPolicy.Instance; var context = TestUtils.CreateUninitializedContext(); await policy.CacheRequestAsync(context, default); Assert.True(context.CacheVaryByRules.VaryByHost); } [Fact] public async Task DefaultCachePolicy_AllowsLocking() { IOutputCachePolicy policy = DefaultPolicy.Instance; var context = TestUtils.CreateUninitializedContext(); await policy.CacheRequestAsync(context, default); Assert.True(context.AllowLocking); } [Fact] public async Task DefaultCachePolicy_VariesByStar() { IOutputCachePolicy policy = DefaultPolicy.Instance; var context = TestUtils.CreateUninitializedContext(); await policy.CacheRequestAsync(context, default); Assert.Equal("*", context.CacheVaryByRules.QueryKeys); } [Fact] public async Task EnableCachePolicy_DisablesCache() { IOutputCachePolicy policy = EnableCachePolicy.Disabled; var context = TestUtils.CreateUninitializedContext(); context.EnableOutputCaching = true; await policy.CacheRequestAsync(context, default); Assert.False(context.EnableOutputCaching); } [Fact] public async Task VaryByHostPolicy_Disabled_UpdatesCacheVaryByRule() { IOutputCachePolicy policy = VaryByHostPolicy.Disabled; var context = TestUtils.CreateUninitializedContext(); await policy.CacheRequestAsync(context, default); Assert.False(context.CacheVaryByRules.VaryByHost); } [Fact] public async Task ExpirationPolicy_SetsResponseExpirationTimeSpan() { var duration = TimeSpan.FromDays(1); IOutputCachePolicy policy = new ExpirationPolicy(duration); var context = TestUtils.CreateUninitializedContext(); await policy.CacheRequestAsync(context, default); Assert.Equal(duration, context.ResponseExpirationTimeSpan); } [Fact] public async Task LockingPolicy_EnablesLocking() { IOutputCachePolicy policy = LockingPolicy.Enabled; var context = TestUtils.CreateUninitializedContext(); await policy.CacheRequestAsync(context, default); Assert.True(context.AllowLocking); } [Fact] public async Task LockingPolicy_DisablesLocking() { IOutputCachePolicy policy = LockingPolicy.Disabled; var context = TestUtils.CreateUninitializedContext(); await policy.CacheRequestAsync(context, default); Assert.False(context.AllowLocking); } [Fact] public async Task NoLookupPolicy_DisablesLookup() { IOutputCachePolicy policy = NoLookupPolicy.Instance; var context = TestUtils.CreateUninitializedContext(); await policy.CacheRequestAsync(context, default); Assert.False(context.AllowCacheLookup); } [Fact] public async Task NoStorePolicy_DisablesStore() { IOutputCachePolicy policy = NoStorePolicy.Instance; var context = TestUtils.CreateUninitializedContext(); await policy.CacheRequestAsync(context, default); Assert.False(context.AllowCacheStorage); } [Theory] [InlineData(true, true, true)] [InlineData(true, false, false)] [InlineData(false, true, false)] [InlineData(false, false, false)] public async Task PredicatePolicy_Filters(bool filter, bool enabled, bool expected) { IOutputCachePolicy predicate = new PredicatePolicy(c => ValueTask.FromResult(filter), enabled ? EnableCachePolicy.Enabled : EnableCachePolicy.Disabled); var context = TestUtils.CreateUninitializedContext(); await predicate.CacheRequestAsync(context, default); Assert.Equal(expected, context.EnableOutputCaching); } [Fact] public async Task ProfilePolicy_UsesNamedProfile() { var options = new OutputCacheOptions(); options.AddPolicy("enabled", EnableCachePolicy.Enabled); options.AddPolicy("disabled", EnableCachePolicy.Disabled); var context = TestUtils.CreateUninitializedContext(options: options); IOutputCachePolicy policy = new NamedPolicy("enabled"); await policy.CacheRequestAsync(context, default); Assert.True(context.EnableOutputCaching); policy = new NamedPolicy("disabled"); await policy.CacheRequestAsync(context, default); Assert.False(context.EnableOutputCaching); } [Fact] public async Task TagsPolicy_Tags() { var context = TestUtils.CreateUninitializedContext(); IOutputCachePolicy policy = new TagsPolicy("tag1", "tag2"); await policy.CacheRequestAsync(context, default); Assert.Contains("tag1", context.Tags); Assert.Contains("tag2", context.Tags); } [Fact] public async Task VaryByHeadersPolicy_IsEmpty() { var context = TestUtils.CreateUninitializedContext(); IOutputCachePolicy policy = new VaryByHeaderPolicy(Array.Empty<string>()); await policy.CacheRequestAsync(context, default); Assert.Equal(0, context.CacheVaryByRules.HeaderNames.Count); } [Fact] public async Task VaryByHeadersPolicy_AddsSingleHeader() { var context = TestUtils.CreateUninitializedContext(); var header = "header"; IOutputCachePolicy policy = new VaryByHeaderPolicy(header); await policy.CacheRequestAsync(context, default); Assert.Equal(header, context.CacheVaryByRules.HeaderNames); } [Fact] public async Task VaryByHeadersPolicy_AddsMultipleHeaders() { var context = TestUtils.CreateUninitializedContext(); var headers = new[] { "header1", "header2" }; IOutputCachePolicy policy = new VaryByHeaderPolicy(headers); await policy.CacheRequestAsync(context, default); Assert.Equal(headers, context.CacheVaryByRules.HeaderNames.ToArray()); } [Fact] public async Task VaryByQueryPolicy_IsEmpty() { var context = TestUtils.CreateUninitializedContext(); IOutputCachePolicy policy = new VaryByQueryPolicy(Array.Empty<string>()); await policy.CacheRequestAsync(context, default); Assert.Equal(0, context.CacheVaryByRules.QueryKeys.Count); } [Fact] public async Task VaryByQueryPolicy_AddsSingleHeader() { var context = TestUtils.CreateUninitializedContext(); var query = "query"; IOutputCachePolicy policy = new VaryByQueryPolicy(query); await policy.CacheRequestAsync(context, default); Assert.Equal(query, context.CacheVaryByRules.QueryKeys); } [Fact] public async Task VaryByQueryPolicy_AddsMultipleHeaders() { var context = TestUtils.CreateUninitializedContext(); var queries = new[] { "query1", "query2" }; IOutputCachePolicy policy = new VaryByQueryPolicy("query1", "query2"); await policy.CacheRequestAsync(context, default); Assert.Equal(queries, context.CacheVaryByRules.QueryKeys.ToArray()); } [Fact] public async Task VaryByQueryPolicy_AddsMultipleHeadersArray() { var context = TestUtils.CreateUninitializedContext(); var queries = new[] { "query1", "query2" }; IOutputCachePolicy policy = new VaryByQueryPolicy(queries); await policy.CacheRequestAsync(context, default); Assert.Equal(queries, context.CacheVaryByRules.QueryKeys.ToArray()); } [Fact] public async Task VaryByKeyPrefixPolicy_AddsKeyPrefix() { var context = TestUtils.CreateUninitializedContext(); var value = "value"; IOutputCachePolicy policy = new SetCacheKeyPrefixPolicy((context, cancellationToken) => ValueTask.FromResult(value)); await policy.CacheRequestAsync(context, default); Assert.Equal(value, context.CacheVaryByRules.CacheKeyPrefix); } [Fact] public async Task VaryByValuePolicy_KeyValuePair() { var context = TestUtils.CreateUninitializedContext(); var key = "key"; var value = "value"; IOutputCachePolicy policy = new VaryByValuePolicy((context, CancellationToken) => ValueTask.FromResult(new KeyValuePair<string, string>(key, value))); await policy.CacheRequestAsync(context, default); Assert.Contains(new KeyValuePair<string, string>(key, value), context.CacheVaryByRules.VaryByValues); } }