55 lines
2.1 KiB
C#
55 lines
2.1 KiB
C#
using MxGateway.Contracts.Proto;
|
|
using MxGateway.Server.Security.Authorization;
|
|
|
|
namespace MxGateway.Tests.Security.Authorization;
|
|
|
|
public sealed class GatewayGrpcScopeResolverTests
|
|
{
|
|
[Theory]
|
|
[InlineData(typeof(OpenSessionRequest), GatewayScopes.SessionOpen)]
|
|
[InlineData(typeof(CloseSessionRequest), GatewayScopes.SessionClose)]
|
|
[InlineData(typeof(StreamEventsRequest), GatewayScopes.EventsRead)]
|
|
public void ResolveRequiredScope_KnownRpcRequest_ReturnsExpectedScope(
|
|
Type requestType,
|
|
string expectedScope)
|
|
{
|
|
GatewayGrpcScopeResolver resolver = new();
|
|
object request = Activator.CreateInstance(requestType)!;
|
|
|
|
string scope = resolver.ResolveRequiredScope(request);
|
|
|
|
Assert.Equal(expectedScope, scope);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(MxCommandKind.Register, GatewayScopes.InvokeRead)]
|
|
[InlineData(MxCommandKind.AddItem, GatewayScopes.InvokeRead)]
|
|
[InlineData(MxCommandKind.Advise, GatewayScopes.InvokeRead)]
|
|
[InlineData(MxCommandKind.Write, GatewayScopes.InvokeWrite)]
|
|
[InlineData(MxCommandKind.Write2, GatewayScopes.InvokeWrite)]
|
|
[InlineData(MxCommandKind.WriteSecured, GatewayScopes.InvokeSecure)]
|
|
[InlineData(MxCommandKind.WriteSecured2, GatewayScopes.InvokeSecure)]
|
|
[InlineData(MxCommandKind.AuthenticateUser, GatewayScopes.InvokeSecure)]
|
|
[InlineData(MxCommandKind.ArchestraUserToId, GatewayScopes.MetadataRead)]
|
|
[InlineData(MxCommandKind.GetSessionState, GatewayScopes.MetadataRead)]
|
|
[InlineData(MxCommandKind.GetWorkerInfo, GatewayScopes.MetadataRead)]
|
|
[InlineData(MxCommandKind.DrainEvents, GatewayScopes.EventsRead)]
|
|
[InlineData(MxCommandKind.ShutdownWorker, GatewayScopes.Admin)]
|
|
public void ResolveRequiredScope_InvokeCommand_ReturnsExpectedScope(
|
|
MxCommandKind commandKind,
|
|
string expectedScope)
|
|
{
|
|
GatewayGrpcScopeResolver resolver = new();
|
|
|
|
string scope = resolver.ResolveRequiredScope(new MxCommandRequest
|
|
{
|
|
Command = new MxCommand
|
|
{
|
|
Kind = commandKind
|
|
}
|
|
});
|
|
|
|
Assert.Equal(expectedScope, scope);
|
|
}
|
|
}
|