Skip to content

Commit

Permalink
add JumpToCN unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnHe404 committed Aug 22, 2019
1 parent d00a987 commit 2d4bb97
Show file tree
Hide file tree
Showing 5 changed files with 202 additions and 1 deletion.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,5 @@ src/HeXuShi.Extensions.NoWWW/obj/
/src/HeXuShi.Extensions.IsChinaIp/obj
/sample/WebSample/bin/Release/netcoreapp2.2
/sample/WebSample/Properties/PublishProfiles/Default Settings.pubxml
/Tests/JumpToCNTests/bin/Debug/netcoreapp2.2
/Tests/JumpToCNTests/obj
7 changes: 7 additions & 0 deletions HeXuShi.Extensions.sln
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestChinaIp", "sample\TestC
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{DAE97445-BF2C-46C8-ACF7-EC0773FBBED6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JumpToCNTests", "Tests\JumpToCNTests\JumpToCNTests.csproj", "{BCFDCD23-0F13-4546-BCD4-3906242D7F0C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -53,6 +55,10 @@ Global
{A86DAC6D-3EA7-485F-B83A-8355F8B31F8E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A86DAC6D-3EA7-485F-B83A-8355F8B31F8E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A86DAC6D-3EA7-485F-B83A-8355F8B31F8E}.Release|Any CPU.Build.0 = Release|Any CPU
{BCFDCD23-0F13-4546-BCD4-3906242D7F0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BCFDCD23-0F13-4546-BCD4-3906242D7F0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BCFDCD23-0F13-4546-BCD4-3906242D7F0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BCFDCD23-0F13-4546-BCD4-3906242D7F0C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -64,6 +70,7 @@ Global
{DFFFEB0E-1082-4E51-A78A-D9BFECDA847B} = {A633B722-1F9E-493E-9473-4CB6BD220788}
{95CD1BE9-3FA5-4EB8-9527-73AC9492E74F} = {04C20E46-920C-4384-B57E-0D9EA3FFDBA5}
{A86DAC6D-3EA7-485F-B83A-8355F8B31F8E} = {3419470D-747C-494D-9202-CFFAD35A0726}
{BCFDCD23-0F13-4546-BCD4-3906242D7F0C} = {DAE97445-BF2C-46C8-ACF7-EC0773FBBED6}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {61188532-DD54-4567-B8AD-E0B697DFB6F3}
Expand Down
18 changes: 18 additions & 0 deletions Tests/JumpToCNTests/JumpToCNTests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="NUnit" Version="3.12.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.14.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\HeXuShi.Extensions.JumpToCN\HeXuShi.Extensions.JumpToCN.csproj" />
</ItemGroup>

</Project>
174 changes: 174 additions & 0 deletions Tests/JumpToCNTests/TestJumpToHandleRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
using NUnit.Framework;
using System;
using HeXuShi.Extensions.Middleware;
using Microsoft.AspNetCore.Http;
using System.Net;

namespace JumpToCNTests
{
[TestFixture]
public class TestJumpToHandleRequest
{
private HttpContext GetHttpContext(string host, bool isChinaIp = true, bool isIpv6 = false)
{
var context = new DefaultHttpContext();
if (isChinaIp)
{
if (!isIpv6)
context.Connection.RemoteIpAddress = IPAddress.Parse("183.192.62.65");
else
context.Connection.RemoteIpAddress = IPAddress.Parse("2400:da00::6666");
}
if (!isChinaIp)
{
if (!isIpv6)
context.Connection.RemoteIpAddress = IPAddress.Parse("8.8.8.8");
else
context.Connection.RemoteIpAddress = IPAddress.Parse("2001:4860:4860::8888");
}
context.Request.Host = new HostString(host);
return context;
}

[Test]
public void OnlyTo_SpecSuffix_ipv4()
{
HandleRequest request = new HandleRequest(".cn", string.Empty, HeXuShi.Extensions.JumpOption.OnlyTo_SpecSuffix);
var resultFirst = request.Handle(GetHttpContext("baidu.com"));
Assert.IsTrue(resultFirst.Item1);
Assert.AreEqual(resultFirst.Item2, "baidu.cn");

var resultSecond = request.Handle(GetHttpContext("baidu.cn"));
Assert.IsTrue(!resultSecond.Item1);

var resultThird = request.Handle(GetHttpContext("baidu.com", false));
Assert.IsTrue(!resultThird.Item1);

var resultFourth = request.Handle(GetHttpContext("baidu.cn", false));
Assert.IsTrue(!resultFourth.Item1);
}
[Test]
public void OnlyTo_SpecSuffix_ipv6()
{
HandleRequest request = new HandleRequest(".cn", string.Empty, HeXuShi.Extensions.JumpOption.OnlyTo_SpecSuffix);
var resultFirst = request.Handle(GetHttpContext("baidu.com", true, true));
Assert.IsTrue(resultFirst.Item1);
Assert.AreEqual(resultFirst.Item2, "baidu.cn");

var resultSecond = request.Handle(GetHttpContext("baidu.cn", true, true));
Assert.IsTrue(!resultSecond.Item1);

var resultThird = request.Handle(GetHttpContext("baidu.com", false, true));
Assert.IsTrue(!resultThird.Item1);

var resultFourth = request.Handle(GetHttpContext("baidu.cn", false, true));
Assert.IsTrue(!resultFourth.Item1);
}
[Test]
public void OnlyTo_SpecDomain_ipv4()
{
HandleRequest request = new HandleRequest("asp.net", string.Empty, HeXuShi.Extensions.JumpOption.OnlyTo_SpecDomain);
var resultFirst = request.Handle(GetHttpContext("github.com"));
Assert.IsTrue(resultFirst.Item1);
Assert.AreEqual(resultFirst.Item2, "asp.net");

var resultSecond = request.Handle(GetHttpContext("asp.net"));
Assert.IsTrue(!resultSecond.Item1);

var resultThird = request.Handle(GetHttpContext("github.com", false));
Assert.IsTrue(!resultThird.Item1);

var resultFourth = request.Handle(GetHttpContext("asp.net", false));
Assert.IsTrue(!resultFourth.Item1);
}
[Test]
public void OnlyTo_SpecDomain_ipv6()
{
HandleRequest request = new HandleRequest("asp.net", string.Empty, HeXuShi.Extensions.JumpOption.OnlyTo_SpecDomain);
var resultFirst = request.Handle(GetHttpContext("github.com", true, true));
Assert.IsTrue(resultFirst.Item1);
Assert.AreEqual(resultFirst.Item2, "asp.net");

var resultSecond = request.Handle(GetHttpContext("asp.net", true, true));
Assert.IsTrue(!resultSecond.Item1);

var resultThird = request.Handle(GetHttpContext("github.com", false, true));
Assert.IsTrue(!resultThird.Item1);

var resultFourth = request.Handle(GetHttpContext("asp.net", false, true));
Assert.IsTrue(!resultFourth.Item1);
}
[Test]
public void SuffixTo_SpecSuffix_ipv4()
{
HandleRequest request = new HandleRequest(".net", ".io", HeXuShi.Extensions.JumpOption.SuffixTo_SpecSuffix);
var resultFirst = request.Handle(GetHttpContext("github.com"));
Assert.IsTrue(resultFirst.Item1);
Assert.AreEqual(resultFirst.Item2, "github.net");

var resultSecond = request.Handle(GetHttpContext("asp.net"));
Assert.IsTrue(!resultSecond.Item1);

var resultThird = request.Handle(GetHttpContext("github.io", false));
Assert.IsTrue(!resultThird.Item1);

var resultFourth = request.Handle(GetHttpContext("asp.net", false));
Assert.IsTrue(resultFourth.Item1);
Assert.AreEqual(resultFourth.Item2, "asp.io");
}
[Test]
public void SuffixTo_SpecSuffix_ipv6()
{
HandleRequest request = new HandleRequest(".net", ".io", HeXuShi.Extensions.JumpOption.SuffixTo_SpecSuffix);
var resultFirst = request.Handle(GetHttpContext("github.com", true, true));
Assert.IsTrue(resultFirst.Item1);
Assert.AreEqual(resultFirst.Item2, "github.net");

var resultSecond = request.Handle(GetHttpContext("asp.net", true, true));
Assert.IsTrue(!resultSecond.Item1);

var resultThird = request.Handle(GetHttpContext("github.io", false, true));
Assert.IsTrue(!resultThird.Item1);

var resultFourth = request.Handle(GetHttpContext("asp.net", false, true));
Assert.IsTrue(resultFourth.Item1);
Assert.AreEqual(resultFourth.Item2, "asp.io");
}
[Test]
public void DomainTo_SpecDomain_ipv4()
{
HandleRequest request = new HandleRequest("asp.net", "github.com", HeXuShi.Extensions.JumpOption.DomainTo_SpecDomain);
var resultFirst = request.Handle(GetHttpContext("github.com"));
Assert.IsTrue(resultFirst.Item1);
Assert.AreEqual(resultFirst.Item2, "asp.net");

var resultSecond = request.Handle(GetHttpContext("asp.net"));
Assert.IsTrue(!resultSecond.Item1);

var resultThird = request.Handle(GetHttpContext("github.com", false));
Assert.IsTrue(!resultThird.Item1);

var resultFourth = request.Handle(GetHttpContext("asp.net", false));
Assert.IsTrue(resultFourth.Item1);
Assert.AreEqual(resultFourth.Item2, "github.com");
}
[Test]
public void DomainTo_SpecDomain_ipv6()
{
HandleRequest request = new HandleRequest("asp.net", "github.com", HeXuShi.Extensions.JumpOption.DomainTo_SpecDomain);
var resultFirst = request.Handle(GetHttpContext("github.com", true, true));
Assert.IsTrue(resultFirst.Item1);
Assert.AreEqual(resultFirst.Item2, "asp.net");

var resultSecond = request.Handle(GetHttpContext("asp.net", true, true));
Assert.IsTrue(!resultSecond.Item1);

var resultThird = request.Handle(GetHttpContext("github.com", false, true));
Assert.IsTrue(!resultThird.Item1);

var resultFourth = request.Handle(GetHttpContext("asp.net", false, true));
Assert.IsTrue(resultFourth.Item1);
Assert.AreEqual(resultFourth.Item2, "github.com");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

namespace HeXuShi.Extensions.Middleware
{
internal class HandleRequest
public class HandleRequest
{
private JumpOption _option;
private string _first;
Expand Down

0 comments on commit 2d4bb97

Please sign in to comment.