0

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.

Mario Klisanic
  • 545
  • 2
  • 9
  • 18

0 Answers0