diff --git a/Id4Study.Test/Etx.cs b/Id4Study.Test/Etx.cs new file mode 100644 index 0000000..913cd04 --- /dev/null +++ b/Id4Study.Test/Etx.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Id4Study.Test +{ + public static class Id4Etx + { + /// + /// GetDiscoveryDocumentAsync 重载版 + /// (不强制使用https) + /// + /// + /// + /// + /// + /// + public static async Task GetDiscoveryDocumentAsync + ( + this HttpClient client, + string? address = null, + bool mustHttps=false, + CancellationToken cancellationToken = default + ) + { + var policy = new DiscoveryDocumentRequest { Address = address }; + policy.Policy.RequireHttps = mustHttps; + return await client.GetDiscoveryDocumentAsync(policy, cancellationToken).ConfigureAwait(false); + } + } +} diff --git a/Id4Study.Test/GlobalUsing.cs b/Id4Study.Test/GlobalUsing.cs new file mode 100644 index 0000000..e217011 --- /dev/null +++ b/Id4Study.Test/GlobalUsing.cs @@ -0,0 +1,16 @@ +global using System.Collections; +global using System.Collections.Generic; + +global using System.Linq; +global using System.Linq.Expressions; + + +global using Xunit; +global using Xunit.Sdk; +global using Xunit.Extensions; +global using Xunit.Abstractions; + +global using IdentityModel; +global using IdentityModel.Client; +global using IdentityModel.Jwk; +global using IdentityModel.Internal; \ No newline at end of file diff --git a/Id4Study.Test/Id4Study.Test.csproj b/Id4Study.Test/Id4Study.Test.csproj new file mode 100644 index 0000000..0db8281 --- /dev/null +++ b/Id4Study.Test/Id4Study.Test.csproj @@ -0,0 +1,30 @@ + + + + net8.0 + enable + enable + + false + true + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + diff --git a/Id4Study.Test/UnitTest1.cs b/Id4Study.Test/UnitTest1.cs new file mode 100644 index 0000000..1de3d87 --- /dev/null +++ b/Id4Study.Test/UnitTest1.cs @@ -0,0 +1,41 @@ + +namespace Id4Study.Test +{ + public class UnitTest1 + { + [Fact] + public async Task Test1Async() + { + var client = new HttpClient(); + + //发现文档 + var disco = await client.GetDiscoveryDocumentAsync("http://192.168.20.46:8017/",false, CancellationToken.None); + + Assert.False(disco.IsError); + + // 请求令牌 + var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest + { + Address = disco.TokenEndpoint, + + ClientId = "edit_oa", + ClientSecret = "edit_oa", + Scope = "EDS.Editor.WebAPI.Plan EDS.Editor.WebAPI.Scene EDS.Editor.WebAPI.Member EDS.Editor.WebAPI.Common EDS.Editor.WebAPI.Resource EDS.Editor.WebAPI.Exam" + }); + + Assert.False(tokenResponse.IsError); + + //访问WebAPI + //tokenResponse.AccessToken; + + client.SetBearerToken(tokenResponse?.AccessToken ?? ""); + + HttpResponseMessage? res = await client.GetAsync( + "http://192.168.20.46:8016/api.exam/v1.0.0.0/Paper/GetPaperListByPage?companyId=1051&orgId=198¤tPageIndex=1&pageSize=50"); + + Assert.True(res.IsSuccessStatusCode); + + var content = await res.Content.ReadAsStringAsync(); + } + } +} \ No newline at end of file diff --git a/Id4Study.sln b/Id4Study.sln new file mode 100644 index 0000000..82b8f84 --- /dev/null +++ b/Id4Study.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.34825.169 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Id4Study.Test", "Id4Study.Test\Id4Study.Test.csproj", "{BDD25B65-9F7C-4A5B-8E42-8ACA25369D23}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BDD25B65-9F7C-4A5B-8E42-8ACA25369D23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BDD25B65-9F7C-4A5B-8E42-8ACA25369D23}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BDD25B65-9F7C-4A5B-8E42-8ACA25369D23}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BDD25B65-9F7C-4A5B-8E42-8ACA25369D23}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {32B30A6D-76BF-4432-B62E-53F6DDE955B0} + EndGlobalSection +EndGlobal