63 lines
2.2 KiB
C#
63 lines
2.2 KiB
C#
using Omika.Core.Observability.External;
|
|
|
|
namespace Omika.Tests.Observability.External;
|
|
|
|
/// <summary>Garde-fous de cardinalité des métriques externes (§36/§37).</summary>
|
|
public class ExternalCardinalityTests
|
|
{
|
|
[Theory]
|
|
[InlineData("component")]
|
|
[InlineData("status_class")]
|
|
[InlineData("method")]
|
|
[InlineData("route_template")]
|
|
[InlineData("event_priority")]
|
|
[InlineData("level")]
|
|
[InlineData("result")]
|
|
public void MetricLabels_AllowLowCardinality(string key)
|
|
{
|
|
Assert.True(ExternalAttributePolicy.IsAllowedMetricLabel(key));
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("traceid")]
|
|
[InlineData("trace_id")]
|
|
[InlineData("sessionid")]
|
|
[InlineData("eventid")]
|
|
[InlineData("operationid")]
|
|
[InlineData("userid")]
|
|
[InlineData("clientid")]
|
|
[InlineData("collaborateurid")]
|
|
[InlineData("email")]
|
|
[InlineData("url")]
|
|
public void MetricLabels_RejectHighCardinality(string key)
|
|
{
|
|
Assert.False(ExternalAttributePolicy.IsAllowedMetricLabel(key));
|
|
Assert.True(ExternalAttributePolicy.IsForbiddenMetricLabel(key));
|
|
}
|
|
|
|
[Fact]
|
|
public void ForbiddenMetricLabel_DetectsSubstringCaseInsensitive()
|
|
{
|
|
Assert.True(ExternalAttributePolicy.IsForbiddenMetricLabel("SessionId"));
|
|
Assert.True(ExternalAttributePolicy.IsForbiddenMetricLabel("some_OperationId_suffix"));
|
|
Assert.False(ExternalAttributePolicy.IsForbiddenMetricLabel("component"));
|
|
}
|
|
|
|
[Fact]
|
|
public void LogAttributes_RejectForbiddenKeys()
|
|
{
|
|
Assert.False(ExternalAttributePolicy.IsAllowedLogAttribute("password"));
|
|
Assert.False(ExternalAttributePolicy.IsAllowedLogAttribute("Authorization"));
|
|
Assert.False(ExternalAttributePolicy.IsAllowedLogAttribute("connectionString"));
|
|
Assert.True(ExternalAttributePolicy.IsAllowedLogAttribute("route_template"));
|
|
}
|
|
|
|
[Fact]
|
|
public void ForbiddenValues_AreDetected()
|
|
{
|
|
Assert.True(ExternalAttributePolicy.ContainsForbiddenValue("Bearer token abc"));
|
|
Assert.True(ExternalAttributePolicy.ContainsForbiddenValue("password=123"));
|
|
Assert.False(ExternalAttributePolicy.ContainsForbiddenValue("une valeur ordinaire"));
|
|
}
|
|
}
|