diff --git a/test/UnitTest/Components/IPLocatorTest.cs b/test/UnitTest/Components/IPLocatorTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..e5ad2a3220268844fa02ba974bd3798436abb04c --- /dev/null +++ b/test/UnitTest/Components/IPLocatorTest.cs @@ -0,0 +1,74 @@ +// Copyright (c) Argo Zhang (argo@163.com). All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// Website: https://www.blazor.zone or https://argozhang.github.io/ + +namespace UnitTest.Components; + +public class IPLocatorTest : BootstrapBlazorTestBase +{ + [Fact] + public async Task Locator_Ok() + { + var cut = Context.RenderComponent(); + var result = await cut.Instance.IPLocator.Locate("127.0.0.1"); + Assert.Equal("本地连接", result); + result = await cut.Instance.IPLocator.Locate(""); + Assert.Equal("本地连接", result); + var widenet = await cut.Instance.IPLocator.Locate("223.91.188.112"); + Assert.NotNull(widenet); + } + + [Fact] + public void BaiduIpLocator_Ok() + { + var locator = new BaiDuIPLocator + { + Status = "0" + }; + var ret = locator.ToString(); + Assert.Equal("XX XX", ret); + + locator.Data = Array.Empty(); + ret = locator.ToString(); + Assert.Equal("XX XX", ret); + + locator.Data = new LocationInfo[] + { + new() + }; + ret = locator.ToString(); + Assert.Equal("XX XX", ret); + + locator.Data = new LocationInfo[] + { + new() + { + Location = "Test" + } + }; + ret = locator.ToString(); + Assert.Equal("Test", ret); + + locator.Status = "1"; + ret = locator.ToString(); + Assert.Equal("Error", ret); + } + + [Fact] + public async Task DefaultIPLocator_Ok() + { + var locator = new DefaultIPLocator(); + var ret = await locator.Locate(new IPLocatorOption() + { + RequestTimeout = 3000 + }); + Assert.Null(ret); + } + + private class IpLocatorTest : ComponentBase + { + [Inject] + [NotNull] + public IIPLocatorProvider? IPLocator { get; set; } + } +} diff --git a/test/UnitTest/Core/BootstrapBlazorTestBase.cs b/test/UnitTest/Core/BootstrapBlazorTestBase.cs index 21c79ea1d4a45bb0447896e6bc61ec1d34e21cdb..7c7d647490ac50703eacca7135ef762358f5453a 100644 --- a/test/UnitTest/Core/BootstrapBlazorTestBase.cs +++ b/test/UnitTest/Core/BootstrapBlazorTestBase.cs @@ -47,6 +47,10 @@ public class BootstrapBlazorTestHost : IDisposable protected virtual void ConfigureServices(IServiceCollection services) { services.AddBootstrapBlazor(); + services.ConfigureIPLocatorOption(options => + { + options.LocatorFactory = provider => new BaiDuIPLocator(); + }); services.ConfigureJsonLocalizationOptions(op => op.AdditionalJsonAssemblies = new[] { typeof(Alert).Assembly }); services.AddSingleton();