55 lines
2.1 KiB
C#
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));
|
|
}
|
|
}
|