using Bootstrap.Security; using System; using System.Linq; using System.Net.Http; using Xunit; namespace Bootstrap.DataAccess.SqlServer { [Collection("SQLServerContext")] public class DictsTest { [Fact] public void SaveAndDelete_Ok() { var dict = new BootstrapDict() { Category = "UnitTest", Name = "Test1", Code = "1", Define = 1 }; Assert.True(DictHelper.Save(dict)); Assert.True(DictHelper.Delete(DictHelper.RetrieveDicts().Where(d => d.Category == dict.Category).Select(d => d.Id))); } [Fact] public void SaveSettings_Ok() { var dict = new Dict() { Category = "UnitTest", Name = "Test1", Code = "1", Define = 1 }; Assert.True(DictHelper.SaveSettings(dict)); dict.Delete(DictHelper.RetrieveDicts().Where(d => d.Category == dict.Category).Select(d => d.Id)); } [Fact] public void RetrieveCategories_Ok() { Assert.NotEmpty(DictHelper.RetrieveCategories()); } [Fact] public void RetrieveWebTitle_Ok() { Assert.Equal("后台管理系统", DictHelper.RetrieveWebTitle()); } [Fact] public void RetrieveWebFooter_Ok() { Assert.Equal("2016 © 通用后台管理系统", DictHelper.RetrieveWebFooter()); } [Fact] public void RetrieveThemes_Ok() { Assert.NotEmpty(DictHelper.RetrieveThemes()); } [Fact] public void RetrieveActiveTheme_Ok() { Assert.Equal("blue.css", DictHelper.RetrieveActiveTheme()); } [Fact] public void RetrieveIconFolderPath_Ok() { Assert.Equal("~/images/uploader/", DictHelper.RetrieveIconFolderPath()); } [Fact] public void RetrieveHomeUrl_Ok() { Assert.Equal("~/Home/Index", DictHelper.RetrieveHomeUrl("0")); } [Fact] public void RetrieveApps_Ok() { Assert.NotEmpty(DictHelper.RetrieveApps()); } [Fact] public void RetrieveDicts_Ok() { Assert.NotEmpty(DictHelper.RetrieveDicts()); } [Fact] public void RetrieveCookieExpiresPeriod_Ok() { Assert.Equal(7, DictHelper.RetrieveCookieExpiresPeriod()); } [Fact] public void RetrieveExceptionsLogPeriod_Ok() { Assert.Equal(1, DictHelper.RetrieveExceptionsLogPeriod()); } [Fact] public void RetrieveLoginLogsPeriod_Ok() { Assert.Equal(12, DictHelper.RetrieveLoginLogsPeriod()); } [Fact] public void RetrieveLogsPeriod_Ok() { Assert.Equal(12, DictHelper.RetrieveLogsPeriod()); } [Fact] public void RetrieveLocaleIP_Ok() { var ipSvr = DictHelper.RetrieveLocaleIPSvr(); Assert.Equal("None", ipSvr); var ipUri = DictHelper.RetrieveLocaleIPSvrUrl("JuheIPSvr"); Assert.NotNull(ipUri); } [Fact] public async void BaiduIPSvr_Ok() { var ipUri = DictHelper.RetrieveLocaleIPSvrUrl("BaiDuIPSvr"); var client = HttpClientFactory.Create(); // 日本东京 var locator = await client.GetAsJsonAsync($"{ipUri}207.148.111.94"); Assert.NotEqual("0", locator.Status); // 四川成都 locator = await client.GetAsJsonAsync($"{ipUri}182.148.123.196"); Assert.Equal("0", locator.Status); } [Fact] public async void JuheIPSvr_Ok() { var ipUri = DictHelper.RetrieveLocaleIPSvrUrl("JuheIPSvr"); // 日本东京 var client = HttpClientFactory.Create(); var locator = await client.GetAsJsonAsync($"{ipUri}207.148.111.94"); Assert.Contains(new int[] { 0, 10012 }, c => c == locator.Error_Code); // 四川成都 locator = await client.GetAsJsonAsync($"{ipUri}182.148.123.196"); Assert.Contains(new int[] { 0, 10012 }, c => c == locator.Error_Code); } [Fact] public void RetrieveAccessLogPeriod_Ok() { Assert.Equal(1, DictHelper.RetrieveAccessLogPeriod()); } [Fact] public void IPSvrCachePeriod_Ok() { Assert.Equal("10", DictHelper.RetrieveLocaleIPSvrCachePeriod()); } #region Private Class For Test /// /// /// private class BaiDuIPLocator { /// /// 详细地址信息 /// public string Address { get; set; } /// /// 结果状态返回码 /// public string Status { get; set; } /// /// /// /// public override string ToString() { return Status == "0" ? string.Join(" ", Address.SpanSplit("|").Skip(1).Take(2)) : "XX XX"; } } private class JuheIPLocator { /// /// /// public string ResultCode { get; set; } /// /// /// public string Reason { get; set; } /// /// /// public JuheIPLocatorResult Result { get; set; } /// /// /// /// public int Error_Code { get; set; } /// /// /// /// public override string ToString() { return Error_Code != 0 ? "XX XX" : Result.ToString(); } } private class JuheIPLocatorResult { /// /// /// public string Country { get; set; } /// /// /// public string Province { get; set; } /// /// /// public string City { get; set; } /// /// /// public string Isp { get; set; } /// /// /// /// public override string ToString() { return Country != "中国" ? $"{Country} {Province} {Isp}" : $"{Province} {City} {Isp}"; } } #endregion } }