diff --git a/internal/provider/utils/openvpn.go b/internal/provider/utils/openvpn.go index 70024abd..35e16d24 100644 --- a/internal/provider/utils/openvpn.go +++ b/internal/provider/utils/openvpn.go @@ -175,8 +175,8 @@ func OpenVPNConfig(provider OpenVPNProviderSettings, lines.add("setenv", envKey, envValue) } - for _, ca := range provider.CAs { - lines.addLines(WrapOpenvpnCA(ca)) + if len(provider.CAs) > 0 { + lines.addLines(WrapOpenvpnCAs(provider.CAs)) } if provider.CRLVerify != "" { lines.addLines(WrapOpenvpnCRLVerify(provider.CRLVerify)) @@ -268,13 +268,20 @@ func defaultStringSlice(value, defaultValue []string) ( } func WrapOpenvpnCA(certificate string) (lines []string) { - return []string{ - "", - "-----BEGIN CERTIFICATE-----", - certificate, - "-----END CERTIFICATE-----", - "", + return WrapOpenvpnCAs([]string{certificate}) +} + +func WrapOpenvpnCAs(certificates []string) (lines []string) { + lines = append(lines, "") + for _, certificate := range certificates { + lines = append(lines, + "-----BEGIN CERTIFICATE-----", + certificate, + "-----END CERTIFICATE-----", + ) } + lines = append(lines, "") + return lines } func WrapOpenvpnCert(clientCertificate string) (lines []string) { diff --git a/internal/provider/utils/openvpn_test.go b/internal/provider/utils/openvpn_test.go new file mode 100644 index 00000000..cf067922 --- /dev/null +++ b/internal/provider/utils/openvpn_test.go @@ -0,0 +1,38 @@ +package utils + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestWrapOpenvpnCAs(t *testing.T) { + t.Parallel() + + lines := WrapOpenvpnCAs([]string{"cert1", "cert2"}) + + assert.Equal(t, []string{ + "", + "-----BEGIN CERTIFICATE-----", + "cert1", + "-----END CERTIFICATE-----", + "-----BEGIN CERTIFICATE-----", + "cert2", + "-----END CERTIFICATE-----", + "", + }, lines) +} + +func TestWrapOpenvpnCA(t *testing.T) { + t.Parallel() + + lines := WrapOpenvpnCA("cert1") + + assert.Equal(t, []string{ + "", + "-----BEGIN CERTIFICATE-----", + "cert1", + "-----END CERTIFICATE-----", + "", + }, lines) +}