StunClient5389TCPTest.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Dns.Net.Abstractions;
  2. using Dns.Net.Clients;
  3. using Microsoft.VisualStudio.TestTools.UnitTesting;
  4. using STUN.Client;
  5. using STUN.Enums;
  6. using STUN.StunResult;
  7. using System.Net;
  8. namespace UnitTest;
  9. [TestClass]
  10. public class StunClient5389TCPTest
  11. {
  12. private readonly IDnsClient _dnsClient = new DefaultDnsClient();
  13. private const string Server = @"stunserver.stunprotocol.org";
  14. private const ushort Port = 3478;
  15. private static readonly IPEndPoint Any = new(IPAddress.Any, 0);
  16. [TestMethod]
  17. public async Task BindingTestSuccessAsync()
  18. {
  19. IPAddress ip = await _dnsClient.QueryAsync(Server);
  20. using IStunClient5389 client = new StunClient5389TCP(new IPEndPoint(ip, Port), Any);
  21. StunResult5389 response = await client.BindingTestAsync();
  22. Assert.AreEqual(BindingTestResult.Success, response.BindingTestResult);
  23. Assert.AreEqual(MappingBehavior.Unknown, response.MappingBehavior);
  24. Assert.AreEqual(FilteringBehavior.Unknown, response.FilteringBehavior);
  25. Assert.IsNotNull(response.PublicEndPoint);
  26. Assert.IsNotNull(response.LocalEndPoint);
  27. Assert.IsNotNull(response.OtherEndPoint);
  28. }
  29. [TestMethod]
  30. public async Task BindingTestFailAsync()
  31. {
  32. IPAddress ip = IPAddress.Parse(@"1.1.1.1");
  33. using IStunClient5389 client = new StunClient5389TCP(new IPEndPoint(ip, Port), Any);
  34. StunResult5389 response = await client.BindingTestAsync();
  35. Assert.AreEqual(BindingTestResult.Fail, response.BindingTestResult);
  36. Assert.AreEqual(MappingBehavior.Unknown, response.MappingBehavior);
  37. Assert.AreEqual(FilteringBehavior.Unknown, response.FilteringBehavior);
  38. Assert.IsNull(response.PublicEndPoint);
  39. Assert.IsNull(response.LocalEndPoint);
  40. Assert.IsNull(response.OtherEndPoint);
  41. }
  42. }