From 8698d71809614bf236c8fd061850b2d932ae4cf2 Mon Sep 17 00:00:00 2001 From: Ryan Richard Date: Tue, 8 Feb 2022 13:00:49 -0800 Subject: [PATCH] Use "-v6" for kubectl for an e2e test so we can get more failure output (cherry picked from commit cd825c5e5172e00107f973265a7ab4e354e71e14) --- test/integration/e2e_test.go | 15 ++++++++++++--- test/testlib/browsertest/browsertest.go | 4 ++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/test/integration/e2e_test.go b/test/integration/e2e_test.go index d1d73d1a..ffe3f32f 100644 --- a/test/integration/e2e_test.go +++ b/test/integration/e2e_test.go @@ -163,7 +163,7 @@ func TestE2EFullIntegration(t *testing.T) { // nolint:gocyclo // Run "kubectl get namespaces" which should trigger a browser login via the plugin. start := time.Now() - kubectlCmd := exec.CommandContext(testCtx, "kubectl", "get", "namespace", "--kubeconfig", kubeconfigPath) + kubectlCmd := exec.CommandContext(testCtx, "kubectl", "get", "namespace", "--kubeconfig", kubeconfigPath, "-v", "6") kubectlCmd.Env = append(os.Environ(), env.ProxyEnv()...) // Wrap the stdout and stderr pipes with TeeReaders which will copy each incremental read to an @@ -193,8 +193,17 @@ func TestE2EFullIntegration(t *testing.T) { // nolint:gocyclo testAlreadyFailedErr = errors.New("test failed prior to clean up function") } cleanupErrs := utilerrors.NewAggregate([]error{waitErr, stdoutReadAllErr, stderrReadAllErr, testAlreadyFailedErr}) - require.NoErrorf(t, cleanupErrs, "kubectl process did not exit cleanly and/or the test failed\nstdout: %q\nstderr: %q", - stdoutPipeBuf.String(), stderrPipeBuf.String()) + + if cleanupErrs != nil { + t.Logf("kubectl stdout was:\n----start of stdout\n%s\n----end of stdout", stdoutPipeBuf.String()) + t.Logf("kubectl stderr was:\n----start of stderr\n%s\n----end of stderr", stderrPipeBuf.String()) + } + require.NoErrorf(t, cleanupErrs, "kubectl process did not exit cleanly and/or the test failed. "+ + "Note: if kubectl's first call to the Pinniped CLI results in the Pinniped CLI returning an error, "+ + "then kubectl may call the Pinniped CLI again, which may hang because it will wait for the user "+ + "to finish the login. This test will kill the kubectl process after a timeout. In this case, the "+ + " kubectl output printed above will include multiple prompts for the user to enter their authcode.", + ) }) // Start a background goroutine to read stderr from the CLI and parse out the login URL. diff --git a/test/testlib/browsertest/browsertest.go b/test/testlib/browsertest/browsertest.go index f2dc0702..c94850d2 100644 --- a/test/testlib/browsertest/browsertest.go +++ b/test/testlib/browsertest/browsertest.go @@ -1,4 +1,4 @@ -// Copyright 2020-2021 the Pinniped contributors. All Rights Reserved. +// Copyright 2020-2022 the Pinniped contributors. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // Package browsertest provides integration test helpers for our browser-based tests. @@ -119,7 +119,7 @@ func LoginToUpstream(t *testing.T, page *agouti.Page, upstream testlib.TestOIDCU { Name: "Okta", IssuerPattern: regexp.MustCompile(`\Ahttps://.+\.okta\.com/.+\z`), - LoginPagePattern: regexp.MustCompile(`\Ahttps://.+\.okta\.com/.+\z`), + LoginPagePattern: regexp.MustCompile(`\Ahttps://.+\.okta\.com/.*\z`), UsernameSelector: "input#okta-signin-username", PasswordSelector: "input#okta-signin-password", LoginButtonSelector: "input#okta-signin-submit",