using IdentityModel;
using IdentityModel.Jwk;
using IdentityModel.Client;
using IdentityModel.Internal;

namespace Id4Study.Test
{
    public class Id4BaseTest
    {
        [Fact]
        public async Task Test1Async()
        {
            var client = new HttpClient();

            DiscoveryDocumentRequest discoveryDocumentRequest = new DiscoveryDocumentRequest()
            { 
                Policy = new DiscoveryPolicy() { RequireHttps = false},
                Address = "http://192.168.20.46:8017/",
            };

            //发现文档
            var disco = await client.GetDiscoveryDocumentAsync(discoveryDocumentRequest, CancellationToken.None);
            
            Assert.False(disco.IsError);

            // 请求令牌
            var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest
            {
                Address = disco.TokenEndpoint,

                ClientId = "WebAPI_OA_Server",
                ClientSecret = "webapi-oa-Puweiidc2022",
                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&currentPageIndex=1&pageSize=50");

            Assert.True(res.IsSuccessStatusCode);

            var content = await res.Content.ReadAsStringAsync();
        }
    }
}