diff --git a/end-to-end/organization_token_test.go b/end-to-end/organization_token_test.go index cb6db9663..b716cb6a2 100644 --- a/end-to-end/organization_token_test.go +++ b/end-to-end/organization_token_test.go @@ -42,7 +42,6 @@ func TestOrganizationProvidedToken(t *testing.T) { testSetup(t) lis, server, landscapeService := setUpLandscapeMock(t, ctx, "localhost:") - writeUbuntuProRegistry(t, "LandscapeAgentURL", lis.Addr().String()) go func() { if err := server.Serve(lis); err != nil { @@ -50,7 +49,6 @@ func TestOrganizationProvidedToken(t *testing.T) { } }() defer server.Stop() - defer server.Stop() proToken := os.Getenv(proTokenEnv) require.NotEmptyf(t, proToken, "Setup: environment variable %q should contain a valid pro token, but is empty", proTokenEnv) diff --git a/end-to-end/testdata/cert.pem b/end-to-end/testdata/cert.pem new file mode 100644 index 000000000..e2c0783c9 --- /dev/null +++ b/end-to-end/testdata/cert.pem @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIUYVCcZCPg7h/nnpPCBnuOANV32BswDQYJKoZIhvcNAQEL +BQAwQTELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNhbm9uaWNhbDEeMBwGA1UEAwwV +Q2Fub25pY2FsR3JvdXBMaW1pdGVkMB4XDTIzMTAxODA3NTgxOVoXDTIzMTExNzA3 +NTgxOVowQTELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNhbm9uaWNhbDEeMBwGA1UE +AwwVQ2Fub25pY2FsR3JvdXBMaW1pdGVkMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxSYsyFpJI+xqx4Bor91vrIJhm9cjJyIvsUqKXpV/W7XS4dwm3w7x +V4rOXSFwPfBEOuRDnFZe6edmhj6T2aSBYrake0WUWpzcVnrAh8Deu/1fEpkK8NkE +W1VBSW+8aVVTZm1Xo8PAYY4omXm2me6qIfHW/6ta4LiV41AckdaIbIFEQvRxODwl +7cr+5Dw3HSkKmgDT4uFhMmBIqCaQytTgJwhkvq7LAVwTzzrjFT5iq/f3WS+yplFV +HRqtVyZomNm8B6I59llTOVtipk7FrQplLmpsNM+LMXFES1vlJX9N4fNs4H+buzns +e3hLMneLUczFXZuSzGwwvYGgZecG+XApeontMUKFvOfYVNC1rNiglTX12zg+p2kl +6unDu9JQ5l9oZgfy/E7MDvHan6uHKzIVOqLrnY1iimsXvi7YdiattuyQdqA4KuwM +YIaBZlcJVUF+ICvQy39py8cvXPOrfhNQ470170LMQt8cWwE8vbnBNj+XoS2Hl6GD +8Jccm7jnCH7/mj6C6U0vwlvQo4xaLA7i2xn/CSYhzKcnO+/dtFiaB3wSjJCURcI6 +Cw+PGUyMngE28nfEfpuWnATweZfc/794KPF1sBlTqeh1kJ+on76Eb8jSgLq5CauS +7j1LvwQiZ42/fF2ZfJ/GmMbmmLke7Xh8etv6NFDcl07kPZZep4+K1r8CAwEAAaNk +MGIwHQYDVR0OBBYEFBw7E8RKb/pa/oyIMGPTG72JjEVHMB8GA1UdIwQYMBaAFBw7 +E8RKb/pa/oyIMGPTG72JjEVHMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0RBAgwBocE +fwAAATANBgkqhkiG9w0BAQsFAAOCAgEAZCIc77xkXBsnRtCdM534fDyPHEJufIWg +yez7EL765RmG9L1kPnMGe/mmxLMwLro7P05Vv5dgcm1deF0e8xLUAwE1WOMBZ3TP +N2tlRKOP1ibfSWfD4LJVLXHFFbktXivnl7xrUKEtT+c3MNYfunIa+cUbUeyzXGwk +blMr7HlmgQcyMA1ZjI586NwZNxs47zfn6w3jnmyUmq5o+sIf2+UQ0ctEFCsachWR +bwgPjS25yoXzKEGnaBdPZ0d6WTxDh1m4UTgxPwb53RjXc8yqJYKtxSV6VVuJuvdJ +g27nHU4x73hVVeTsRz8hpWsqZrHSkfwSNZ4JGgmA500GDziG9nhPTXm4NrGlXjHk +Mh/UvrzjXsR0z63/N1T9O3eHcxKnxJ/3b8NVHPBdtNV2KLoJuEMVFBU5dWAcH/9L +sxBnUFbhL+13rBd8W82XarrRcDGiMmAkFbDNqzjDW6rDXNq+ATIyY93KDStrU9a9 +qm3DUoOlJGmggWd7hTTqxXjmGA2SQmsg//+pel+dvgva9PcE6RbPujN6/EpSCjps +SF4vI0des3U7IX+uU7c3AQ4Cq0BKuWaZq7vHrCksx4yipVMiomgEdouXmrn2GlOr +6sjDBd1wSyFv05Zo5K+0gGzmtPep0SEdsMJoxLkQIX5qOXKetpNwNuUtKBc2asuv +oHV2TbCL6Yw= +-----END CERTIFICATE----- diff --git a/end-to-end/testdata/key.pem b/end-to-end/testdata/key.pem new file mode 100644 index 000000000..3a517c63b --- /dev/null +++ b/end-to-end/testdata/key.pem @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +2PMZ+1fCA7xGpJCGK3EUi6QPKXauEg== +-----END PRIVATE KEY----- diff --git a/end-to-end/testdata/landscape.conf b/end-to-end/testdata/landscape.conf new file mode 100644 index 000000000..a2df6d2df --- /dev/null +++ b/end-to-end/testdata/landscape.conf @@ -0,0 +1,2 @@ +[client] +ssl_public_key = testdata/cert.pem \ No newline at end of file diff --git a/end-to-end/utils_test.go b/end-to-end/utils_test.go index e75fd90c2..809a22bb0 100644 --- a/end-to-end/utils_test.go +++ b/end-to-end/utils_test.go @@ -3,6 +3,7 @@ package endtoend_test import ( "bytes" "context" + "crypto/tls" "encoding/json" "errors" "fmt" @@ -24,6 +25,7 @@ import ( wsl "github.com/ubuntu/gowsl" "golang.org/x/sys/windows/registry" "google.golang.org/grpc" + "google.golang.org/grpc/credentials" ) func testSetup(t *testing.T) { @@ -186,6 +188,8 @@ func logWslProServiceJournal(t *testing.T, ctx context.Context, d wsl.Distro) { t.Logf("wsl-pro-service logs:\n%s\n", out) } +// setUpLandscapeMock sets up the Landscape mock server (but does not start it). It also sets up the registry so the Windows Agent can connect to it. +// //nolint:revive // Context goes after testing.T func setUpLandscapeMock(t *testing.T, ctx context.Context, addr string) (lis net.Listener, server *grpc.Server, service *landscapemockservice.Service) { t.Helper() @@ -194,10 +198,25 @@ func setUpLandscapeMock(t *testing.T, ctx context.Context, addr string) (lis net lis, err := cfg.Listen(ctx, "tcp", addr) require.NoError(t, err, "Setup: can't listen") - server = grpc.NewServer() + serverCert, err := tls.LoadX509KeyPair("testdata/cert.pem", "testdata/key.pem") + require.NoError(t, err, "Setup: could not load Landscape mock server credentials") + + config := &tls.Config{ + Certificates: []tls.Certificate{serverCert}, + ClientAuth: tls.NoClientCert, + MinVersion: tls.VersionTLS12, + } + + server = grpc.NewServer(grpc.Creds(credentials.NewTLS(config))) service = landscapemockservice.New() landscapeapi.RegisterLandscapeHostAgentServer(server, service) + out, err := os.ReadFile("testdata/landscape.conf") + require.NoError(t, err, "could not read landscape configuration file") + + writeUbuntuProRegistry(t, "LandscapeClientConfig", string(out)) + writeUbuntuProRegistry(t, "LandscapeAgentURL", lis.Addr().String()) + return lis, server, service } @@ -208,6 +227,6 @@ func writeUbuntuProRegistry(t *testing.T, field string, value string) { require.NoErrorf(t, err, "Setup: could not open UbuntuPro registry key") defer key.Close() - err = key.SetStringValue(field, value) + err = key.SetStringsValue(field, strings.Split(value, "\n")) require.NoError(t, err, "could not write token in registry") }