From 2445e0f83becd27f5475f2034b78eb75ef8dce02 Mon Sep 17 00:00:00 2001 From: Rafael Fonseca Date: Tue, 20 Aug 2024 17:32:30 +0200 Subject: [PATCH] aws/validation: add unit tests for public-only cluster configs --- .../installconfig/aws/validation_test.go | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/pkg/asset/installconfig/aws/validation_test.go b/pkg/asset/installconfig/aws/validation_test.go index b8964c2181..9094513a41 100644 --- a/pkg/asset/installconfig/aws/validation_test.go +++ b/pkg/asset/installconfig/aws/validation_test.go @@ -267,6 +267,7 @@ func TestValidate(t *testing.T) { edgeSubnets Subnets instanceTypes map[string]InstanceType proxy string + publicOnly string expectErr string }{{ name: "valid no byo", @@ -818,6 +819,42 @@ func TestValidate(t *testing.T) { }(), availZones: validAvailZones(), expectErr: `^platform.aws.publicIpv4PoolId: Invalid value: "ipv4pool-ec2-123": publish strategy Internal can't be used with custom Public IPv4 Pools$`, + }, { + name: "invalid publish method for public-only subnets install", + installConfig: func() *types.InstallConfig { + c := validInstallConfig() + c.Publish = types.InternalPublishingStrategy + return c + }(), + privateSubnets: validPrivateSubnets(), + publicSubnets: validPublicSubnets(), + publicOnly: "true", + expectErr: `^publish: Invalid value: \"Internal\": cluster cannot be private with public subnets$`, + }, { + name: "no subnets specified for public-only subnets cluster", + installConfig: func() *types.InstallConfig { + c := validInstallConfig() + c.Platform.AWS.Subnets = []string{} + return c + }(), + privateSubnets: validPrivateSubnets(), + availZones: validAvailZones(), + publicOnly: "true", + expectErr: `^platform\.aws\.subnets: Required value: subnets must be specified for public-only subnets clusters$`, + }, { + name: "no public subnets specified for public-only subnets cluster", + installConfig: validInstallConfig(), + privateSubnets: validPrivateSubnets(), + availZones: validAvailZones(), + publicOnly: "true", + expectErr: `platform\.aws\.subnets: Required value: public subnets are required for a public-only subnets cluster`, + }, { + name: "valid public-only subnets install config", + installConfig: validInstallConfig(), + privateSubnets: validPrivateSubnets(), + publicSubnets: validPublicSubnets(), + availZones: validAvailZones(), + publicOnly: "true", }} for _, test := range tests { @@ -835,6 +872,11 @@ func TestValidate(t *testing.T) { } else { os.Unsetenv("HTTP_PROXY") } + if test.publicOnly != "" { + os.Setenv("OPENSHIFT_INSTALL_AWS_PUBLIC_ONLY", test.publicOnly) + } else { + os.Unsetenv("OPENSHIFT_INSTALL_AWS_PUBLIC_ONLY") + } err := Validate(context.TODO(), meta, test.installConfig) if test.expectErr == "" { assert.NoError(t, err)