1fc7792cd1
Rename ConfigManager to ConfigManager.Ui to match the Core/CLI/UI project structure, and split the monolithic test project into Core.Tests, Cli.Tests, and Ui.Tests to align with the source project organization.
131 lines
4.4 KiB
C#
131 lines
4.4 KiB
C#
using JdeScoping.ConfigManager.Core.Models;
|
|
using JdeScoping.ConfigManager.Core.Services;
|
|
|
|
namespace JdeScoping.ConfigManager.Core.Tests.Services;
|
|
|
|
public class ConnectionTestServiceTests
|
|
{
|
|
private readonly ConnectionTestService _sut;
|
|
|
|
public ConnectionTestServiceTests()
|
|
{
|
|
_sut = new ConnectionTestService();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task TestConnectionAsync_Oracle_ReturnsNotImplemented()
|
|
{
|
|
// Arrange
|
|
var connectionString = "Data Source=oracle;User Id=user;Password=pass;";
|
|
|
|
// Act
|
|
var result = await _sut.TestConnectionAsync(connectionString, ConnectionProvider.Oracle);
|
|
|
|
// Assert
|
|
result.Success.ShouldBeFalse();
|
|
result.Message.ShouldContain("not implemented");
|
|
}
|
|
|
|
[Fact]
|
|
public async Task TestConnectionAsync_Generic_ReturnsCannotTest()
|
|
{
|
|
// Arrange
|
|
var connectionString = "SomeGenericConnectionString";
|
|
|
|
// Act
|
|
var result = await _sut.TestConnectionAsync(connectionString, ConnectionProvider.Generic);
|
|
|
|
// Assert
|
|
result.Success.ShouldBeFalse();
|
|
result.Message.ShouldContain("Cannot test generic");
|
|
}
|
|
|
|
[Fact]
|
|
public async Task TestConnectionAsync_UnknownProvider_ReturnsUnknownProviderError()
|
|
{
|
|
// Arrange
|
|
var connectionString = "Data Source=test";
|
|
var unknownProvider = (ConnectionProvider)999;
|
|
|
|
// Act
|
|
var result = await _sut.TestConnectionAsync(connectionString, unknownProvider);
|
|
|
|
// Assert
|
|
result.Success.ShouldBeFalse();
|
|
result.Message.ShouldContain("Unknown provider");
|
|
}
|
|
|
|
[Fact]
|
|
public async Task TestConnectionAsync_SqlServer_WithInvalidConnectionString_ReturnsFailure()
|
|
{
|
|
// Arrange - Use an obviously invalid connection string that will fail fast
|
|
var connectionString = "Server=nonexistent-server-that-does-not-exist-12345;Database=TestDb;Integrated Security=true;Connect Timeout=1;";
|
|
|
|
// Act
|
|
var result = await _sut.TestConnectionAsync(connectionString, ConnectionProvider.SqlServer);
|
|
|
|
// Assert
|
|
result.Success.ShouldBeFalse();
|
|
result.Message.ShouldNotBeNullOrEmpty();
|
|
result.Duration.ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task TestConnectionAsync_SqlServer_MeasuresDuration()
|
|
{
|
|
// Arrange - Use an invalid connection string that will fail but should still measure duration
|
|
var connectionString = "Server=nonexistent-server-12345;Database=TestDb;Integrated Security=true;Connect Timeout=1;";
|
|
|
|
// Act
|
|
var result = await _sut.TestConnectionAsync(connectionString, ConnectionProvider.SqlServer);
|
|
|
|
// Assert
|
|
result.Duration.ShouldNotBeNull();
|
|
result.Duration!.Value.ShouldBeGreaterThan(TimeSpan.Zero);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task TestConnectionAsync_SqlServer_WithCancellation_ReturnsCancelledResult()
|
|
{
|
|
// Arrange
|
|
var connectionString = "Server=nonexistent-server-that-takes-forever-12345;Database=TestDb;Integrated Security=true;Connect Timeout=30;";
|
|
using var cts = new CancellationTokenSource();
|
|
cts.Cancel(); // Cancel immediately
|
|
|
|
// Act
|
|
var result = await _sut.TestConnectionAsync(connectionString, ConnectionProvider.SqlServer, cts.Token);
|
|
|
|
// Assert
|
|
result.Success.ShouldBeFalse();
|
|
result.Message.ShouldContain("cancelled");
|
|
}
|
|
|
|
[Fact]
|
|
public async Task TestConnectionAsync_SqlServer_WithMalformedConnectionString_ReturnsFailure()
|
|
{
|
|
// Arrange - Malformed connection string should be handled gracefully
|
|
var connectionString = "not a valid connection string at all!!!";
|
|
|
|
// Act
|
|
var result = await _sut.TestConnectionAsync(connectionString, ConnectionProvider.SqlServer);
|
|
|
|
// Assert
|
|
result.Success.ShouldBeFalse();
|
|
result.Message.ShouldNotBeNullOrEmpty();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task TestConnectionAsync_SqlServer_WithEmptyConnectionString_ReturnsFailure()
|
|
{
|
|
// Arrange
|
|
var connectionString = "";
|
|
|
|
// Act
|
|
var result = await _sut.TestConnectionAsync(connectionString, ConnectionProvider.SqlServer);
|
|
|
|
// Assert
|
|
result.Success.ShouldBeFalse();
|
|
result.Message.ShouldNotBeNullOrEmpty();
|
|
}
|
|
}
|