IPMeow/test/IPMeow.Test/DnsTest.cs
2023-10-19 18:25:22 +02:00

48 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Threading.Tasks;
using IPMeow.Dns;
namespace IPMeow.Test;
public class DnsTest
{
[Fact]
public async Task TestDns()
{
using UdpClient udp = new UdpClient(AddressFamily.InterNetwork);
udp.Connect(IPAddress.Parse("1.1.1.1"), 53);
DnsMessage msg = new()
{
IsRecursionDesired = true,
IsRecursionAvailable = true,
MessageId = 0xbabe,
MessageType = DnsMessageType.Query,
Opcode = DnsMessageOpcode.Query,
Questions = new List<QueryResourceRecord>()
{
new QueryResourceRecord()
{
Class = ResourceRecordClass.IN,
Name = "meow.lgbt",
Type = ResourceRecordType.A
},
},
ResponseCode = 0,
};
var data = msg.Serialize();
await udp.SendAsync(data);
var rec = await udp.ReceiveAsync();
var res = DnsMessage.Deserialize(rec.Buffer);
Assert.Equal(DnsMessageType.Reply, res.MessageType);
Assert.Equal(0xbabe, res.MessageId);
}
}