使用 TestServer 托管 ASOS



我有一个基于AspNet.Security.OpenIdConnect.ServerOpenIdDict身份验证服务器。安装程序按预期工作。

现在做一些流程中的集成;跨越整个后端架构的系统测试 我使用TestServer类。

为什么我这样测试是另一个问题

  • 以最少的工作量覆盖大多数测试代码
  • 已经决定不做单元测试...(他们说工作量太大)
  • 真正的集成测试,跨越更少的代码,当我想实现良好的覆盖率时,也可以看到很多工作
  • 该测试基于使用域语言方法构建的框架,这意味着我可以描述与我们当前的Web api测试,Selenium Web UI测试,Selenium负载测试和wpf UI测试相同的功能。

当我调用资源服务器的 Web api 终结点时,授权想要加载http://localhost/.well-known/openid-configuration但失败。

{"IDX10803: 无法从以下位置获取配置: 'http://localhost/.well-known/openid-configuration'。"})

这是我用于测试环境的OpenIdConnect设置:

  • AllowInsecureHttp = true,
  • RequireHttpsMetadata = false

我可以让服务器发出配置,还是可以通过其他方式提供配置?

TestServer需要注意的重要一点是,一切都发生在内存中:没有打开套接字来处理应用程序可能发送的 HTTP 请求。

不幸的是,OpenID Connect客户端中间件(内部使用HttpClient)无法知道这一点,并尝试向OpenIddict发送"真正的"HTTP请求以检索发现文档。

若要解决此问题,建议的方法是替换 OIDC 中间件使用的默认反向通道处理程序,以使用TestServer.CreateHandler()提供的内存中处理程序:

app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
Authority = "http://localhost:54540/",
RequireHttpsMetadata = false,
ClientId = "myClient",
ClientSecret = "secret_secret_secret",
BackchannelHttpHandler = server.CreateHandler()
});

注意:相同的方法也适用于 JWT 承载中间件和 aspnet-contrib 自检中间件。

相关内容

  • 没有找到相关文章

最新更新