52 lines
1.4 KiB
C#
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"));
|
|
}
|
|
}
|