如何在 NUnit 测试用例中使用 HttpContext AuthenticateAsync 方法?
How to user HttpContext AuthenticateAsync method in NUnit test case?
我们正在为 Gmail 或 Microsoft 的外部登录使用 HttpContext Authenticate Async 方法。使用此 httpcontext 时登录并注册工作正常。但是当我们需要为此场景编写 NUnit 测试用例时,我无法初始化和设置声明身份。为以下场景编写代码
this.externalLoginController.ControllerContext = new ControllerContext();
this.externalLoginController.ControllerContext.HttpContext = new DefaultHttpContext();
var testScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
var principal = new ClaimsPrincipal();
principal.AddIdentity(new ClaimsIdentity(new[] {
new Claim(ClaimTypes.Role, "Administrator"),
new Claim(ClaimTypes.NameIdentifier, "test")
}, testScheme));
设置httpcontext初始化后调用函数
var result = await this.HttpContext.AuthenticateAsync(IdentityServerConstants.ExternalCookieAuthenticationScheme).ConfigureAwait(false);
在这种情况下面临“值不能为空:Parameter(provider)”之类的问题。
我需要对 NUnit 测试用例使用来自 HttpContext 的 Authenticate 异步方法。
请指教
谢谢,
萨拉瓦南
我使用下面的代码来模拟 AuthenticateAsync 方法和 return AuthenticateResult。
public class TestAuthenticationHandler : AuthenticationHandler<TestAuthenticationOptions>
{
protected override Task<AuthenticateResult> HandleAuthenticateAsync()
{
var authenticationTicket = new AuthenticationTicket(
new ClaimsPrincipal(Options.Identity),
new AuthenticationProperties(),
this.Options.AuthenticationScheme);
return Task.FromResult(AuthenticateResult.Success(authenticationTicket));
}
}
使我能够在单元测试中使用此方法并通过案例。
我们正在为 Gmail 或 Microsoft 的外部登录使用 HttpContext Authenticate Async 方法。使用此 httpcontext 时登录并注册工作正常。但是当我们需要为此场景编写 NUnit 测试用例时,我无法初始化和设置声明身份。为以下场景编写代码
this.externalLoginController.ControllerContext = new ControllerContext();
this.externalLoginController.ControllerContext.HttpContext = new DefaultHttpContext();
var testScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
var principal = new ClaimsPrincipal();
principal.AddIdentity(new ClaimsIdentity(new[] {
new Claim(ClaimTypes.Role, "Administrator"),
new Claim(ClaimTypes.NameIdentifier, "test")
}, testScheme));
设置httpcontext初始化后调用函数
var result = await this.HttpContext.AuthenticateAsync(IdentityServerConstants.ExternalCookieAuthenticationScheme).ConfigureAwait(false);
在这种情况下面临“值不能为空:Parameter(provider)”之类的问题。
我需要对 NUnit 测试用例使用来自 HttpContext 的 Authenticate 异步方法。
请指教
谢谢, 萨拉瓦南
我使用下面的代码来模拟 AuthenticateAsync 方法和 return AuthenticateResult。
public class TestAuthenticationHandler : AuthenticationHandler<TestAuthenticationOptions>
{
protected override Task<AuthenticateResult> HandleAuthenticateAsync()
{
var authenticationTicket = new AuthenticationTicket(
new ClaimsPrincipal(Options.Identity),
new AuthenticationProperties(),
this.Options.AuthenticationScheme);
return Task.FromResult(AuthenticateResult.Success(authenticationTicket));
}
}
使我能够在单元测试中使用此方法并通过案例。