ProjectLighthouse/ProjectLighthouse.Tests/Unit/TicketTests.cs
Josh 2f11731a8e
Refactor NpTicket parser and add NpTicket signature documentation (#784)
* Refactor NpTicket parser and add NpTicket signature documentation

* Update TickerBuilder chaining style

* Fix SectionHeader position returning wrong value

* Don't attempt to parse ticket if it is less than 8 bytes
2023-06-07 05:16:29 +00:00

48 lines
No EOL
1.5 KiB
C#

using LBPUnion.ProjectLighthouse.Tickets;
using LBPUnion.ProjectLighthouse.Tickets.Signature;
using LBPUnion.ProjectLighthouse.Types.Users;
using Xunit;
namespace LBPUnion.ProjectLighthouse.Tests.Unit;
[Trait("Category", "Unit")]
public class TicketTests
{
[Fact]
public void CanReadTicket()
{
TicketBuilder builder = new TicketBuilder()
.SetCountry("br")
.SetUserId(21)
.SetDomain("us")
.SetStatus(0)
.SetIssuerId(0x74657374)
.setExpirationTime(ulong.MaxValue)
.SetUsername("unittest")
.SetIssueTime(0)
.SetTitleId("UP9000-BCUS98245_00");
byte[] ticketData = builder.Build();
NPTicket? ticket = NPTicket.CreateFromBytes(ticketData);
Assert.NotNull(ticket);
Assert.Equal((ulong)0, ticket.IssueTime);
Assert.Equal(ulong.MaxValue, ticket.ExpireTime);
Assert.Equal("unittest", ticket.Username);
Assert.Equal(GameVersion.LittleBigPlanet2, ticket.GameVersion);
Assert.Equal((ulong)0x74657374, ticket.IssuerId);
Assert.Equal((ulong)21, ticket.UserId);
}
[Fact]
public void CanVerifyTicketSignature()
{
TicketBuilder builder = new();
byte[] ticketData = builder.Build();
NPTicket? ticket = NPTicket.CreateFromBytes(ticketData);
Assert.NotNull(ticket);
Assert.True(new UnitTestSignatureVerifier(ticket).ValidateSignature());
}
}