Here is my code:
public IActionResult Post([FromBody] ApiPermission apiClient)
{
return Ok(_apiPermissionService.Add(apiClient, GetCurrentUserFullName(_httpContextAccessor.HttpContext.User)));
}
I need the result of GetCurrentUserFullName which has the definition of
internal string GetCurrentUserFullName(ClaimsPrincipal principal)
{
if (principal == null)
throw new ArgumentNullException(nameof(principal));
return principal.FindFirstValue("UserFullName");
}
How we can pass GetCurrentUserFullName to pass the test.
Below is my testing code:
public void Post()
{
Mock<ApiPermissionGroup> mockApiPermissionGroup = new Mock<ApiPermissionGroup>();
var apiPermission = new ApiPermission
{
ApiPermissionId = 1,
Name = "Name",
Description = "Description",
AddedBy = "AddedBy",
AddedDate = DateTime.UtcNow,
ModifiedBy = "ModifiedBy",
ModifiedDate = DateTime.UtcNow,
ApiPermissionGroupId = 2,
ApiPermissionGroup = mockApiPermissionGroup.Object
};
List<ApiPermission> lstApiPermission = new List<ApiPermission>();
lstApiPermission.Add(apiPermission);
ApiPermissionController ApiPermissionController = new ApiPermissionController(_mockApiPermissionService.Object, _mockHttpContextAccessor.Object);
var result = ApiPermissionController.Post(apiPermission);
Assert.IsNotNull(result);
}
When running the above code I am getting the error " System.NullReferenceException : Object reference not set to an instance of an object." at
Microsoft.AspNetCore.Http.IHttpContextAccessor.HttpContext.get returned null.