Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 127 additions & 20 deletions Execution_UI/Execution_UI.Tests/Pages/CastPageTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.Extensions.Logging;
using Execution_UI.Pages;
using Execution_UI.Services;

namespace Execution_UI.Tests.Pages
{
Expand All @@ -18,16 +19,22 @@ private Mock<ILogger<IndexModel>> CreateMockLogger()
return new Mock<ILogger<IndexModel>>();
}

private Mock<AuthenticationService> CreateMockAuthenticationService()
{
return new Mock<AuthenticationService>(null!);
}

#region Constructor Tests

[Fact]
public void Constructor_WithValidLogger_InitializesSuccessfully()
public void Constructor_WithValidDependencies_InitializesSuccessfully()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();

// Act
var model = new CastModel(mockLogger.Object);
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Assert
Assert.NotNull(model);
Expand All @@ -38,9 +45,10 @@ public void Constructor_InitializesOriginatorUUIDsList()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();

// Act
var model = new CastModel(mockLogger.Object);
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Assert
Assert.NotNull(model.originatorUUIDs);
Expand All @@ -53,16 +61,39 @@ public void Constructor_InitializesDisplayNamesList()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();

// Act
var model = new CastModel(mockLogger.Object);
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Assert
Assert.NotNull(model.displayNames);
Assert.IsType<List<string>>(model.displayNames);
Assert.Empty(model.displayNames);
}

[Fact]
public void Constructor_WithNullLogger_AcceptsNull()
{
// Arrange
var mockAuthService = CreateMockAuthenticationService();

// Act & Assert - Constructor signature allows null
var model = new CastModel(null!, mockAuthService.Object);
Assert.NotNull(model);
}

[Fact]
public void Constructor_WithNullAuthenticationService_AcceptsNull()
{
// Arrange
var mockLogger = CreateMockLogger();

// Act & Assert - Constructor signature allows null
var model = new CastModel(mockLogger.Object, null!);
Assert.NotNull(model);
}

#endregion

#region Inheritance Tests
Expand All @@ -72,9 +103,10 @@ public void CastModel_InheritsFromPageModel()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();

// Act
var model = new CastModel(mockLogger.Object);
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Assert
Assert.IsAssignableFrom<PageModel>(model);
Expand All @@ -89,7 +121,8 @@ public void SelectedValue_CanBeSet()
{
// Arrange
var mockLogger = CreateMockLogger();
var model = new CastModel(mockLogger.Object);
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);
var testValue = "test-value";

// Act
Expand All @@ -104,7 +137,8 @@ public void SelectedValue_CanBeSetToNull()
{
// Arrange
var mockLogger = CreateMockLogger();
var model = new CastModel(mockLogger.Object);
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Act
model.SelectedValue = null;
Expand All @@ -118,7 +152,8 @@ public void SelectedValue_CanBeSetMultipleTimes()
{
// Arrange
var mockLogger = CreateMockLogger();
var model = new CastModel(mockLogger.Object);
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);
var value1 = "value1";
var value2 = "value2";

Expand All @@ -136,7 +171,8 @@ public void Options_CanBeSet()
{
// Arrange
var mockLogger = CreateMockLogger();
var model = new CastModel(mockLogger.Object);
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);
var items = new List<string> { "option1", "option2", "option3" };
var selectList = new SelectList(items);

Expand All @@ -153,7 +189,8 @@ public void Options_CanBeNull()
{
// Arrange
var mockLogger = CreateMockLogger();
var model = new CastModel(mockLogger.Object);
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Act
model.Options = null;
Expand All @@ -162,6 +199,66 @@ public void Options_CanBeNull()
Assert.Null(model.Options);
}

[Fact]
public void IsLoginRequired_CanBeSet()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Act
model.IsLoginRequired = true;

// Assert
Assert.True(model.IsLoginRequired);
}

[Fact]
public void IsAuthenticated_CanBeSet()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Act
model.IsAuthenticated = true;

// Assert
Assert.True(model.IsAuthenticated);
}

[Fact]
public void AuthenticationError_DefaultsToEmptyString()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();

// Act
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Assert
Assert.Equal(string.Empty, model.AuthenticationError);
}

[Fact]
public void AuthenticationError_CanBeSet()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);
var errorMessage = "Invalid credentials";

// Act
model.AuthenticationError = errorMessage;

// Assert
Assert.Equal(errorMessage, model.AuthenticationError);
}

#endregion

#region Root Directory Tests
Expand All @@ -171,9 +268,10 @@ public void RootDir_IsNotEmpty()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();

// Act
var model = new CastModel(mockLogger.Object);
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Assert
Assert.NotNull(model.rootDir);
Expand All @@ -185,7 +283,8 @@ public void RootDir_ContainsValidPath()
{
// Arrange
var mockLogger = CreateMockLogger();
var model = new CastModel(mockLogger.Object);
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Act & Assert
Assert.True(model.rootDir.Contains("..") || model.rootDir.Contains(Path.DirectorySeparatorChar.ToString()));
Expand All @@ -200,7 +299,8 @@ public void OriginatorUUIDs_CanAddItem()
{
// Arrange
var mockLogger = CreateMockLogger();
var model = new CastModel(mockLogger.Object);
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);
var testUuid = "test-uuid-123";

// Act
Expand All @@ -216,7 +316,8 @@ public void OriginatorUUIDs_CanAddMultipleItems()
{
// Arrange
var mockLogger = CreateMockLogger();
var model = new CastModel(mockLogger.Object);
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);
var uuid1 = "uuid-1";
var uuid2 = "uuid-2";
var uuid3 = "uuid-3";
Expand All @@ -238,7 +339,8 @@ public void DisplayNames_CanAddItem()
{
// Arrange
var mockLogger = CreateMockLogger();
var model = new CastModel(mockLogger.Object);
var mockAuthService = CreateMockAuthenticationService();
var model = new CastModel(mockLogger.Object, mockAuthService.Object);
var displayName = "Test Client";

// Act
Expand All @@ -254,9 +356,10 @@ public void StartRun_InitializesAsEmptyList()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();

// Act
var model = new CastModel(mockLogger.Object);
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Assert
Assert.NotNull(model.startRun);
Expand All @@ -269,9 +372,10 @@ public void StopRun_InitializesAsEmptyList()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();

// Act
var model = new CastModel(mockLogger.Object);
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Assert
Assert.NotNull(model.stopRun);
Expand All @@ -284,9 +388,10 @@ public void PauseRun_InitializesAsEmptyList()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();

// Act
var model = new CastModel(mockLogger.Object);
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Assert
Assert.NotNull(model.pauseRun);
Expand All @@ -299,9 +404,10 @@ public void ResumeRun_InitializesAsEmptyList()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();

// Act
var model = new CastModel(mockLogger.Object);
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Assert
Assert.NotNull(model.resumeRun);
Expand All @@ -314,9 +420,10 @@ public void AbortRun_InitializesAsEmptyList()
{
// Arrange
var mockLogger = CreateMockLogger();
var mockAuthService = CreateMockAuthenticationService();

// Act
var model = new CastModel(mockLogger.Object);
var model = new CastModel(mockLogger.Object, mockAuthService.Object);

// Assert
Assert.NotNull(model.abortRun);
Expand Down
Loading