使用 IRequestExecutor 在 .Net 中模拟身份验证
Mocking Authentication in .Net with IRequestExecutor
第一次尝试在 .NET 中编写一些集成测试 - 专门针对 HotChocolate。
我已经对 WebApplicationFactory 进行了测试,剩下的最后一部分是尝试模拟身份验证。我尝试根据 Mock Authentication 进行设置,但我正在使用 IRequestExecutor 查询数据并发现设置它的实际方式实际上并没有触发:
[Fact]
public async Task GetJokes()
{
var query =
@"query Jokes {
jokes(jokeLength: SMALL) {
nodes {
id
body
}
}
}";
var request = QueryRequestBuilder.New().SetQuery(query).Create();
var executor = await _factory.Services.GetRequestExecutorAsync();
var result = await executor.ExecuteAsync(request);
(await result.ToJsonAsync()).MatchSnapshot();
}
当我调试它时,我从未在我的 AuthHandler 中点击 HandleAuthenticateAsync
(从上面链接的模拟身份验证设置),因此从未添加声明 - 所以看起来只有 运行 用于 httpClient请求 - 有没有办法配置 IRequestExecutor
也进行身份验证?
您可以将 ClaimsPrincipal
作为 属性 直接添加到 QueryRequestBuilder
。
var request = QueryRequestBuilder
.New()
.SetQuery(query)
.AddProperty(nameof(ClaimsPrincipal), new ClaimsPrincipal(new ClaimsIdentity("test")))
.Create();
第一次尝试在 .NET 中编写一些集成测试 - 专门针对 HotChocolate。
我已经对 WebApplicationFactory 进行了测试,剩下的最后一部分是尝试模拟身份验证。我尝试根据 Mock Authentication 进行设置,但我正在使用 IRequestExecutor 查询数据并发现设置它的实际方式实际上并没有触发:
[Fact]
public async Task GetJokes()
{
var query =
@"query Jokes {
jokes(jokeLength: SMALL) {
nodes {
id
body
}
}
}";
var request = QueryRequestBuilder.New().SetQuery(query).Create();
var executor = await _factory.Services.GetRequestExecutorAsync();
var result = await executor.ExecuteAsync(request);
(await result.ToJsonAsync()).MatchSnapshot();
}
当我调试它时,我从未在我的 AuthHandler 中点击 HandleAuthenticateAsync
(从上面链接的模拟身份验证设置),因此从未添加声明 - 所以看起来只有 运行 用于 httpClient请求 - 有没有办法配置 IRequestExecutor
也进行身份验证?
您可以将 ClaimsPrincipal
作为 属性 直接添加到 QueryRequestBuilder
。
var request = QueryRequestBuilder
.New()
.SetQuery(query)
.AddProperty(nameof(ClaimsPrincipal), new ClaimsPrincipal(new ClaimsIdentity("test")))
.Create();