浏览代码

test: Update tests

Bruce Wayne 2 月之前
父节点
当前提交
dcdc28cec4

+ 27 - 24
src/tests/UnitTest/StunClien5389UDPTest.cs

@@ -1,5 +1,4 @@
 using Dns.Net.Clients;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
 using Moq;
 using Moq.Protected;
 using STUN;
@@ -14,6 +13,10 @@ namespace UnitTest;
 [TestClass]
 public class StunClien5389UDPTest
 {
+	public required TestContext TestContext { get; init; }
+
+	private CancellationToken CancellationToken => TestContext.CancellationTokenSource.Token;
+
 	private readonly DefaultDnsClient _dnsClient = new();
 
 	private static readonly IPEndPoint Any = new(IPAddress.Any, 0);
@@ -30,10 +33,10 @@ public class StunClien5389UDPTest
 	[TestMethod]
 	public async Task BindingTestSuccessAsync()
 	{
-		IPAddress ip = await _dnsClient.QueryAsync(@"stun.hot-chilli.net");
+		IPAddress ip = await _dnsClient.QueryAsync(@"stun.hot-chilli.net", CancellationToken);
 		using StunClient5389UDP client = new(new IPEndPoint(ip, StunServer.DefaultPort), Any);
 
-		StunResult5389 response = await client.BindingTestAsync();
+		StunResult5389 response = await client.BindingTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, response.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, response.MappingBehavior);
@@ -49,7 +52,7 @@ public class StunClien5389UDPTest
 		IPAddress ip = IPAddress.Parse(@"1.1.1.1");
 		using StunClient5389UDP client = new(new IPEndPoint(ip, StunServer.DefaultPort), Any);
 
-		StunResult5389 response = await client.BindingTestAsync();
+		StunResult5389 response = await client.BindingTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Fail, response.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, response.MappingBehavior);
@@ -69,7 +72,7 @@ public class StunClien5389UDPTest
 
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ItExpr.IsAny<IPEndPoint>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(fail);
 
-		await client.MappingBehaviorTestAsync();
+		await client.MappingBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Fail, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, client.State.MappingBehavior);
@@ -118,7 +121,7 @@ public class StunClien5389UDPTest
 
 		async Task TestAsync()
 		{
-			await client.MappingBehaviorTestAsync();
+			await client.MappingBehaviorTestAsync(CancellationToken);
 
 			Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 			Assert.AreEqual(MappingBehavior.UnsupportedServer, client.State.MappingBehavior);
@@ -144,7 +147,7 @@ public class StunClien5389UDPTest
 
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ItExpr.IsAny<IPEndPoint>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(response);
 
-		await client.MappingBehaviorTestAsync();
+		await client.MappingBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Direct, client.State.MappingBehavior);
@@ -168,7 +171,7 @@ public class StunClien5389UDPTest
 			OtherEndPoint = ChangedAddress1
 		};
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ItExpr.IsAny<IPEndPoint>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r1);
-		await client.MappingBehaviorTestAsync();
+		await client.MappingBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.EndpointIndependent, client.State.MappingBehavior);
@@ -195,7 +198,7 @@ public class StunClien5389UDPTest
 
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ServerAddress, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r1);
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress3, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r2);
-		await client.MappingBehaviorTestAsync();
+		await client.MappingBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Fail, client.State.MappingBehavior);
@@ -236,7 +239,7 @@ public class StunClien5389UDPTest
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress3, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r2);
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress1, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r3);
 
-		await client.MappingBehaviorTestAsync();
+		await client.MappingBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.AddressDependent, client.State.MappingBehavior);
@@ -277,7 +280,7 @@ public class StunClien5389UDPTest
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress3, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r2);
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress1, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r3);
 
-		await client.MappingBehaviorTestAsync();
+		await client.MappingBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.AddressAndPortDependent, client.State.MappingBehavior);
@@ -312,7 +315,7 @@ public class StunClien5389UDPTest
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress3, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r2);
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress1, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r3);
 
-		await client.MappingBehaviorTestAsync();
+		await client.MappingBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Fail, client.State.MappingBehavior);
@@ -332,7 +335,7 @@ public class StunClien5389UDPTest
 
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ItExpr.IsAny<IPEndPoint>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(fail);
 
-		await client.FilteringBehaviorTestAsync();
+		await client.FilteringBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Fail, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, client.State.MappingBehavior);
@@ -381,7 +384,7 @@ public class StunClien5389UDPTest
 
 		async Task TestAsync()
 		{
-			await client.FilteringBehaviorTestAsync();
+			await client.FilteringBehaviorTestAsync(CancellationToken);
 
 			Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 			Assert.AreEqual(MappingBehavior.Unknown, client.State.MappingBehavior);
@@ -408,7 +411,7 @@ public class StunClien5389UDPTest
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ItExpr.IsAny<IPEndPoint>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r1);
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest2Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r2);
 
-		await client.FilteringBehaviorTestAsync();
+		await client.FilteringBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, client.State.MappingBehavior);
@@ -435,7 +438,7 @@ public class StunClien5389UDPTest
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ItExpr.IsAny<IPEndPoint>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r1);
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest2Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r2);
 
-		await client.FilteringBehaviorTestAsync();
+		await client.FilteringBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, client.State.MappingBehavior);
@@ -462,7 +465,7 @@ public class StunClien5389UDPTest
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest2Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(default(StunResponse?));
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest3Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(default(StunResponse?));
 
-		await client.FilteringBehaviorTestAsync();
+		await client.FilteringBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, client.State.MappingBehavior);
@@ -490,7 +493,7 @@ public class StunClien5389UDPTest
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest2Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(default(StunResponse?));
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest3Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r3);
 
-		await client.FilteringBehaviorTestAsync();
+		await client.FilteringBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, client.State.MappingBehavior);
@@ -518,7 +521,7 @@ public class StunClien5389UDPTest
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest2Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(default(StunResponse?));
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest3Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r3);
 
-		await client.FilteringBehaviorTestAsync();
+		await client.FilteringBehaviorTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, client.State.MappingBehavior);
@@ -538,7 +541,7 @@ public class StunClien5389UDPTest
 
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ItExpr.IsAny<IPEndPoint>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(fail);
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Fail, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, client.State.MappingBehavior);
@@ -563,7 +566,7 @@ public class StunClien5389UDPTest
 		};
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ItExpr.IsAny<IPEndPoint>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r1);
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, client.State.MappingBehavior);
@@ -589,7 +592,7 @@ public class StunClien5389UDPTest
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest2Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(default(StunResponse?));
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest3Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(default(StunResponse?));
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Direct, client.State.MappingBehavior);
@@ -616,7 +619,7 @@ public class StunClien5389UDPTest
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest2Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(default(StunResponse?));
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest3Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(default(StunResponse?));
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.EndpointIndependent, client.State.MappingBehavior);
@@ -659,7 +662,7 @@ public class StunClien5389UDPTest
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest2Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(default(StunResponse?));
 		mock.Protected().Setup<ValueTask<StunResponse?>>(@"FilteringBehaviorTest3Async", ItExpr.IsAny<CancellationToken>()).ReturnsAsync(default(StunResponse?));
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.AddressAndPortDependent, client.State.MappingBehavior);

+ 16 - 13
src/tests/UnitTest/StunClient3489Test.cs

@@ -1,5 +1,4 @@
 using Dns.Net.Clients;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
 using Moq;
 using STUN.Client;
 using STUN.Enums;
@@ -13,6 +12,10 @@ namespace UnitTest;
 [TestClass]
 public class StunClient3489Test
 {
+	public required TestContext TestContext { get; init; }
+
+	private CancellationToken CancellationToken => TestContext.CancellationTokenSource.Token;
+
 	private readonly DefaultDnsClient _dnsClient = new();
 
 	private const string Server = @"stun.hot-chilli.net";
@@ -37,7 +40,7 @@ public class StunClient3489Test
 
 		mock.Setup(x => x.Test1Async(It.IsAny<CancellationToken>())).ReturnsAsync(default(StunResponse?));
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 		Assert.AreEqual(NatType.UdpBlocked, client.State.NatType);
 	}
 
@@ -72,7 +75,7 @@ public class StunClient3489Test
 
 		async Task TestAsync()
 		{
-			await client.QueryAsync();
+			await client.QueryAsync(CancellationToken);
 			Assert.AreEqual(NatType.UnsupportedServer, client.State.NatType);
 		}
 	}
@@ -99,12 +102,12 @@ public class StunClient3489Test
 		mock.Setup(x => x.Test2Async(It.IsAny<IPEndPoint>(), It.IsAny<CancellationToken>())).ReturnsAsync(test2Response);
 
 		Assert.AreEqual(NatType.Unknown, client.State.NatType);
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 		Assert.AreEqual(NatType.OpenInternet, client.State.NatType);
 
 		mock.Setup(x => x.Test2Async(It.IsAny<IPEndPoint>(), It.IsAny<CancellationToken>())).ReturnsAsync(default(StunResponse?));
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 		Assert.AreEqual(NatType.SymmetricUdpFirewall, client.State.NatType);
 	}
 
@@ -145,7 +148,7 @@ public class StunClient3489Test
 		mock.Setup(x => x.Test2Async(It.IsAny<IPEndPoint>(), It.IsAny<CancellationToken>())).ReturnsAsync(fullConeResponse);
 
 		Assert.AreEqual(NatType.Unknown, client.State.NatType);
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 		Assert.AreEqual(NatType.FullCone, client.State.NatType);
 
 		mock.Setup(x => x.Test2Async(It.IsAny<IPEndPoint>(), It.IsAny<CancellationToken>())).ReturnsAsync(unsupportedResponse1);
@@ -161,7 +164,7 @@ public class StunClient3489Test
 
 		async Task TestUnsupportedServerAsync()
 		{
-			await client.QueryAsync();
+			await client.QueryAsync(CancellationToken);
 			Assert.AreEqual(NatType.UnsupportedServer, client.State.NatType);
 		}
 	}
@@ -188,12 +191,12 @@ public class StunClient3489Test
 		mock.Setup(x => x.Test1_2Async(It.IsAny<IPEndPoint>(), It.IsAny<CancellationToken>())).ReturnsAsync(default(StunResponse?));
 
 		Assert.AreEqual(NatType.Unknown, client.State.NatType);
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 		Assert.AreEqual(NatType.Unknown, client.State.NatType);
 
 		mock.Setup(x => x.Test1_2Async(It.IsAny<IPEndPoint>(), It.IsAny<CancellationToken>())).ReturnsAsync(test12Response);
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 		Assert.AreEqual(NatType.Symmetric, client.State.NatType);
 	}
 
@@ -225,22 +228,22 @@ public class StunClient3489Test
 
 		mock.Setup(x => x.Test3Async(It.IsAny<CancellationToken>())).ReturnsAsync(test3Response);
 		Assert.AreEqual(NatType.Unknown, client.State.NatType);
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 		Assert.AreEqual(NatType.RestrictedCone, client.State.NatType);
 
 		mock.Setup(x => x.Test3Async(It.IsAny<CancellationToken>())).ReturnsAsync(test3ErrorResponse);
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 		Assert.AreEqual(NatType.PortRestrictedCone, client.State.NatType);
 
 		mock.Setup(x => x.Test3Async(It.IsAny<CancellationToken>())).ReturnsAsync(default(StunResponse?));
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 		Assert.AreEqual(NatType.PortRestrictedCone, client.State.NatType);
 	}
 
 	[TestMethod]
 	public async Task Test1Async()
 	{
-		IPAddress ip = await _dnsClient.QueryAsync(Server);
+		IPAddress ip = await _dnsClient.QueryAsync(Server, CancellationToken);
 		using StunClient3489 client = new(new IPEndPoint(ip, Port), Any);
 
 		// test I

+ 25 - 21
src/tests/UnitTest/StunClient5389TCPTest.cs

@@ -1,5 +1,4 @@
 using Dns.Net.Clients;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
 using Moq;
 using Moq.Protected;
 using STUN;
@@ -14,6 +13,10 @@ namespace UnitTest;
 [TestClass]
 public class StunClient5389TCPTest
 {
+	public required TestContext TestContext { get; init; }
+
+	private CancellationToken CancellationToken => TestContext.CancellationTokenSource.Token;
+
 	private readonly DefaultDnsClient _dnsClient = new();
 
 	private static readonly IPEndPoint Any = new(IPAddress.Any, 0);
@@ -28,10 +31,10 @@ public class StunClient5389TCPTest
 	[TestMethod]
 	public async Task BindingTestSuccessAsync()
 	{
-		IPAddress ip = await _dnsClient.QueryAsync(@"stun.hot-chilli.net");
+		IPAddress ip = await _dnsClient.QueryAsync(@"stun.hot-chilli.net", CancellationToken);
 		using IStunClient5389 client = new StunClient5389TCP(new IPEndPoint(ip, StunServer.DefaultPort), Any);
 
-		StunResult5389 response = await client.BindingTestAsync();
+		StunResult5389 response = await client.BindingTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, response.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, response.MappingBehavior);
@@ -47,7 +50,7 @@ public class StunClient5389TCPTest
 		IPAddress ip = IPAddress.Parse(@"1.1.1.1");
 		using IStunClient5389 client = new StunClient5389TCP(new IPEndPoint(ip, StunServer.DefaultPort), Any);
 
-		StunResult5389 response = await client.BindingTestAsync();
+		StunResult5389 response = await client.BindingTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Fail, response.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, response.MappingBehavior);
@@ -57,15 +60,16 @@ public class StunClient5389TCPTest
 		Assert.IsNull(response.OtherEndPoint);
 	}
 
+	[Ignore]// TODO
 	[TestMethod]
 	public async Task TlsBindingTestSuccessAsync()
 	{
 		Assert.IsTrue(StunServer.TryParse(@"stun.fitauto.ru", out StunServer? stunServer, StunServer.DefaultTlsPort));
-		IPAddress ip = await _dnsClient.QueryAsync(stunServer.Hostname);
+		IPAddress ip = await _dnsClient.QueryAsync(stunServer.Hostname, CancellationToken);
 		ITcpProxy tls = new TlsProxy(stunServer.Hostname);
 		using IStunClient5389 client = new StunClient5389TCP(new IPEndPoint(ip, StunServer.DefaultPort), Any, tls);
 
-		StunResult5389 response = await client.BindingTestAsync();
+		StunResult5389 response = await client.BindingTestAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, response.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, response.MappingBehavior);
@@ -81,7 +85,7 @@ public class StunClient5389TCPTest
 	{
 		const string url = @"https://raw.githubusercontent.com/pradt2/always-online-stun/master/valid_hosts_tcp.txt";
 		HttpClient httpClient = new();
-		string listRaw = await httpClient.GetStringAsync(url);
+		string listRaw = await httpClient.GetStringAsync(url, CancellationToken);
 		string[] list = listRaw.Split('\n', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
 
 		foreach (string host in list)
@@ -93,10 +97,10 @@ public class StunClient5389TCPTest
 					continue;
 				}
 
-				IPAddress ip = await _dnsClient.QueryAsync(hostEndpoint.Hostname);
+				IPAddress ip = await _dnsClient.QueryAsync(hostEndpoint.Hostname, CancellationToken);
 				using IStunClient5389 client = new StunClient5389TCP(new IPEndPoint(ip, hostEndpoint.Port), Any);
 
-				await client.QueryAsync();
+				await client.QueryAsync(CancellationToken);
 
 				if (client.State.MappingBehavior is MappingBehavior.AddressAndPortDependent or MappingBehavior.AddressDependent or MappingBehavior.EndpointIndependent or MappingBehavior.Direct)
 				{
@@ -116,7 +120,7 @@ public class StunClient5389TCPTest
 	{
 		const string url = @"https://raw.githubusercontent.com/pradt2/always-online-stun/master/valid_hosts_tcp.txt";
 		HttpClient httpClient = new();
-		string listRaw = await httpClient.GetStringAsync(url);
+		string listRaw = await httpClient.GetStringAsync(url, CancellationToken);
 		string[] list = listRaw.Split('\n', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
 
 		foreach (string host in list)
@@ -128,11 +132,11 @@ public class StunClient5389TCPTest
 					continue;
 				}
 
-				IPAddress ip = await _dnsClient.QueryAsync(hostEndpoint.Hostname);
+				IPAddress ip = await _dnsClient.QueryAsync(hostEndpoint.Hostname, CancellationToken);
 				ITcpProxy proxy = new TlsProxy(hostEndpoint.Hostname);
 				using IStunClient5389 client = new StunClient5389TCP(new IPEndPoint(ip, StunServer.DefaultTlsPort), Any, proxy);
 
-				await client.QueryAsync();
+				await client.QueryAsync(CancellationToken);
 
 				if (client.State.MappingBehavior is MappingBehavior.AddressAndPortDependent or MappingBehavior.AddressDependent or MappingBehavior.EndpointIndependent or MappingBehavior.Direct)
 				{
@@ -156,7 +160,7 @@ public class StunClient5389TCPTest
 
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ItExpr.IsAny<IPEndPoint>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(fail);
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Fail, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Unknown, client.State.MappingBehavior);
@@ -205,7 +209,7 @@ public class StunClient5389TCPTest
 
 		async Task TestAsync()
 		{
-			await client.QueryAsync();
+			await client.QueryAsync(CancellationToken);
 
 			Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 			Assert.AreEqual(MappingBehavior.UnsupportedServer, client.State.MappingBehavior);
@@ -231,7 +235,7 @@ public class StunClient5389TCPTest
 
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ItExpr.IsAny<IPEndPoint>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(response);
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Direct, client.State.MappingBehavior);
@@ -255,7 +259,7 @@ public class StunClient5389TCPTest
 			OtherEndPoint = ChangedAddress1
 		};
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ItExpr.IsAny<IPEndPoint>(), ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r1);
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.EndpointIndependent, client.State.MappingBehavior);
@@ -282,7 +286,7 @@ public class StunClient5389TCPTest
 
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ServerAddress, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r1);
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress3, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r2);
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Fail, client.State.MappingBehavior);
@@ -324,7 +328,7 @@ public class StunClient5389TCPTest
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress3, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r2);
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress1, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r3);
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.AddressDependent, client.State.MappingBehavior);
@@ -366,7 +370,7 @@ public class StunClient5389TCPTest
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress3, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r2);
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress1, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r3);
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.AddressAndPortDependent, client.State.MappingBehavior);
@@ -402,7 +406,7 @@ public class StunClient5389TCPTest
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress3, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r2);
 		mock.Protected().Setup<ValueTask<StunResult5389>>(@"BindingTestBaseAsync", ChangedAddress1, ItExpr.IsAny<CancellationToken>()).ReturnsAsync(r3);
 
-		await client.QueryAsync();
+		await client.QueryAsync(CancellationToken);
 
 		Assert.AreEqual(BindingTestResult.Success, client.State.BindingTestResult);
 		Assert.AreEqual(MappingBehavior.Fail, client.State.MappingBehavior);
@@ -418,6 +422,6 @@ public class StunClient5389TCPTest
 		Mock<StunClient5389TCP> mock = new(ServerAddress, Any, default!);
 		IStunClient5389 client = mock.Object;
 
-		await Assert.ThrowsExactlyAsync<NotSupportedException>(async () => await client.FilteringBehaviorTestAsync());
+		await Assert.ThrowsExactlyAsync<NotSupportedException>(async () => await client.FilteringBehaviorTestAsync(CancellationToken));
 	}
 }