I want to test my controller action that looks like this:
[HttpGet("{id}")]
public IActionResult GetUserById(int id)
{
var user = _userService.GetUserById(id);
if (user == null)
{
return NotFound();
}
var currentUserId = int.Parse(User.Identity.Name);
if (id != currentUserId && !User.IsInRole(Role.Admin))
{
return Forbid();
}
return Ok(user);
}
My test method looks like this:
[Test]
[TestCase(1)]
public void GetUserById_ValidIdAsParameter_ShouldReturnOk(int id)
{
var result = _controller.GetUserById(id);
Assert.That(result, Is.TypeOf<OkObjectResult>());
}
My problem is that I get 'Object reference not set to an instance of an object.' for this line:
var currentUserId = int.Parse(User.Identity.Name);
I'm unable to set myController.User.Identity.Name since it is a read only property.