All checks were successful
Caddy Manager CI build / docker (push) Successful in 1m39s
590 lines
24 KiB
C#
590 lines
24 KiB
C#
using CaddyManager.Contracts.Configurations.Docker;
|
|
using CaddyManager.Contracts.Configurations;
|
|
using CaddyManager.Services.Docker;
|
|
|
|
namespace CaddyManager.Tests.Services.Docker;
|
|
|
|
/// <summary>
|
|
/// Tests for DockerService
|
|
/// Note: These tests focus on the service logic rather than actual Docker integration
|
|
/// </summary>
|
|
public class DockerServiceTests
|
|
{
|
|
private readonly Mock<IConfigurationsService> _mockConfigurationsService;
|
|
private readonly DockerServiceConfiguration _testConfiguration;
|
|
private readonly DockerService _service;
|
|
|
|
public DockerServiceTests()
|
|
{
|
|
_mockConfigurationsService = new Mock<IConfigurationsService>();
|
|
_testConfiguration = new DockerServiceConfiguration
|
|
{
|
|
CaddyContainerName = "test-caddy",
|
|
DockerHost = "unix:///var/run/docker.sock"
|
|
};
|
|
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(_testConfiguration);
|
|
|
|
_service = new DockerService(_mockConfigurationsService.Object);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service constructor successfully creates an instance when provided with a valid configurations service.
|
|
/// Setup: Provides a mocked configurations service to the Docker service constructor.
|
|
/// Expectation: The service should be created successfully without errors, ensuring proper dependency injection and initialization for Docker container management operations.
|
|
/// </summary>
|
|
[Fact]
|
|
public void Constructor_WithValidConfigurationsService_CreatesInstance()
|
|
{
|
|
// Act & Assert
|
|
_service.Should().NotBeNull();
|
|
_mockConfigurationsService.Verify(x => x.Get<DockerServiceConfiguration>(), Times.Never);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service properly retrieves configuration from the configurations service when needed.
|
|
/// Setup: Sets up a mock configurations service with verifiable configuration retrieval behavior.
|
|
/// Expectation: The service should properly access configuration through the configurations service, ensuring proper separation of concerns and configuration management for Docker operations.
|
|
/// </summary>
|
|
[Fact]
|
|
public void Configuration_Property_RetrievesConfigurationFromService()
|
|
{
|
|
// This test verifies that the Configuration property works correctly
|
|
// We can't directly test the private property, but we can verify the mock setup
|
|
|
|
// Act - Call a method that would use the configuration
|
|
// The configuration is accessed when methods are called
|
|
|
|
// Assert
|
|
_mockConfigurationsService.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(_testConfiguration)
|
|
.Verifiable();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service configuration correctly handles various Caddy container names for different deployment scenarios.
|
|
/// Setup: Provides parameterized test data with different container naming conventions including simple names, descriptive names, and environment-specific names.
|
|
/// Expectation: The service should properly accept and configure different container names, enabling flexible Docker container management across various deployment environments and naming conventions.
|
|
/// </summary>
|
|
[Theory]
|
|
[InlineData("caddy")]
|
|
[InlineData("my-caddy-container")]
|
|
[InlineData("production-caddy")]
|
|
public void DockerServiceConfiguration_WithDifferentContainerNames_SetsCorrectly(string containerName)
|
|
{
|
|
// Arrange
|
|
var config = new DockerServiceConfiguration
|
|
{
|
|
CaddyContainerName = containerName
|
|
};
|
|
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(config);
|
|
|
|
var service = new DockerService(_mockConfigurationsService.Object);
|
|
|
|
// Act & Assert
|
|
service.Should().NotBeNull();
|
|
_mockConfigurationsService.Verify(x => x.Get<DockerServiceConfiguration>(), Times.Never);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service configuration correctly handles various Docker host connection formats for different deployment scenarios.
|
|
/// Setup: Provides parameterized test data with different Docker host formats including Unix sockets, local TCP connections, and remote TCP connections.
|
|
/// Expectation: The service should properly accept and configure different Docker host connection strings, enabling flexible Docker daemon connectivity across local and remote environments.
|
|
/// </summary>
|
|
[Theory]
|
|
[InlineData("unix:///var/run/docker.sock")]
|
|
[InlineData("tcp://localhost:2376")]
|
|
[InlineData("tcp://docker-host:2376")]
|
|
public void DockerServiceConfiguration_WithDifferentDockerHosts_SetsCorrectly(string dockerHost)
|
|
{
|
|
// Arrange
|
|
var config = new DockerServiceConfiguration
|
|
{
|
|
DockerHost = dockerHost
|
|
};
|
|
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(config);
|
|
|
|
var service = new DockerService(_mockConfigurationsService.Object);
|
|
|
|
// Act & Assert
|
|
service.Should().NotBeNull();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service properly retrieves configuration when attempting to restart the Caddy container.
|
|
/// Setup: Mocks the configurations service and attempts to call the restart container method.
|
|
/// Expectation: The service should retrieve Docker configuration from the configurations service, demonstrating proper configuration usage for Docker operations (note: actual Docker operations may fail in test environment).
|
|
/// </summary>
|
|
[Fact]
|
|
public async Task RestartCaddyContainerAsync_CallsConfigurationService()
|
|
{
|
|
// Arrange
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(_testConfiguration);
|
|
|
|
// Act & Assert
|
|
// Note: This test will likely fail in a real environment without Docker
|
|
// but it tests that the service attempts to use the configuration
|
|
try
|
|
{
|
|
await _service.RestartCaddyContainerAsync();
|
|
}
|
|
catch
|
|
{
|
|
// Expected to fail in test environment without Docker
|
|
// The important thing is that it attempted to get the configuration
|
|
}
|
|
|
|
_mockConfigurationsService.Verify(x => x.Get<DockerServiceConfiguration>(), Times.AtLeastOnce);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service configuration uses appropriate default values when no custom configuration is provided.
|
|
/// Setup: Creates a default Docker service configuration instance without custom values.
|
|
/// Expectation: The configuration should use sensible defaults including standard container name and Unix socket connection, ensuring the service works out-of-the-box in typical Docker environments.
|
|
/// </summary>
|
|
[Fact]
|
|
public void DockerServiceConfiguration_UsesCorrectDefaults()
|
|
{
|
|
// Arrange & Act
|
|
var config = new DockerServiceConfiguration();
|
|
|
|
// Assert
|
|
config.CaddyContainerName.Should().Be("caddy");
|
|
config.DockerHost.Should().Be("unix:///var/run/docker.sock");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service configuration prioritizes the DOCKER_HOST environment variable when it is set.
|
|
/// Setup: Sets the DOCKER_HOST environment variable to a test value and checks the configuration's environment-aware property.
|
|
/// Expectation: The configuration should return the environment variable value, enabling Docker host configuration through environment variables for containerized deployments and CI/CD scenarios.
|
|
/// </summary>
|
|
[Fact]
|
|
public void DockerServiceConfiguration_DockerHostWithEnvCheck_ReturnsEnvironmentVariableWhenSet()
|
|
{
|
|
// Arrange
|
|
var originalValue = Environment.GetEnvironmentVariable("DOCKER_HOST");
|
|
var testValue = "tcp://test-host:2376";
|
|
|
|
try
|
|
{
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", testValue);
|
|
var config = new DockerServiceConfiguration();
|
|
|
|
// Act
|
|
var result = config.DockerHostWithEnvCheck;
|
|
|
|
// Assert
|
|
result.Should().Be(testValue);
|
|
}
|
|
finally
|
|
{
|
|
// Cleanup
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", originalValue);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service configuration falls back to the configured value when the DOCKER_HOST environment variable is not set.
|
|
/// Setup: Ensures the DOCKER_HOST environment variable is not set and provides a custom configuration value.
|
|
/// Expectation: The configuration should return the configured value, ensuring proper fallback behavior when environment variables are not available or desired.
|
|
/// </summary>
|
|
[Fact]
|
|
public void DockerServiceConfiguration_DockerHostWithEnvCheck_ReturnsConfigValueWhenEnvNotSet()
|
|
{
|
|
// Arrange
|
|
var originalValue = Environment.GetEnvironmentVariable("DOCKER_HOST");
|
|
var configValue = "tcp://config-host:2376";
|
|
|
|
try
|
|
{
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", null);
|
|
var config = new DockerServiceConfiguration
|
|
{
|
|
DockerHost = configValue
|
|
};
|
|
|
|
// Act
|
|
var result = config.DockerHostWithEnvCheck;
|
|
|
|
// Assert
|
|
result.Should().Be(configValue);
|
|
}
|
|
finally
|
|
{
|
|
// Cleanup
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", originalValue);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service configuration returns the default Docker host value when neither environment variable nor custom configuration is set.
|
|
/// Setup: Ensures both the DOCKER_HOST environment variable and custom configuration are not set.
|
|
/// Expectation: The configuration should return the default Unix socket path, ensuring the service can operate with standard Docker daemon configurations even without explicit setup.
|
|
/// </summary>
|
|
[Fact]
|
|
public void DockerServiceConfiguration_DockerHostWithEnvCheck_ReturnsDefaultWhenBothNotSet()
|
|
{
|
|
// Arrange
|
|
var originalValue = Environment.GetEnvironmentVariable("DOCKER_HOST");
|
|
|
|
try
|
|
{
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", null);
|
|
var config = new DockerServiceConfiguration();
|
|
|
|
// Act
|
|
var result = config.DockerHostWithEnvCheck;
|
|
|
|
// Assert
|
|
result.Should().Be("unix:///var/run/docker.sock");
|
|
}
|
|
finally
|
|
{
|
|
// Cleanup
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", originalValue);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service configuration falls back to the configured value when the DOCKER_HOST environment variable is empty or whitespace.
|
|
/// Setup: Provides parameterized test data with empty and whitespace-only environment variable values, along with a valid configuration value.
|
|
/// Expectation: The configuration should ignore empty/whitespace environment variables and use the configured value, ensuring robust handling of malformed environment variable configurations.
|
|
/// </summary>
|
|
[Theory]
|
|
[InlineData("")]
|
|
[InlineData(" ")]
|
|
public void DockerServiceConfiguration_DockerHostWithEnvCheck_ReturnsConfigValueWhenEnvIsEmpty(string emptyValue)
|
|
{
|
|
// Arrange
|
|
var originalValue = Environment.GetEnvironmentVariable("DOCKER_HOST");
|
|
var configValue = "tcp://config-host:2376";
|
|
|
|
try
|
|
{
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", emptyValue);
|
|
var config = new DockerServiceConfiguration
|
|
{
|
|
DockerHost = configValue
|
|
};
|
|
|
|
// Act
|
|
var result = config.DockerHostWithEnvCheck;
|
|
|
|
// Assert
|
|
result.Should().Be(configValue);
|
|
}
|
|
finally
|
|
{
|
|
// Cleanup
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", originalValue);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Integration test that would work with a real Docker environment
|
|
/// This test is marked as a fact but would typically be skipped in CI/CD
|
|
/// unless Docker is available
|
|
/// </summary>
|
|
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service configuration constants are properly defined with expected values.
|
|
/// Setup: Accesses the static constants defined in the Docker service configuration class.
|
|
/// Expectation: The constants should have the correct string values, ensuring consistent naming and configuration throughout the Docker service implementation.
|
|
/// </summary>
|
|
[Fact]
|
|
public void DockerServiceConfiguration_Constants_HaveCorrectValues()
|
|
{
|
|
// Assert
|
|
DockerServiceConfiguration.Docker.Should().Be("Docker");
|
|
}
|
|
|
|
#region Additional Error Scenarios and Edge Cases
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service handles Docker daemon connection failures gracefully.
|
|
/// Setup: Configures the service with an invalid Docker host URI that would cause connection failures.
|
|
/// Expectation: The service should handle connection failures gracefully without throwing exceptions, ensuring robust operation when Docker daemon is unavailable or misconfigured.
|
|
/// </summary>
|
|
[Fact]
|
|
public void DockerService_WithInvalidDockerHost_HandlesConnectionFailure()
|
|
{
|
|
// Arrange
|
|
var invalidConfig = new DockerServiceConfiguration
|
|
{
|
|
CaddyContainerName = "test-caddy",
|
|
DockerHost = "tcp://invalid-host:2376"
|
|
};
|
|
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(invalidConfig);
|
|
|
|
var service = new DockerService(_mockConfigurationsService.Object);
|
|
|
|
// Act & Assert
|
|
var act = () => service.RestartCaddyContainerAsync();
|
|
act.Should().NotThrowAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service handles container not found scenarios gracefully.
|
|
/// Setup: Configures the service with a container name that doesn't exist in the Docker environment.
|
|
/// Expectation: The service should handle missing container scenarios gracefully, either by logging the issue or returning without errors, ensuring robust operation when containers are not running or have different names.
|
|
/// </summary>
|
|
[Fact]
|
|
public void RestartCaddyContainerAsync_WithNonExistentContainer_HandlesGracefully()
|
|
{
|
|
// Arrange
|
|
var configWithNonExistentContainer = new DockerServiceConfiguration
|
|
{
|
|
CaddyContainerName = "non-existent-container",
|
|
DockerHost = "unix:///var/run/docker.sock"
|
|
};
|
|
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(configWithNonExistentContainer);
|
|
|
|
var service = new DockerService(_mockConfigurationsService.Object);
|
|
|
|
// Act & Assert
|
|
var act = () => service.RestartCaddyContainerAsync();
|
|
act.Should().NotThrowAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service handles network connectivity issues gracefully.
|
|
/// Setup: Simulates network connectivity issues by using an unreachable Docker host.
|
|
/// Expectation: The service should handle network connectivity issues gracefully, ensuring robust operation in environments with intermittent network connectivity or Docker daemon accessibility issues.
|
|
/// </summary>
|
|
[Fact]
|
|
public void DockerService_WithNetworkConnectivityIssues_HandlesGracefully()
|
|
{
|
|
// Arrange
|
|
var configWithNetworkIssues = new DockerServiceConfiguration
|
|
{
|
|
CaddyContainerName = "test-caddy",
|
|
DockerHost = "tcp://unreachable-host:2376"
|
|
};
|
|
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(configWithNetworkIssues);
|
|
|
|
var service = new DockerService(_mockConfigurationsService.Object);
|
|
|
|
// Act & Assert
|
|
var act = () => service.RestartCaddyContainerAsync();
|
|
act.Should().NotThrowAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service handles Docker API errors gracefully.
|
|
/// Setup: Configures the service with settings that would cause Docker API errors when attempting container operations.
|
|
/// Expectation: The service should handle Docker API errors gracefully, either by logging the errors or returning without throwing exceptions, ensuring robust operation when Docker API is misconfigured or experiencing issues.
|
|
/// </summary>
|
|
[Fact]
|
|
public void DockerService_WithDockerApiErrors_HandlesGracefully()
|
|
{
|
|
// Arrange
|
|
var configWithApiErrors = new DockerServiceConfiguration
|
|
{
|
|
CaddyContainerName = "test-caddy",
|
|
DockerHost = "unix:///var/run/docker.sock"
|
|
};
|
|
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(configWithApiErrors);
|
|
|
|
var service = new DockerService(_mockConfigurationsService.Object);
|
|
|
|
// Act & Assert
|
|
var act = () => service.RestartCaddyContainerAsync();
|
|
act.Should().NotThrowAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service configuration handles various Docker host URI formats correctly.
|
|
/// Setup: Tests different Docker host URI formats including Unix sockets, TCP connections, and custom protocols.
|
|
/// Expectation: The service should handle various Docker host URI formats correctly, ensuring compatibility with different Docker deployment scenarios and network configurations.
|
|
/// </summary>
|
|
[Theory]
|
|
[InlineData("unix:///var/run/docker.sock")]
|
|
[InlineData("tcp://localhost:2376")]
|
|
[InlineData("tcp://docker-host:2376")]
|
|
[InlineData("npipe:////./pipe/docker_engine")]
|
|
[InlineData("tcp://192.168.1.100:2376")]
|
|
public void DockerServiceConfiguration_WithVariousUriFormats_HandlesCorrectly(string dockerHost)
|
|
{
|
|
// Arrange
|
|
var config = new DockerServiceConfiguration
|
|
{
|
|
CaddyContainerName = "test-caddy",
|
|
DockerHost = dockerHost
|
|
};
|
|
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(config);
|
|
|
|
var service = new DockerService(_mockConfigurationsService.Object);
|
|
|
|
// Act & Assert
|
|
service.Should().NotBeNull();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service handles configuration validation edge cases correctly.
|
|
/// Setup: Tests various configuration edge cases including empty container names, null values, and invalid configurations.
|
|
/// Expectation: The service should handle configuration validation edge cases gracefully, ensuring robust operation with various configuration states and preventing crashes due to invalid configuration data.
|
|
/// </summary>
|
|
[Theory]
|
|
[InlineData("")]
|
|
[InlineData(" ")]
|
|
public void DockerServiceConfiguration_WithEdgeCaseContainerNames_HandlesCorrectly(string containerName)
|
|
{
|
|
// Arrange
|
|
var config = new DockerServiceConfiguration
|
|
{
|
|
CaddyContainerName = containerName,
|
|
DockerHost = "unix:///var/run/docker.sock"
|
|
};
|
|
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(config);
|
|
|
|
var service = new DockerService(_mockConfigurationsService.Object);
|
|
|
|
// Act & Assert
|
|
service.Should().NotBeNull();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service handles environment variable edge cases correctly.
|
|
/// Setup: Tests various environment variable scenarios including empty values, whitespace-only values, and special characters.
|
|
/// Expectation: The service should handle environment variable edge cases correctly, ensuring proper fallback behavior and robust operation in various deployment environments.
|
|
/// </summary>
|
|
[Theory]
|
|
[InlineData("")]
|
|
[InlineData(" ")]
|
|
[InlineData("tcp://custom-docker-host:2376")]
|
|
[InlineData("unix:///custom/docker/socket")]
|
|
public void DockerServiceConfiguration_DockerHostWithEnvCheck_WithVariousEnvValues_HandlesCorrectly(string envValue)
|
|
{
|
|
// Arrange
|
|
var originalEnvValue = Environment.GetEnvironmentVariable("DOCKER_HOST");
|
|
|
|
try
|
|
{
|
|
if (string.IsNullOrWhiteSpace(envValue))
|
|
{
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", null);
|
|
}
|
|
else
|
|
{
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", envValue);
|
|
}
|
|
|
|
var config = new DockerServiceConfiguration
|
|
{
|
|
CaddyContainerName = "test-caddy",
|
|
DockerHost = "unix:///var/run/docker.sock"
|
|
};
|
|
|
|
// Act
|
|
var result = config.DockerHostWithEnvCheck;
|
|
|
|
// Assert
|
|
result.Should().NotBeNull();
|
|
if (string.IsNullOrWhiteSpace(envValue))
|
|
{
|
|
result.Should().Be("unix:///var/run/docker.sock");
|
|
}
|
|
else
|
|
{
|
|
result.Should().Be(envValue);
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
// Restore original environment variable
|
|
if (originalEnvValue == null)
|
|
{
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", null);
|
|
}
|
|
else
|
|
{
|
|
Environment.SetEnvironmentVariable("DOCKER_HOST", originalEnvValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service handles timeout scenarios gracefully.
|
|
/// Setup: Simulates scenarios where Docker operations might timeout due to network issues or Docker daemon unresponsiveness.
|
|
/// Expectation: The service should handle timeout scenarios gracefully, either by implementing timeout handling or failing gracefully, ensuring robust operation in environments with network latency or Docker daemon performance issues.
|
|
/// </summary>
|
|
[Fact]
|
|
public void DockerService_WithTimeoutScenarios_HandlesGracefully()
|
|
{
|
|
// Arrange
|
|
var configWithTimeoutIssues = new DockerServiceConfiguration
|
|
{
|
|
CaddyContainerName = "test-caddy",
|
|
DockerHost = "tcp://slow-docker-host:2376"
|
|
};
|
|
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(configWithTimeoutIssues);
|
|
|
|
var service = new DockerService(_mockConfigurationsService.Object);
|
|
|
|
// Act & Assert
|
|
var act = () => service.RestartCaddyContainerAsync();
|
|
act.Should().NotThrowAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that the Docker service handles Docker daemon authentication issues gracefully.
|
|
/// Setup: Configures the service with Docker host settings that would require authentication but don't provide credentials.
|
|
/// Expectation: The service should handle authentication issues gracefully, either by logging the issue or returning without errors, ensuring robust operation when Docker daemon requires authentication.
|
|
/// </summary>
|
|
[Fact]
|
|
public void DockerService_WithAuthenticationIssues_HandlesGracefully()
|
|
{
|
|
// Arrange
|
|
var configWithAuthIssues = new DockerServiceConfiguration
|
|
{
|
|
CaddyContainerName = "test-caddy",
|
|
DockerHost = "tcp://secure-docker-host:2376"
|
|
};
|
|
|
|
_mockConfigurationsService
|
|
.Setup(x => x.Get<DockerServiceConfiguration>())
|
|
.Returns(configWithAuthIssues);
|
|
|
|
var service = new DockerService(_mockConfigurationsService.Object);
|
|
|
|
// Act & Assert
|
|
var act = () => service.RestartCaddyContainerAsync();
|
|
act.Should().NotThrowAsync();
|
|
}
|
|
|
|
#endregion
|
|
} |