1
我尝试使用Azure移动应用程序.Net Server中的授权对我的api控制器进行单元测试。具有授权的单元测试Azure移动.NET控制器
我控制器的方法是这样的:
[Authorize]
public HttpResponseMessage SomeMethod()
{
var claimsPrincipal = this.User as ClaimsPrincipal;
string userId = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;
return Request.CreateResponse(HttpStatusCode.OK, userId);
}
我在单元测试方法类似这样的配置我的要求:
[TestMethod]
public void SomeMyAPIControllerTest(){
var config = new HttpConfiguration();
var request = new HttpRequestMessage();
request.RequestUri = new Uri("http://localhost:50268/api/MyAPI");
request.Headers.Add("x-zumo-auth", "_user_auth_token_");
request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
var controller = new MyAPIController(TestContext)
{
Request = request
};
var response = controller.SomeMethod();
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
}
我控制器的方法通过在本地主机上招摇工作正常,但通过单元测试方法这是行不通的。 当我尝试检索经过身份验证的用户信息时,claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier)
返回null
我想在请求配置中有一个错误。有什么建议么?
谢谢@Nkosi。用你的例子,我可以得到“身份/声明/名称:[email protected]”,但是如何添加“身份/声明/名称标识符”类型? – deman4ik
@ deman4ik我已经更新了答案,以包含您请求的信息。如果你觉得这个问题有帮助,可以随意投票。如果这确实可以解决您的问题,请不要忘记标记为已回答。谢谢 – Nkosi
是的,这正是我想要的!谢谢! – deman4ik