3

Я пишу тест, чтобы получить маркер из идентичности сервер4 используя Microsoft.AspNetCore.TestHostIdentityServer4 TestServer не удалось найти

var hostBuilder = new WebHostBuilder() 
        .ConfigureServices(services => 
        { 
         services.AddIdentityServer() 
           .AddTemporarySigningCredential() 
           .AddInMemoryIdentityResources(Config.GetIdentityResources()) 
           .AddInMemoryApiResources(Config.GetApiResources()) 
           .AddInMemoryClients(Config.GetClients()) 
           .AddTestUsers(Config.GetUsers())       
           ; 

        }) 
        .Configure(app => 
        { 
         app.UseIdentityServer(); 
        }); 
       var server = new TestServer(hostBuilder); 
       var client = server.CreateClient(); 
       client.BaseAddress = new Uri("http://localhost:5000"); 

       var disco = await DiscoveryClient.GetAsync("http://localhost:5000"); 

Тогда disco.Error приходит со следующей ошибкой

Ошибка подключение к http://localhost:5001/.well-known/openid-configuration: При отправке запроса произошла ошибка .

Что мне не хватает?

ответ

4

Клиент-клиент, очевидно, выполняет внешний вызов этого фактического адреса. Вы хотите, чтобы он вызывал тестовый сервер, который происходит с «живым» InMemory.

Посмотрите на эти тесты here для IdentityServer4, который проверяет документ обнаружения.

Чтобы ответить на ваш вопрос, хотя вам нужно использовать один из перегруженных методов для DiscoveryClient, который принимает обработчик, который сделает правильный «вызов» на ваш тестовый сервер InMemory. Ниже приведен пример того, как это можно сделать.

var server = new TestServer(hostBuilder); 
var handler = server.CreateHandler(); 
var discoveryClient = new DiscoveryClient("http://localhost:5000", handler); 
var discoveryDocument = await discoveryClient.GetAsync(); 

Кроме того, я настоятельно рекомендую идти через испытание интеграции IdentityServer4, если вы собираетесь делать некоторые из ваших собственных тестов, как это.

+0

Это работает как шарм, спасибо. Но ссылка сломана :( – MJK

+0

извините, фиксированная ссылка :) – Lutando

Смежные вопросы