Adding AuthController tests - wip

This commit is contained in:
2025-03-01 19:53:09 +01:00
parent d0cb4666d4
commit 5591f6516b
6 changed files with 96 additions and 4 deletions

View File

@@ -0,0 +1,80 @@
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 Newtonsoft.Json;
using BasicDotnetTemplate.MainProject;
using BasicDotnetTemplate.MainProject.Controllers;
using BasicDotnetTemplate.MainProject.Services;
using BasicDotnetTemplate.MainProject.Models.Api.Response;
using BasicDotnetTemplate.MainProject.Models.Settings;
using BasicDotnetTemplate.MainProject.Models.Api.Request.Auth;
using BasicDotnetTemplate.MainProject.Models.Api.Data.Auth;
using BasicDotnetTemplate.MainProject.Models.Api.Common.User;
using BasicDotnetTemplate.MainProject.Models.Api.Common.Role;
using DatabaseSqlServer = BasicDotnetTemplate.MainProject.Models.Database.SqlServer;
using BasicDotnetTemplate.MainProject.Models.Api.Response.Auth;
namespace BasicDotnetTemplate.MainProject.Tests;
[TestClass]
public class AuthController_Tests
{
[TestMethod]
public void AuthController_NullConfiguration()
{
Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development");
var exception = true;
try
{
var authServiceMock = new Mock<IAuthService>();
_ = new AuthController(null, authServiceMock.Object);
exception = false;
Assert.Fail($"This test should not pass as configuration is null");
}
catch (Exception)
{
Assert.IsTrue(exception);
}
}
[TestMethod]
public async Task AuthenticateAsync_Should_Return_200_When_Successful()
{
IConfiguration configuration = TestUtils.CreateConfiguration();
var authServiceMock = new Mock<IAuthService>();
var controller = new AuthController(configuration, authServiceMock.Object);
DatabaseSqlServer.User user = new DatabaseSqlServer.User()
{
Username = "test",
FirstName = "test",
LastName = "test",
Email = "test",
PasswordHash = "test",
Role = new DatabaseSqlServer.Role()
{
Name = "test"
}
};
AuthenticatedUser authenticatedUser = new AuthenticatedUser(user);
var request = new AuthenticateRequest { Data = new AuthenticateRequestData { Username = "user", Password = "pass" } };
authServiceMock.Setup(s => s.AuthenticateAsync(It.IsAny<AuthenticateRequestData>())).ReturnsAsync(authenticatedUser);
ObjectResult result = (ObjectResult)(await controller.AuthenticateAsync(request));
var response = (BaseResponse)result.Value;
Assert.IsTrue(result.StatusCode == 200);
Assert.IsTrue(response.Status == 200);
Assert.IsInstanceOfType(response.Data, typeof(AuthenticatedUser));
}
}

View File

@@ -15,10 +15,10 @@ using BasicDotnetTemplate.MainProject.Models.Settings;
namespace BasicDotnetTemplate.MainProject.Tests; namespace BasicDotnetTemplate.MainProject.Tests;
[TestClass] [TestClass]
public class BaseController_Tests public class VersionController_Tests
{ {
[TestMethod] [TestMethod]
public void BaseController_NullConfiguration() public void VersionController_NullConfiguration()
{ {
Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development"); Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development");
var exception = true; var exception = true;
@@ -34,7 +34,6 @@ public class BaseController_Tests
} }
} }
[TestMethod] [TestMethod]
public void VersionController_GetVersion_Valid() public void VersionController_GetVersion_Valid()
{ {

View File

@@ -12,8 +12,10 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" /> <PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="Moq" Version="4.20.72" />
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" /> <PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" /> <PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc;
using BasicDotnetTemplate.MainProject.Core.Attributes; using BasicDotnetTemplate.MainProject.Core.Attributes;
using BasicDotnetTemplate.MainProject.Models.Api.Request.Auth; using BasicDotnetTemplate.MainProject.Models.Api.Request.Auth;
using BasicDotnetTemplate.MainProject.Models.Api.Response; using BasicDotnetTemplate.MainProject.Models.Api.Response;
using BasicDotnetTemplate.MainProject.Models.Api.Response.Auth;
using BasicDotnetTemplate.MainProject.Services; using BasicDotnetTemplate.MainProject.Services;
namespace BasicDotnetTemplate.MainProject.Controllers namespace BasicDotnetTemplate.MainProject.Controllers
@@ -21,7 +22,7 @@ namespace BasicDotnetTemplate.MainProject.Controllers
} }
[HttpPost("authenticate")] [HttpPost("authenticate")]
[ProducesResponseType<string>(StatusCodes.Status200OK)] [ProducesResponseType<AuthenticateResponse>(StatusCodes.Status200OK)]
[ProducesResponseType<BaseResponse>(StatusCodes.Status404NotFound)] [ProducesResponseType<BaseResponse>(StatusCodes.Status404NotFound)]
[ProducesResponseType<BaseResponse>(StatusCodes.Status400BadRequest)] [ProducesResponseType<BaseResponse>(StatusCodes.Status400BadRequest)]
[ProducesResponseType<BaseResponse>(StatusCodes.Status500InternalServerError)] [ProducesResponseType<BaseResponse>(StatusCodes.Status500InternalServerError)]

View File

@@ -32,6 +32,7 @@
<PackageReference Include="Microsoft.Identity.Web" Version="3.7.1" /> <PackageReference Include="Microsoft.Identity.Web" Version="3.7.1" />
<PackageReference Include="MongoDB.Driver" Version="2.28.0" /> <PackageReference Include="MongoDB.Driver" Version="2.28.0" />
<PackageReference Include="MongoDB.EntityFrameworkCore" Version="8.1.0" /> <PackageReference Include="MongoDB.EntityFrameworkCore" Version="8.1.0" />
<PackageReference Include="Moq" Version="4.20.72" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NLog" Version="5.2.8" /> <PackageReference Include="NLog" Version="5.2.8" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.8" /> <PackageReference Include="NLog.Extensions.Logging" Version="5.3.8" />

View File

@@ -0,0 +1,9 @@
using BasicDotnetTemplate.MainProject.Models.Api.Data.Auth;
using BasicDotnetTemplate.MainProject.Models.Api.Common.User;
namespace BasicDotnetTemplate.MainProject.Models.Api.Response.Auth;
public class AuthenticateResponse: BaseResponse
{
public AuthenticateResponse(int status, string? message, AuthenticatedUser? data) : base(status, message, data) {}
}