From d93d7e3dcc62f482594662c8857a507be4a4650f Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Tue, 17 Mar 2026 21:43:19 +0000 Subject: [PATCH] Fixed the login unit test. --- .../LoginGetUnitTests.cs | 34 ++++++++++++------- .../Controllers/AccountController.cs | 8 ++++- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/e-suite.API/eSuite.API.UnitTests/Controllers/AccountControllerUnitTests/LoginGetUnitTests.cs b/e-suite.API/eSuite.API.UnitTests/Controllers/AccountControllerUnitTests/LoginGetUnitTests.cs index 7178791..82dca00 100644 --- a/e-suite.API/eSuite.API.UnitTests/Controllers/AccountControllerUnitTests/LoginGetUnitTests.cs +++ b/e-suite.API/eSuite.API.UnitTests/Controllers/AccountControllerUnitTests/LoginGetUnitTests.cs @@ -1,8 +1,10 @@ using e_suite.API.Common.models; +using eSuite.API.Controllers; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Moq; using NUnit.Framework; +using System.Text.Json; namespace eSuite.API.UnitTests.Controllers.AccountControllerUnitTests; @@ -65,29 +67,37 @@ public class LoginGetUnitTests : AccountControllerTestBase Assert.That(actualLogin, Is.EqualTo(login)); } - [Test] public async Task LoginGet_WhenSsoIdCookieExists_RedirectsToSsoLoginUrl() { - //Arrange + // Arrange Login? login = null; var ssoProviderId = 1; var ssoUrl = "http://test.test/login"; - _cookieManagerMock.Setup(x => x.GetSsoIdFromSsoIdCookie(It.IsAny())).ReturnsAsync(() => ssoProviderId); - _singleSignOnMock.Setup(x => x.StartSingleSignOn(ssoProviderId, It.IsAny())) - .ReturnsAsync(() => ssoUrl); + _cookieManagerMock + .Setup(x => x.GetSsoIdFromSsoIdCookie(It.IsAny())) + .ReturnsAsync(ssoProviderId); - //Act + _singleSignOnMock + .Setup(x => x.StartSingleSignOn(ssoProviderId, It.IsAny())) + .ReturnsAsync(ssoUrl); + + // Act var response = await _accountController.LoginGet(login, CancellationToken.None); - //Assert - Assert.That(response, Is.TypeOf()); - - var redirectResult = response as RedirectResult; - Assert.That( redirectResult?.Url, Is.EqualTo(ssoUrl)); + // Assert + Assert.That(response, Is.TypeOf()); - _cookieManagerMock.Verify( x => x.DeleteSsoIdCookie(It.IsAny()), Times.Once); + var json = response as OkObjectResult; + Assert.That(json?.Value, Is.Not.Null); + + var payload = json!.Value as Redirect; + Assert.That(payload.RedirectTo, Is.EqualTo(ssoUrl)); + + _cookieManagerMock.Verify( + x => x.DeleteSsoIdCookie(It.IsAny()), + Times.Once); } } \ No newline at end of file diff --git a/e-suite.API/eSuite.API/Controllers/AccountController.cs b/e-suite.API/eSuite.API/Controllers/AccountController.cs index b50932d..c3489f2 100644 --- a/e-suite.API/eSuite.API/Controllers/AccountController.cs +++ b/e-suite.API/eSuite.API/Controllers/AccountController.cs @@ -22,6 +22,11 @@ public class ProfileViewModel public ITranslatorFactory TranslatorFactory { get; set; } } +public class Redirect +{ + public string RedirectTo { get; set; } +} + /// /// This MVC controller is used to support all user interactions when logging in and out of the system, including profile updates. /// @@ -71,7 +76,8 @@ public class AccountController : ESuiteController { await _cookieManager.DeleteSsoIdCookie(Response); var url = await _singleSignOn.StartSingleSignOn(ssoId.Value, cancellationToken); - return Ok(new { redirectTo = url }); + + return Ok(new Redirect { RedirectTo = url }); } login ??= new Login();