Adding tests for UserController
This commit is contained in:
@@ -23,6 +23,9 @@ using BasicDotnetTemplate.MainProject.Models.Api.Response.Auth;
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using BasicDotnetTemplate.MainProject.Core.Middlewares;
|
using BasicDotnetTemplate.MainProject.Core.Middlewares;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using BasicDotnetTemplate.MainProject.Models.Api.Request.User;
|
||||||
|
using BasicDotnetTemplate.MainProject.Models.Api.Data.User;
|
||||||
|
using BasicDotnetTemplate.MainProject.Models.Database.SqlServer;
|
||||||
|
|
||||||
|
|
||||||
namespace BasicDotnetTemplate.MainProject.Tests;
|
namespace BasicDotnetTemplate.MainProject.Tests;
|
||||||
@@ -31,6 +34,9 @@ namespace BasicDotnetTemplate.MainProject.Tests;
|
|||||||
public class UserControllerTests
|
public class UserControllerTests
|
||||||
{
|
{
|
||||||
private IMapper? _mapper;
|
private IMapper? _mapper;
|
||||||
|
private Mock<IUserService> _userServiceMock;
|
||||||
|
private Mock<IRoleService> _roleServiceMock;
|
||||||
|
private UserController _userController;
|
||||||
|
|
||||||
[TestInitialize]
|
[TestInitialize]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
@@ -41,6 +47,10 @@ public class UserControllerTests
|
|||||||
});
|
});
|
||||||
|
|
||||||
_mapper = config.CreateMapper();
|
_mapper = config.CreateMapper();
|
||||||
|
IConfiguration configuration = TestUtils.CreateConfiguration();
|
||||||
|
_userServiceMock = new Mock<IUserService>();
|
||||||
|
_roleServiceMock = new Mock<IRoleService>();
|
||||||
|
_userController = new UserController(configuration, _userServiceMock.Object, _roleServiceMock.Object);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@@ -66,15 +76,11 @@ public class UserControllerTests
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public async Task GetUserByGuidAsync_Should_Return_200_When_Successful()
|
public async Task GetUserByGuidAsync_Should_Return_200_When_Successful()
|
||||||
{
|
{
|
||||||
IConfiguration configuration = TestUtils.CreateConfiguration();
|
|
||||||
var userServiceMock = new Mock<IUserService>();
|
|
||||||
var roleServiceMock = new Mock<IRoleService>();
|
|
||||||
var controller = new UserController(configuration, userServiceMock.Object, roleServiceMock.Object);
|
|
||||||
var guid = Guid.NewGuid().ToString();
|
var guid = Guid.NewGuid().ToString();
|
||||||
DatabaseSqlServer.User user = ModelsInit.CreateUser();
|
DatabaseSqlServer.User user = ModelsInit.CreateUser();
|
||||||
|
|
||||||
userServiceMock.Setup(s => s.GetUserByGuidAsync(It.IsAny<string>())).ReturnsAsync(user);
|
_userServiceMock.Setup(s => s.GetUserByGuidAsync(It.IsAny<string>())).ReturnsAsync(user);
|
||||||
ObjectResult response = (ObjectResult)(await controller.GetUserByGuidAsync(guid));
|
ObjectResult response = (ObjectResult)(await _userController.GetUserByGuidAsync(guid));
|
||||||
if (response != null && response.Value != null)
|
if (response != null && response.Value != null)
|
||||||
{
|
{
|
||||||
Assert.IsTrue(response.StatusCode == StatusCodes.Status200OK);
|
Assert.IsTrue(response.StatusCode == StatusCodes.Status200OK);
|
||||||
@@ -83,7 +89,7 @@ public class UserControllerTests
|
|||||||
if (result != null)
|
if (result != null)
|
||||||
{
|
{
|
||||||
Assert.IsTrue(result.Status == StatusCodes.Status200OK);
|
Assert.IsTrue(result.Status == StatusCodes.Status200OK);
|
||||||
Assert.IsInstanceOfType(result.Data, typeof(DatabaseSqlServer.User));
|
Assert.IsInstanceOfType(result.Data, typeof(UserDto));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -99,16 +105,11 @@ public class UserControllerTests
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public async Task GetUserByGuidAsync_AuthenticateRequestDataNull()
|
public async Task GetUserByGuidAsync_AuthenticateRequestDataNull()
|
||||||
{
|
{
|
||||||
IConfiguration configuration = TestUtils.CreateConfiguration();
|
|
||||||
var userServiceMock = new Mock<IUserService>();
|
|
||||||
var roleServiceMock = new Mock<IRoleService>();
|
|
||||||
var controller = new UserController(configuration, userServiceMock.Object, roleServiceMock.Object);
|
|
||||||
|
|
||||||
var guid = String.Empty;
|
var guid = String.Empty;
|
||||||
DatabaseSqlServer.User? user = null;
|
DatabaseSqlServer.User? user = null;
|
||||||
|
|
||||||
userServiceMock.Setup(s => s.GetUserByGuidAsync(It.IsAny<string>())).ReturnsAsync(user);
|
_userServiceMock.Setup(s => s.GetUserByGuidAsync(It.IsAny<string>())).ReturnsAsync(user);
|
||||||
ObjectResult response = (ObjectResult)(await controller.GetUserByGuidAsync(guid));
|
ObjectResult response = (ObjectResult)(await _userController.GetUserByGuidAsync(guid));
|
||||||
|
|
||||||
if (response != null && response.Value != null)
|
if (response != null && response.Value != null)
|
||||||
{
|
{
|
||||||
@@ -134,15 +135,10 @@ public class UserControllerTests
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public async Task GetUserByGuidAsync_NotFound()
|
public async Task GetUserByGuidAsync_NotFound()
|
||||||
{
|
{
|
||||||
IConfiguration configuration = TestUtils.CreateConfiguration();
|
|
||||||
var userServiceMock = new Mock<IUserService>();
|
|
||||||
var roleServiceMock = new Mock<IRoleService>();
|
|
||||||
var controller = new UserController(configuration, userServiceMock.Object, roleServiceMock.Object);
|
|
||||||
|
|
||||||
var guid = Guid.NewGuid().ToString();
|
var guid = Guid.NewGuid().ToString();
|
||||||
DatabaseSqlServer.User? user = null;
|
DatabaseSqlServer.User? user = null;
|
||||||
userServiceMock.Setup(s => s.GetUserByGuidAsync(It.IsAny<string>())).ReturnsAsync(user);
|
_userServiceMock.Setup(s => s.GetUserByGuidAsync(It.IsAny<string>())).ReturnsAsync(user);
|
||||||
NotFoundResult response = (NotFoundResult)(await controller.GetUserByGuidAsync(guid));
|
NotFoundResult response = (NotFoundResult)(await _userController.GetUserByGuidAsync(guid));
|
||||||
|
|
||||||
Assert.IsInstanceOfType(response, typeof(NotFoundResult));
|
Assert.IsInstanceOfType(response, typeof(NotFoundResult));
|
||||||
|
|
||||||
@@ -159,16 +155,11 @@ public class UserControllerTests
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public async Task GetUserByGuidAsync_ModelInvalid()
|
public async Task GetUserByGuidAsync_ModelInvalid()
|
||||||
{
|
{
|
||||||
IConfiguration configuration = TestUtils.CreateConfiguration();
|
|
||||||
var userServiceMock = new Mock<IUserService>();
|
|
||||||
var roleServiceMock = new Mock<IRoleService>();
|
|
||||||
var controller = new UserController(configuration, userServiceMock.Object, roleServiceMock.Object);
|
|
||||||
|
|
||||||
var guid = Guid.NewGuid().ToString();
|
var guid = Guid.NewGuid().ToString();
|
||||||
DatabaseSqlServer.User? user = null;
|
DatabaseSqlServer.User? user = null;
|
||||||
userServiceMock.Setup(s => s.GetUserByGuidAsync(It.IsAny<string>())).ReturnsAsync(user);
|
_userServiceMock.Setup(s => s.GetUserByGuidAsync(It.IsAny<string>())).ReturnsAsync(user);
|
||||||
controller.ModelState.AddModelError("Data", "Invalid data");
|
_userController.ModelState.AddModelError("Data", "Invalid data");
|
||||||
ObjectResult response = (ObjectResult)(await controller.GetUserByGuidAsync(guid));
|
ObjectResult response = (ObjectResult)(await _userController.GetUserByGuidAsync(guid));
|
||||||
|
|
||||||
Assert.IsInstanceOfType(response, typeof(ObjectResult));
|
Assert.IsInstanceOfType(response, typeof(ObjectResult));
|
||||||
|
|
||||||
@@ -196,14 +187,9 @@ public class UserControllerTests
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public async Task GetUserByGuidAsync_Exception()
|
public async Task GetUserByGuidAsync_Exception()
|
||||||
{
|
{
|
||||||
IConfiguration configuration = TestUtils.CreateConfiguration();
|
|
||||||
var userServiceMock = new Mock<IUserService>();
|
|
||||||
var roleServiceMock = new Mock<IRoleService>();
|
|
||||||
var controller = new UserController(configuration, userServiceMock.Object, roleServiceMock.Object);
|
|
||||||
|
|
||||||
var guid = Guid.NewGuid().ToString();
|
var guid = Guid.NewGuid().ToString();
|
||||||
userServiceMock.Setup(s => s.GetUserByGuidAsync(It.IsAny<string>())).ThrowsAsync(new Exception("Unexpected error"));
|
_userServiceMock.Setup(s => s.GetUserByGuidAsync(It.IsAny<string>())).ThrowsAsync(new Exception("Unexpected error"));
|
||||||
ObjectResult response = (ObjectResult)(await controller.GetUserByGuidAsync(guid));
|
ObjectResult response = (ObjectResult)(await _userController.GetUserByGuidAsync(guid));
|
||||||
|
|
||||||
Assert.IsInstanceOfType(response, typeof(ObjectResult));
|
Assert.IsInstanceOfType(response, typeof(ObjectResult));
|
||||||
|
|
||||||
@@ -228,4 +214,268 @@ public class UserControllerTests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public async Task CreateUserAsync_Should_Return_200_When_Successful()
|
||||||
|
{
|
||||||
|
DatabaseSqlServer.User user = ModelsInit.CreateUser();
|
||||||
|
DatabaseSqlServer.Role role = ModelsInit.CreateRole();
|
||||||
|
|
||||||
|
CreateUserRequest request = new CreateUserRequest()
|
||||||
|
{
|
||||||
|
Data = new CreateUserRequestData()
|
||||||
|
{
|
||||||
|
FirstName = user.FirstName,
|
||||||
|
LastName = user.LastName,
|
||||||
|
Email = user.Email,
|
||||||
|
Password = user.Password
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_roleServiceMock.Setup(s => s.GetRoleForUser(null)).ReturnsAsync(role);
|
||||||
|
_userServiceMock.Setup(s => s.CreateUserAsync(request.Data, role)).ReturnsAsync(user);
|
||||||
|
|
||||||
|
ObjectResult response = (ObjectResult)(await _userController.CreateUserAsync(request));
|
||||||
|
if (response != null && response.Value != null)
|
||||||
|
{
|
||||||
|
Assert.IsTrue(response.StatusCode == StatusCodes.Status200OK);
|
||||||
|
|
||||||
|
var result = (BaseResponse<object>)response.Value;
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
Assert.IsTrue(result.Status == StatusCodes.Status200OK);
|
||||||
|
Assert.IsInstanceOfType(result.Data, typeof(UserDto));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Result value is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Response value is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public async Task CreateUserAsync_RoleNull()
|
||||||
|
{
|
||||||
|
DatabaseSqlServer.User user = ModelsInit.CreateUser();
|
||||||
|
|
||||||
|
CreateUserRequest request = new CreateUserRequest()
|
||||||
|
{
|
||||||
|
Data = new CreateUserRequestData()
|
||||||
|
{
|
||||||
|
FirstName = user.FirstName,
|
||||||
|
LastName = user.LastName,
|
||||||
|
Email = user.Email,
|
||||||
|
Password = user.Password
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_userServiceMock.Setup(s => s.CreateUserAsync(
|
||||||
|
It.IsAny<CreateUserRequestData>(),
|
||||||
|
It.IsAny<Role>()
|
||||||
|
)).ReturnsAsync(user);
|
||||||
|
|
||||||
|
ObjectResult response = (ObjectResult)(await _userController.CreateUserAsync(request));
|
||||||
|
|
||||||
|
if (response != null && response.Value != null)
|
||||||
|
{
|
||||||
|
Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest);
|
||||||
|
|
||||||
|
var result = (BaseResponse<object>)response.Value;
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest);
|
||||||
|
Assert.IsTrue(result.Message == "Role not found");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Result value is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Response value is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public async Task CreateUserAsync_CreateUserRequestDataNull()
|
||||||
|
{
|
||||||
|
DatabaseSqlServer.User user = ModelsInit.CreateUser();
|
||||||
|
|
||||||
|
CreateUserRequest request = new CreateUserRequest()
|
||||||
|
{
|
||||||
|
Data = null
|
||||||
|
};
|
||||||
|
|
||||||
|
_userServiceMock.Setup(s => s.CreateUserAsync(
|
||||||
|
It.IsAny<CreateUserRequestData>(),
|
||||||
|
It.IsAny<Role>()
|
||||||
|
)).ReturnsAsync(user);
|
||||||
|
|
||||||
|
ObjectResult response = (ObjectResult)(await _userController.CreateUserAsync(request));
|
||||||
|
|
||||||
|
if (response != null && response.Value != null)
|
||||||
|
{
|
||||||
|
Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest);
|
||||||
|
|
||||||
|
var result = (BaseResponse<object>)response.Value;
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest);
|
||||||
|
Assert.IsTrue(result.Message == "Request is not well formed");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Result value is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Response value is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public async Task CreateUserAsync_NotCreated()
|
||||||
|
{
|
||||||
|
DatabaseSqlServer.User user = ModelsInit.CreateUser();
|
||||||
|
DatabaseSqlServer.Role role = ModelsInit.CreateRole();
|
||||||
|
DatabaseSqlServer.User? expectedUser = null;
|
||||||
|
|
||||||
|
CreateUserRequest request = new CreateUserRequest()
|
||||||
|
{
|
||||||
|
Data = new CreateUserRequestData()
|
||||||
|
{
|
||||||
|
FirstName = user.FirstName,
|
||||||
|
LastName = user.LastName,
|
||||||
|
Email = user.Email,
|
||||||
|
Password = user.Password
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_roleServiceMock.Setup(s => s.GetRoleForUser(null)).ReturnsAsync(role);
|
||||||
|
_userServiceMock.Setup(s => s.CreateUserAsync(request.Data, role)).ReturnsAsync(expectedUser);
|
||||||
|
|
||||||
|
ObjectResult response = (ObjectResult)(await _userController.CreateUserAsync(request));
|
||||||
|
if (response != null && response.Value != null)
|
||||||
|
{
|
||||||
|
Console.WriteLine(JsonConvert.SerializeObject(response));
|
||||||
|
Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest);
|
||||||
|
|
||||||
|
var result = (BaseResponse<object>)response.Value;
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest);
|
||||||
|
Assert.IsTrue(result.Message == "Not created");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Result value is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Response value is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public async Task CreateUserAsync_ModelInvalid()
|
||||||
|
{
|
||||||
|
DatabaseSqlServer.User user = ModelsInit.CreateUser();
|
||||||
|
|
||||||
|
CreateUserRequest request = new CreateUserRequest()
|
||||||
|
{
|
||||||
|
Data = new CreateUserRequestData()
|
||||||
|
{
|
||||||
|
FirstName = user.FirstName,
|
||||||
|
LastName = user.LastName,
|
||||||
|
Email = user.Email,
|
||||||
|
Password = user.Password
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_userServiceMock.Setup(s => s.CreateUserAsync(
|
||||||
|
It.IsAny<CreateUserRequestData>(),
|
||||||
|
It.IsAny<Role>()
|
||||||
|
)).ReturnsAsync(user);
|
||||||
|
_userController.ModelState.AddModelError("Data", "Invalid data");
|
||||||
|
ObjectResult response = (ObjectResult)(await _userController.CreateUserAsync(request));
|
||||||
|
|
||||||
|
Assert.IsInstanceOfType(response, typeof(ObjectResult));
|
||||||
|
|
||||||
|
if (response != null && response.Value != null)
|
||||||
|
{
|
||||||
|
Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest);
|
||||||
|
|
||||||
|
var result = (BaseResponse<object>)response.Value;
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest);
|
||||||
|
Assert.IsTrue(result.Message == "Request is not well formed");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Result value is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Response is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public async Task CreateUserAsync_Exception()
|
||||||
|
{
|
||||||
|
DatabaseSqlServer.User user = ModelsInit.CreateUser();
|
||||||
|
DatabaseSqlServer.Role role = ModelsInit.CreateRole();
|
||||||
|
|
||||||
|
CreateUserRequest request = new CreateUserRequest()
|
||||||
|
{
|
||||||
|
Data = new CreateUserRequestData()
|
||||||
|
{
|
||||||
|
FirstName = user.FirstName,
|
||||||
|
LastName = user.LastName,
|
||||||
|
Email = user.Email,
|
||||||
|
Password = user.Password
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_roleServiceMock.Setup(s => s.GetRoleForUser(null)).ReturnsAsync(role);
|
||||||
|
_userServiceMock.Setup(s => s.CreateUserAsync(request.Data, role)).ReturnsAsync(user);
|
||||||
|
|
||||||
|
_userServiceMock.Setup(s => s.CreateUserAsync(
|
||||||
|
It.IsAny<CreateUserRequestData>(),
|
||||||
|
It.IsAny<Role>()
|
||||||
|
)).ThrowsAsync(new Exception("Unexpected error"));
|
||||||
|
|
||||||
|
ObjectResult response = (ObjectResult)(await _userController.CreateUserAsync(request));
|
||||||
|
Console.WriteLine(JsonConvert.SerializeObject(response));
|
||||||
|
Assert.IsInstanceOfType(response, typeof(ObjectResult));
|
||||||
|
|
||||||
|
if (response != null && response.Value != null)
|
||||||
|
{
|
||||||
|
Assert.IsTrue(response.StatusCode == StatusCodes.Status500InternalServerError);
|
||||||
|
|
||||||
|
var result = (BaseResponse<object>)response.Value;
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
Assert.IsTrue(result.Status == StatusCodes.Status500InternalServerError);
|
||||||
|
Assert.IsTrue(result.Message == "Something went wrong. Unexpected error");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Result value is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail($"Response is null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ namespace BasicDotnetTemplate.MainProject.Controllers
|
|||||||
|
|
||||||
if (await this._userService.CheckIfEmailIsValid(request.Data.Email))
|
if (await this._userService.CheckIfEmailIsValid(request.Data.Email))
|
||||||
{
|
{
|
||||||
return BadRequest();
|
return BadRequest("Invalid email");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -107,7 +107,7 @@ namespace BasicDotnetTemplate.MainProject.Controllers
|
|||||||
|
|
||||||
if (user == null || String.IsNullOrEmpty(user.Guid))
|
if (user == null || String.IsNullOrEmpty(user.Guid))
|
||||||
{
|
{
|
||||||
return BadRequest();
|
return BadRequest("Not created");
|
||||||
}
|
}
|
||||||
|
|
||||||
var userDto = _mapper?.Map<UserDto>(user);
|
var userDto = _mapper?.Map<UserDto>(user);
|
||||||
|
|||||||
Reference in New Issue
Block a user