too much for one commit
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
using EntKube.Clusters.Domain;
|
||||
using EntKube.Clusters.Features.AdoptCluster.Components.Traefik;
|
||||
using FluentAssertions;
|
||||
|
||||
namespace EntKube.Clusters.Tests.Features;
|
||||
|
||||
/// <summary>
|
||||
/// Tests for the Traefik installer's Helm values generation. Verifies that
|
||||
/// the correct cloud-provider annotations are applied when internal LB mode
|
||||
/// is enabled, and that no annotations leak through when disabled.
|
||||
/// </summary>
|
||||
public class TraefikInstallerTests
|
||||
{
|
||||
[Fact]
|
||||
public void GetTraefikValues_InternalLbWithCleura_IncludesOpenStackAnnotation()
|
||||
{
|
||||
// When Traefik is configured as an internal LB on Cleura, it should use
|
||||
// the OpenStack annotation instead of dumping all provider annotations.
|
||||
|
||||
Dictionary<string, string> parameters = new()
|
||||
{
|
||||
["internalLoadBalancer"] = "true"
|
||||
};
|
||||
|
||||
string values = TraefikInstaller.GetTraefikValues(parameters, CloudProvider.Cleura);
|
||||
|
||||
values.Should().Contain("openstack-internal-load-balancer");
|
||||
values.Should().NotContain("azure-load-balancer-internal");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetTraefikValues_InternalLbWithAzure_IncludesAzureAnnotation()
|
||||
{
|
||||
Dictionary<string, string> parameters = new()
|
||||
{
|
||||
["internalLoadBalancer"] = "true"
|
||||
};
|
||||
|
||||
string values = TraefikInstaller.GetTraefikValues(parameters, CloudProvider.Azure);
|
||||
|
||||
values.Should().Contain("azure-load-balancer-internal");
|
||||
values.Should().NotContain("openstack-internal-load-balancer");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetTraefikValues_NoInternalLb_HasNoAnnotations()
|
||||
{
|
||||
// When internalLoadBalancer is not set, no annotations should be emitted
|
||||
// regardless of the cloud provider.
|
||||
|
||||
Dictionary<string, string> parameters = new();
|
||||
|
||||
string values = TraefikInstaller.GetTraefikValues(parameters, CloudProvider.Cleura);
|
||||
|
||||
values.Should().NotContain("annotations:");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetTraefikValues_CustomReplicas_IncludesReplicaCount()
|
||||
{
|
||||
// When a custom replica count is specified, the generated values
|
||||
// should reflect that in the deployment section.
|
||||
|
||||
Dictionary<string, string> parameters = new()
|
||||
{
|
||||
["replicas"] = "5"
|
||||
};
|
||||
|
||||
string values = TraefikInstaller.GetTraefikValues(parameters, CloudProvider.None);
|
||||
|
||||
values.Should().Contain("replicas: 5");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetTraefikValues_DashboardEnabled_IncludesDashboardConfig()
|
||||
{
|
||||
// When the dashboard is enabled, the generated values should include
|
||||
// dashboard configuration.
|
||||
|
||||
Dictionary<string, string> parameters = new()
|
||||
{
|
||||
["dashboardEnabled"] = "true"
|
||||
};
|
||||
|
||||
string values = TraefikInstaller.GetTraefikValues(parameters, CloudProvider.None);
|
||||
|
||||
values.Should().Contain("dashboard");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user