Added RoleController
This commit is contained in:
667
MainProject.Tests/Controllers/RoleController_Tests.cs
Normal file
667
MainProject.Tests/Controllers/RoleController_Tests.cs
Normal file
@@ -0,0 +1,667 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Infrastructure;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Moq;
|
||||
using BasicDotnetTemplate.MainProject.Controllers;
|
||||
using BasicDotnetTemplate.MainProject.Services;
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Response;
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Common.Role;
|
||||
using DatabaseSqlServer = BasicDotnetTemplate.MainProject.Models.Database.SqlServer;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Request.Role;
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Data.Role;
|
||||
using BasicDotnetTemplate.MainProject.Models.Database.SqlServer;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
|
||||
namespace BasicDotnetTemplate.MainProject.Tests;
|
||||
|
||||
[TestClass]
|
||||
public class RoleController_Tests
|
||||
{
|
||||
private Mock<IRoleService>? _roleServiceMock;
|
||||
private RoleController? _roleController;
|
||||
|
||||
[TestInitialize]
|
||||
public void Setup()
|
||||
{
|
||||
IConfiguration configuration = TestUtils.CreateConfiguration();
|
||||
_roleServiceMock = new Mock<IRoleService>();
|
||||
_roleController = new RoleController(configuration, _roleServiceMock?.Object);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void RoleController_NullConfiguration()
|
||||
{
|
||||
Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development");
|
||||
var exception = true;
|
||||
try
|
||||
{
|
||||
var roleServiceMock = new Mock<IRoleService>();
|
||||
_ = new RoleController(null, roleServiceMock.Object);
|
||||
exception = false;
|
||||
Assert.Fail($"This test should not pass as configuration is null");
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
Assert.IsTrue(exception);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[TestMethod]
|
||||
public async Task GetRoleByGuidAsync_Should_Return_200_When_Successful()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
var guid = Guid.NewGuid().ToString();
|
||||
DatabaseSqlServer.Role role = ModelsInit.CreateRole();
|
||||
|
||||
_roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny<string>())).ReturnsAsync(role);
|
||||
ObjectResult response = (ObjectResult)(await _roleController.GetRoleByGuidAsync(guid));
|
||||
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(RoleDto));
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Result value is null");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Response value is null");
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task GetRoleByGuidAsync_GuidIsEmpty()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
var guid = String.Empty;
|
||||
DatabaseSqlServer.Role? role = null;
|
||||
|
||||
_roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny<string>())).ReturnsAsync(role);
|
||||
ObjectResult response = (ObjectResult)(await _roleController.GetRoleByGuidAsync(guid));
|
||||
|
||||
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 GetRoleByGuidAsync_NotFound()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
var guid = Guid.NewGuid().ToString();
|
||||
DatabaseSqlServer.Role? role = null;
|
||||
_roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny<string>())).ReturnsAsync(role);
|
||||
NotFoundResult response = (NotFoundResult)(await _roleController.GetRoleByGuidAsync(guid));
|
||||
|
||||
Assert.IsInstanceOfType(response, typeof(NotFoundResult));
|
||||
|
||||
if (response != null)
|
||||
{
|
||||
Assert.IsTrue(response.StatusCode == StatusCodes.Status404NotFound);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Response is null");
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task GetRoleByGuidAsync_ModelInvalid()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
var guid = Guid.NewGuid().ToString();
|
||||
DatabaseSqlServer.Role? role = null;
|
||||
_roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny<string>())).ReturnsAsync(role);
|
||||
_roleController.ModelState.AddModelError("Data", "Invalid data");
|
||||
ObjectResult response = (ObjectResult)(await _roleController.GetRoleByGuidAsync(guid));
|
||||
|
||||
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 GetRoleByGuidAsync_Exception()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
var guid = Guid.NewGuid().ToString();
|
||||
_roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny<string>())).ThrowsAsync(new Exception("Unexpected error"));
|
||||
ObjectResult response = (ObjectResult)(await _roleController.GetRoleByGuidAsync(guid));
|
||||
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task CreateRoleAsync_Should_Return_200_When_Successful()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
if (_roleServiceMock == null)
|
||||
{
|
||||
Assert.Fail($"_roleServiceMock is null");
|
||||
}
|
||||
|
||||
DatabaseSqlServer.Role role = ModelsInit.CreateRole();
|
||||
|
||||
CreateRoleRequest request = new CreateRoleRequest()
|
||||
{
|
||||
Data = new CreateRoleRequestData()
|
||||
{
|
||||
Name = "RoleTest",
|
||||
IsNotEditable = true
|
||||
}
|
||||
};
|
||||
|
||||
_roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(true);
|
||||
_roleServiceMock?.Setup(s => s.CreateRoleAsync(request.Data)).ReturnsAsync(role);
|
||||
|
||||
ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(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(RoleDto));
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Result value is null");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Response value is null");
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task CreateRoleAsync_InvalidName()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
CreateRoleRequest request = new CreateRoleRequest()
|
||||
{
|
||||
Data = new CreateRoleRequestData()
|
||||
{
|
||||
Name = "RoleTest",
|
||||
IsNotEditable = true
|
||||
}
|
||||
};
|
||||
|
||||
_roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(false);
|
||||
|
||||
ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(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 == "Invalid name");
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Result value is null");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Response value is null");
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task CreateRoleAsync_CreateRoleRequestDataNull()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
DatabaseSqlServer.Role role = ModelsInit.CreateRole();
|
||||
|
||||
CreateRoleRequest request = new CreateRoleRequest()
|
||||
{
|
||||
Data = null
|
||||
};
|
||||
|
||||
_roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(true);
|
||||
|
||||
_roleServiceMock?.Setup(s => s.CreateRoleAsync(
|
||||
It.IsAny<CreateRoleRequestData>()
|
||||
)).ReturnsAsync(role);
|
||||
|
||||
ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(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 CreateRoleAsync_NotCreated()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
if (_roleServiceMock == null)
|
||||
{
|
||||
Assert.Fail($"_roleServiceMock is null");
|
||||
}
|
||||
|
||||
DatabaseSqlServer.Role role = ModelsInit.CreateRole();
|
||||
DatabaseSqlServer.Role? expectedRole = null;
|
||||
|
||||
CreateRoleRequest request = new CreateRoleRequest()
|
||||
{
|
||||
Data = new CreateRoleRequestData()
|
||||
{
|
||||
Name = "RoleTest",
|
||||
IsNotEditable = true
|
||||
}
|
||||
};
|
||||
|
||||
_roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(true);
|
||||
_roleServiceMock?.Setup(s => s.CreateRoleAsync(request.Data)).ReturnsAsync(expectedRole);
|
||||
|
||||
ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(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 == "Not created");
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Result value is null");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Response value is null");
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task CreateRoleAsync_ModelInvalid()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
DatabaseSqlServer.Role role = ModelsInit.CreateRole();
|
||||
|
||||
CreateRoleRequest request = new CreateRoleRequest()
|
||||
{
|
||||
Data = new CreateRoleRequestData()
|
||||
{
|
||||
Name = "RoleTest",
|
||||
IsNotEditable = true
|
||||
}
|
||||
};
|
||||
|
||||
_roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(true);
|
||||
|
||||
_roleServiceMock?.Setup(s => s.CreateRoleAsync(
|
||||
It.IsAny<CreateRoleRequestData>()
|
||||
)).ReturnsAsync(role);
|
||||
_roleController.ModelState.AddModelError("Data", "Invalid data");
|
||||
ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(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 CreateRoleAsync_Exception()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
if (_roleServiceMock == null)
|
||||
{
|
||||
Assert.Fail($"_roleServiceMock is null");
|
||||
}
|
||||
|
||||
DatabaseSqlServer.Role role = ModelsInit.CreateRole();
|
||||
|
||||
CreateRoleRequest request = new CreateRoleRequest()
|
||||
{
|
||||
Data = new CreateRoleRequestData()
|
||||
{
|
||||
Name = "RoleTest",
|
||||
IsNotEditable = true
|
||||
}
|
||||
};
|
||||
|
||||
_roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(true);
|
||||
_roleServiceMock?.Setup(s => s.CreateRoleAsync(
|
||||
It.IsAny<CreateRoleRequestData>()
|
||||
)).ThrowsAsync(new Exception("Unexpected error"));
|
||||
|
||||
ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(request));
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
[TestMethod]
|
||||
public async Task DeleteRoleByGuidAsync_Success()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
var guid = Guid.NewGuid().ToString();
|
||||
DatabaseSqlServer.Role role = ModelsInit.CreateRole();
|
||||
|
||||
_roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny<string>())).ReturnsAsync(role);
|
||||
ObjectResult response = (ObjectResult)(await _roleController.DeleteRoleByGuidAsync(guid));
|
||||
if (response != null && response.Value != null)
|
||||
{
|
||||
Assert.IsTrue(response.StatusCode == StatusCodes.Status200OK);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Response value is null");
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task DeleteRoleByGuidAsync_GuidIsEmpty()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
var guid = String.Empty;
|
||||
DatabaseSqlServer.Role? role = null;
|
||||
|
||||
_roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny<string>())).ReturnsAsync(role);
|
||||
ObjectResult response = (ObjectResult)(await _roleController.DeleteRoleByGuidAsync(guid));
|
||||
|
||||
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 DeleteRoleByGuidAsync_NotFound()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
var guid = Guid.NewGuid().ToString();
|
||||
DatabaseSqlServer.Role? role = null;
|
||||
_roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny<string>())).ReturnsAsync(role);
|
||||
NotFoundResult response = (NotFoundResult)(await _roleController.DeleteRoleByGuidAsync(guid));
|
||||
|
||||
Assert.IsInstanceOfType(response, typeof(NotFoundResult));
|
||||
|
||||
if (response != null)
|
||||
{
|
||||
Assert.IsTrue(response.StatusCode == StatusCodes.Status404NotFound);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Response is null");
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task DeleteRoleByGuidAsync_ModelInvalid()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
var guid = Guid.NewGuid().ToString();
|
||||
DatabaseSqlServer.Role? role = null;
|
||||
_roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny<string>())).ReturnsAsync(role);
|
||||
_roleController.ModelState.AddModelError("Data", "Invalid data");
|
||||
ObjectResult response = (ObjectResult)(await _roleController.DeleteRoleByGuidAsync(guid));
|
||||
|
||||
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 DeleteRoleByGuidAsync_Exception()
|
||||
{
|
||||
if (_roleController == null)
|
||||
{
|
||||
Assert.Fail($"_roleController is null");
|
||||
}
|
||||
|
||||
var guid = Guid.NewGuid().ToString();
|
||||
_roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny<string>())).ThrowsAsync(new Exception("Unexpected error"));
|
||||
ObjectResult response = (ObjectResult)(await _roleController.DeleteRoleByGuidAsync(guid));
|
||||
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -31,7 +31,7 @@ using BasicDotnetTemplate.MainProject.Models.Database.SqlServer;
|
||||
namespace BasicDotnetTemplate.MainProject.Tests;
|
||||
|
||||
[TestClass]
|
||||
public class UserControllerTests
|
||||
public class UserController_Tests
|
||||
{
|
||||
private Mock<IUserService>? _userServiceMock;
|
||||
private Mock<IRoleService>? _roleServiceMock;
|
||||
@@ -100,7 +100,7 @@ public class UserControllerTests
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task GetUserByGuidAsync_AuthenticateRequestDataNull()
|
||||
public async Task GetUserByGuidAsync_GuidIsEmpty()
|
||||
{
|
||||
if (_userController == null)
|
||||
{
|
||||
|
||||
162
MainProject/Controllers/RoleController.cs
Normal file
162
MainProject/Controllers/RoleController.cs
Normal file
@@ -0,0 +1,162 @@
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using BasicDotnetTemplate.MainProject.Core.Attributes;
|
||||
using BasicDotnetTemplate.MainProject.Services;
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Request.Role;
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Response;
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Response.Role;
|
||||
using BasicDotnetTemplate.MainProject.Models.Database.SqlServer;
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Common.Role;
|
||||
|
||||
namespace BasicDotnetTemplate.MainProject.Controllers
|
||||
{
|
||||
[Route("[controller]")]
|
||||
public class RoleController : BaseController
|
||||
{
|
||||
private readonly IRoleService _roleService;
|
||||
public RoleController(
|
||||
IConfiguration configuration,
|
||||
IRoleService roleService
|
||||
) : base(configuration)
|
||||
{
|
||||
this._roleService = roleService;
|
||||
}
|
||||
|
||||
[JwtAuthorization()]
|
||||
[HttpGet("get/{guid}")]
|
||||
[ProducesResponseType<GetRoleResponse>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<BaseResponse<object>>(StatusCodes.Status404NotFound)]
|
||||
[ProducesResponseType<BaseResponse<object>>(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType<BaseResponse<object>>(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> GetRoleByGuidAsync(string guid)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(_requestNotWellFormed);
|
||||
}
|
||||
|
||||
if (String.IsNullOrEmpty(guid))
|
||||
{
|
||||
return BadRequest(_requestNotWellFormed);
|
||||
}
|
||||
var role = await this._roleService.GetRoleByGuidAsync(guid);
|
||||
|
||||
if (role == null || String.IsNullOrEmpty(role.Guid))
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
var roleDto = _mapper?.Map<RoleDto>(role);
|
||||
|
||||
return Success(String.Empty, roleDto);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
var message = "Something went wrong";
|
||||
if (!String.IsNullOrEmpty(exception.Message))
|
||||
{
|
||||
message += $". {exception.Message}";
|
||||
}
|
||||
return InternalServerError(message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[JwtAuthorization()]
|
||||
[HttpPost("create")]
|
||||
[ProducesResponseType<GetRoleResponse>(StatusCodes.Status201Created)]
|
||||
[ProducesResponseType<BaseResponse<object>>(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType<BaseResponse<object>>(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> CreateRoleAsync([FromBody] CreateRoleRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(_requestNotWellFormed);
|
||||
}
|
||||
|
||||
if (request == null || request.Data == null || String.IsNullOrEmpty(request.Data.Name)
|
||||
)
|
||||
{
|
||||
return BadRequest(_requestNotWellFormed);
|
||||
}
|
||||
|
||||
if (await this._roleService.CheckIfNameIsValid(request.Data.Name))
|
||||
{
|
||||
var role = await this._roleService.CreateRoleAsync(request.Data);
|
||||
|
||||
if (role == null || String.IsNullOrEmpty(role.Guid))
|
||||
{
|
||||
return BadRequest("Not created");
|
||||
}
|
||||
|
||||
var roleDto = _mapper?.Map<RoleDto>(role);
|
||||
|
||||
return Success(String.Empty, roleDto);
|
||||
}
|
||||
else
|
||||
{
|
||||
return BadRequest("Invalid name");
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
var message = "Something went wrong";
|
||||
if (!String.IsNullOrEmpty(exception.Message))
|
||||
{
|
||||
message += $". {exception.Message}";
|
||||
}
|
||||
return InternalServerError(message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[JwtAuthorization()]
|
||||
[HttpDelete("{guid}")]
|
||||
[ProducesResponseType<GetRoleResponse>(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType<BaseResponse<object>>(StatusCodes.Status404NotFound)]
|
||||
[ProducesResponseType<BaseResponse<object>>(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType<BaseResponse<object>>(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> DeleteRoleByGuidAsync(string guid)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(_requestNotWellFormed);
|
||||
}
|
||||
|
||||
if (String.IsNullOrEmpty(guid))
|
||||
{
|
||||
return BadRequest(_requestNotWellFormed);
|
||||
}
|
||||
var role = await this._roleService.GetRoleByGuidAsync(guid);
|
||||
|
||||
if (role == null || String.IsNullOrEmpty(role.Guid))
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
await this._roleService.DeleteRoleAsync(role);
|
||||
|
||||
return Success(String.Empty);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
var message = "Something went wrong";
|
||||
if (!String.IsNullOrEmpty(exception.Message))
|
||||
{
|
||||
message += $". {exception.Message}";
|
||||
}
|
||||
return InternalServerError(message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Common.User;
|
||||
using SqlServerDatabase = BasicDotnetTemplate.MainProject.Models.Database.SqlServer;
|
||||
using AutoMapper;
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Common.Role;
|
||||
|
||||
|
||||
namespace BasicDotnetTemplate.MainProject.Core.Middlewares;
|
||||
@@ -8,6 +9,7 @@ public class AutoMapperConfiguration : Profile
|
||||
{
|
||||
public AutoMapperConfiguration()
|
||||
{
|
||||
CreateMap<SqlServerDatabase.Role, RoleDto>();
|
||||
CreateMap<SqlServerDatabase.User, UserDto>();
|
||||
|
||||
}
|
||||
|
||||
14
MainProject/Models/Api/Common/Role/RoleDto.cs
Normal file
14
MainProject/Models/Api/Common/Role/RoleDto.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace BasicDotnetTemplate.MainProject.Models.Api.Common.Role;
|
||||
|
||||
public class RoleDto
|
||||
{
|
||||
#nullable enable
|
||||
public string? Guid { get; set; }
|
||||
public string? Name { get; set; }
|
||||
public bool? IsNotEditable { get; set; }
|
||||
#nullable disable
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
10
MainProject/Models/Api/Request/Role/CreateRoleRequest.cs
Normal file
10
MainProject/Models/Api/Request/Role/CreateRoleRequest.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Data.Role;
|
||||
|
||||
namespace BasicDotnetTemplate.MainProject.Models.Api.Request.Role;
|
||||
|
||||
public class CreateRoleRequest
|
||||
{
|
||||
#nullable enable
|
||||
public CreateRoleRequestData? Data { get; set; }
|
||||
#nullable disable
|
||||
}
|
||||
8
MainProject/Models/Api/Response/Role/GetRoleResponse.cs
Normal file
8
MainProject/Models/Api/Response/Role/GetRoleResponse.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using BasicDotnetTemplate.MainProject.Models.Api.Common.Role;
|
||||
|
||||
namespace BasicDotnetTemplate.MainProject.Models.Api.Response.Role;
|
||||
|
||||
public class GetRoleResponse : BaseResponse<RoleDto>
|
||||
{
|
||||
public GetRoleResponse(int status, string? message, RoleDto? data) : base(status, message, data) { }
|
||||
}
|
||||
Reference in New Issue
Block a user