VanguardReMaster/server/tests/Vanguard.Server.Tests/GameTicketServiceTests.cs

52 lines
1.4 KiB
C#

using Vanguard.Server.Tickets;
namespace Vanguard.Server.Tests;
public class GameTicketServiceTests
{
[Fact]
public void Ticket_Is_Redeemed_Only_Once()
{
var time = new FakeTimeProvider(DateTimeOffset.UnixEpoch);
var service = new GameTicketService(ServerTestData.SmallOptions(), time);
var ticket = service.Issue("p1", "m1", 0);
var first = service.Redeem(ticket.Token);
var second = service.Redeem(ticket.Token);
Assert.NotNull(first);
Assert.Equal("p1", first!.PlayerId);
Assert.Equal("m1", first.MatchId);
Assert.Equal(0, first.Seat);
Assert.Null(second);
}
[Fact]
public void Ticket_Expires_After_Ttl()
{
var time = new FakeTimeProvider(DateTimeOffset.UnixEpoch);
var options = ServerTestData.SmallOptions();
options.TicketTtlSeconds = 60;
var service = new GameTicketService(options, time);
var ticket = service.Issue("p1", "m1", 1);
time.Advance(TimeSpan.FromSeconds(61));
Assert.Null(service.Redeem(ticket.Token));
}
[Fact]
public void Unknown_Token_Is_Rejected()
{
var service = new GameTicketService(
ServerTestData.SmallOptions(),
new FakeTimeProvider(DateTimeOffset.UnixEpoch));
Assert.Null(service.Redeem(null));
Assert.Null(service.Redeem(""));
Assert.Null(service.Redeem("no-such-ticket"));
}
}