149 lines
4.7 KiB
C#
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
|
|
}
|
|
});
|
|
|
|
}
|
|
} |