pomerium/config/config_test.go
Caleb Doxsey c47055bece
upgrade to go v1.24 (#5562)
* upgrade to go v1.24

* add a macOS-specific //nolint comment too

---------

Co-authored-by: Kenneth Jenkins <51246568+kenjenkins@users.noreply.github.com>
2025-04-02 15:53:09 -06:00

52 lines
1.7 KiB
Go

package config_test
import (
"crypto/tls"
"encoding/base64"
"encoding/pem"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/protobuf/proto"
"github.com/pomerium/pomerium/config"
)
func TestGenerateCatchAllCertificate(t *testing.T) {
expected := `-----BEGIN CERTIFICATE-----
MIIBlzCCAT2gAwIBAgIRAPmKEV01Qa1gBWn9yUQPCFgwCgYIKoZIzj0EAwIwLTER
MA8GA1UEChMIUG9tZXJpdW0xGDAWBgNVBAMTD1BvbWVyaXVtIFBTSyBDQTAgFw0y
MjEyMDEwMDAwMDBaGA8yMDUwMTIwMTAwMDAwMFowEzERMA8GA1UEChMIUG9tZXJp
dW0wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASkOynLyo4bsBFKiTN87zqoGe4x
62tdRaE+g5Trxqqv8qWwhb4q9fUWI+pNQigBe2HsGJFsneA2M0S11RXVG2ffo1Yw
VDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgw
FoAU384OyoQVoqmKbzZbfHny25RhyqcwDAYDVR0RBAUwA4IBKjAKBggqhkjOPQQD
AgNIADBFAiEAitjxkg8yM/OWXGrzdUOA0gAh/c53/+7Gr45XEFCBMNQCIB3OzfDM
z/tcTCNUHYSh638283eNtxzfadbEhEjJ1Bpe
-----END CERTIFICATE-----
`
cfg := &config.Config{Options: &config.Options{
SharedKey: base64.StdEncoding.EncodeToString([]byte("ABCDEFGHIJKLMNOPQRSTUVWXYZ123456")),
}}
cert, err := cfg.GenerateCatchAllCertificate()
require.NoError(t, err)
assertCertPEM(t, []string{expected}, cert)
cfg.Options.DeriveInternalDomainCert = proto.String("example.com")
cert, err = cfg.GenerateCatchAllCertificate()
require.NoError(t, err)
assertCertPEM(t, []string{expected}, cert)
}
func assertCertPEM(t *testing.T, expected []string, cert *tls.Certificate) {
if assert.Len(t, cert.Certificate, len(expected)) {
for i := range cert.Certificate {
certPEM := pem.EncodeToMemory(&pem.Block{
Type: "CERTIFICATE",
Bytes: cert.Certificate[i],
})
assert.Equal(t, expected[i], string(certPEM))
}
}
}