DiscordApi/Discord.API.Tests/JsonTests.cs

149 lines
4.7 KiB
C#

using System.Text.Json;
namespace Discord.API.Tests;
using Xunit;
using Discord.API;
public class JsonTests
{
[Fact]
public void GatewayPacketEncodeJsonTest()
{
var gateway_packet = new GatewayPacket()
{
Op = GatewayPacket.Opcode.Heartbeat
};
string json = JsonSerializer.Serialize(gateway_packet, SourceGenerationContext.Default.GatewayPacket);
Assert.Equal("""{"op":1}""", json);
}
[Fact]
public void GatewayPacketDecodeTest()
{
const string src = """{"op":1}""";
var gateway_packet =
JsonSerializer.Deserialize<GatewayPacket>(src, SourceGenerationContext.Default.GatewayPacket);
Assert.Equal(GatewayPacket.Opcode.Heartbeat, gateway_packet?.Op);
}
[Fact]
public void ReadyPacketDeserialize()
{
const string src = """
{
"op":0,
"t":"READY",
"s":1,
"d":{
"v":10,
"user":{
"id":"1234",
"username":"abrakadabra",
"discriminator":"1111",
"global_name":"glblname"
},
"guilds":[
{
"id":"5678",
"unavailable":true
}
],
"session_id":"abcd",
"resume_gateway_url":"dfgh",
"application":{
"id":"3333",
"flags":5555
}
}
}
""";
GatewayPacket? packet =
JsonSerializer.Deserialize<GatewayPacket>(src, SourceGenerationContext.Default.GatewayPacket);
Assert.NotNull(packet);
Assert.IsType<ReadyPacket>(packet);
Assert.True(packet is ReadyPacket
{
Op: GatewayPacket.Opcode.Dispatch,
Event: "READY",
Sequence: 1,
Data:
{
User:
{
Id:1234,
Username: "abrakadabra",
Discriminator: "1111",
GlobalName: "glblname"
},
Version: 10,
SessionId: "abcd",
ResumeGatewayUrl: "dfgh",
Guilds:[
{
Id: 5678,
Unavailable: true
}
],
Application:
{
Id: 3333,
Flags: 5555
}
}
});
}
[Fact]
public void ChannelCreateDeserialize()
{
string src = """
{
"op":0,
"t":"CHANNEL_CREATE",
"s":1,
"d":{
"id": "922243411795390570",
"type": 2,
"guild_id": "5678",
"position": 3,
"name": "voice csennel",
"topic": "A very interesting topic",
"nsfw": true,
"last_message_id":"6969",
"bitrate":420,
"parent_id": "5555"
}
}
""";
var gateway_packet =
JsonSerializer.Deserialize(src, SourceGenerationContext.Default.GatewayPacket);
Assert.IsType<ChannelCreatePacket>(gateway_packet);
Assert.True(gateway_packet is ChannelCreatePacket
{
Op: GatewayPacket.Opcode.Dispatch,
Event: "CHANNEL_CREATE",
Sequence: 1,
Data:
{
Id: 922243411795390570,
Name: "voice csennel",
GuildId: 5678,
Type: 2,
Position: 3,
Topic: "A very interesting topic",
Nsfw: true,
Bitrate: 420,
ParentId: 5555,
LastMessageId: 6969
}
});
}
}