Files
Ludarium release export df869819ce
Public source validation / source (push) Successful in 2m16s
Publish Ludarium source
2026-09-03 02:08:58 +02:00

55 lines
2.1 KiB
C#

namespace Ludarium.E2E;
public sealed class AdminTokenPolicyTests
{
[Theory]
[InlineData(null, false)]
[InlineData("", false)]
[InlineData("change-me-to-a-longer-placeholder-token", false)]
[InlineData("0123456789abcdef0123456789abcdef", true)]
public void ProductionTokenConfigurationMustBeLongAndNonPlaceholder(string? token, bool expected)
{
Assert.Equal(expected, AdminTokenPolicy.IsAcceptableConfiguration(token));
}
[Theory]
[InlineData("Bearer release-candidate-secret")]
[InlineData("bearer release-candidate-secret")]
public void ExactBearerTokenIsAccepted(string header)
{
Assert.True(AdminTokenPolicy.Authorizes(header, "release-candidate-secret"));
}
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData("release-candidate-secret")]
[InlineData("Basic release-candidate-secret")]
[InlineData("Bearer release-candidate-secret ")]
[InlineData("Bearer release-candidate-secreu")]
[InlineData("Bearer release-candidate-secret, Bearer second")]
public void MissingMalformedAndDifferentTokensAreRejected(string? header)
{
Assert.False(AdminTokenPolicy.Authorizes(header, "release-candidate-secret"));
}
[Theory]
[InlineData("/api/v1/play-sessions/00000000-0000-0000-0000-000000000001/content")]
[InlineData("/api/v1/play-sessions/00000000-0000-0000-0000-000000000001/firmware")]
[InlineData("/api/v1/play-sessions/00000000-0000-0000-0000-000000000001/cheats")]
[InlineData("/api/v1/play-sessions/00000000-0000-0000-0000-000000000001/data/Save")]
public void SessionTokenReadRoutesBypassOnlyTheGlobalAdminToken(string path)
{
Assert.True(AdminTokenPolicy.IsScopedPlayerRead(path));
}
[Theory]
[InlineData("/api/v1/play-sessions/00000000-0000-0000-0000-000000000001")]
[InlineData("/api/v1/play-sessions/00000000-0000-0000-0000-000000000001/cheats/extra")]
[InlineData("/api/v1/games/00000000-0000-0000-0000-000000000001/play-sessions")]
public void OtherPlayerRoutesStillRequireTheAdminToken(string path)
{
Assert.False(AdminTokenPolicy.IsScopedPlayerRead(path));
}
}