Integration tests should use a helper func to infer Supervisor's downstream issuer URL

This commit is contained in:
Joshua Casey
2024-07-23 14:43:38 -05:00
committed by Ryan Richard
parent afec420ce6
commit 0f9352db3b
6 changed files with 21 additions and 25 deletions

View File

@@ -6,7 +6,6 @@ import (
"bytes"
"context"
"fmt"
"net/url"
"os"
"os/exec"
"path/filepath"
@@ -370,13 +369,10 @@ func TestTLSSpecKubeBuilderValidationConcierge_Parallel(t *testing.T) {
})
t.Run("apply jwt authenticator", func(t *testing.T) {
issuerURL, err := url.Parse(env.SupervisorUpstreamOIDC.CallbackURL)
require.NoError(t, err)
require.True(t, strings.HasSuffix(issuerURL.Path, "/callback"))
issuerURL.Path = strings.TrimSuffix(issuerURL.Path, "/callback")
_, supervisorIssuer := env.SupervisorUpstreamOIDC.InferTheIssuerURL(t)
jwtAuthenticatorResourceName := tc.resourceNamePrefix + "-" + testlib.RandHex(t, 7)
jwtAuthenticatorYamlBytes := []byte(fmt.Sprintf(tc.customJWTAuthenticatorYaml, env.APIGroupSuffix, jwtAuthenticatorResourceName, issuerURL.String()))
jwtAuthenticatorYamlBytes := []byte(fmt.Sprintf(tc.customJWTAuthenticatorYaml, env.APIGroupSuffix, jwtAuthenticatorResourceName, supervisorIssuer))
performKubectlApply(t, jwtAuthenticatorYamlBytes, tc.expectedError, "JWTAuthenticator", jwtAuthenticatorResourceName)
})

View File

@@ -70,12 +70,7 @@ func TestE2EFullIntegration_Browser(t *testing.T) {
// Build pinniped CLI.
pinnipedExe := testlib.PinnipedCLIPath(t)
// Infer the downstream issuer URL from the callback associated with the upstream test client registration.
issuerURL, err := url.Parse(env.SupervisorUpstreamOIDC.CallbackURL)
require.NoError(t, err)
require.True(t, strings.HasSuffix(issuerURL.Path, "/callback"))
issuerURL.Path = strings.TrimSuffix(issuerURL.Path, "/callback")
t.Logf("testing with downstream issuer URL %s", issuerURL.String())
issuerURL, _ := env.SupervisorUpstreamOIDC.InferTheIssuerURL(t)
// Generate a CA bundle with which to serve this provider.
t.Logf("generating test CA")

View File

@@ -2948,12 +2948,7 @@ func testSupervisorLogin(
ctx, cancel := context.WithTimeout(context.Background(), 7*time.Minute)
defer cancel()
// Infer the downstream issuer URL from the callback associated with the upstream test client registration.
issuerURL, err := url.Parse(env.SupervisorUpstreamOIDC.CallbackURL)
require.NoError(t, err)
require.True(t, strings.HasSuffix(issuerURL.Path, "/callback"))
issuerURL.Path = strings.TrimSuffix(issuerURL.Path, "/callback")
t.Logf("testing with downstream issuer URL %s", issuerURL.String())
issuerURL, _ := env.SupervisorUpstreamOIDC.InferTheIssuerURL(t)
// Generate a CA bundle with which to serve this provider.
t.Logf("generating test CA")

View File

@@ -23,6 +23,7 @@ import (
// on the TLSSpec in Pinniped supervisor CRDs using OIDCIdentityProvider as an example.
func TestTLSSpecKubeBuilderValidationSupervisor_Parallel(t *testing.T) {
env := testlib.IntegrationEnv(t)
env.SupervisorUpstreamOIDC.Issuer
testCases := []struct {
name string
customResourceYaml string

View File

@@ -7,7 +7,6 @@ import (
"encoding/base64"
"fmt"
"io"
"net/url"
"os"
"os/exec"
"path/filepath"
@@ -49,12 +48,7 @@ func TestSupervisorWarnings_Browser(t *testing.T) {
pinnipedExe := testlib.PinnipedCLIPath(t)
tempDir := t.TempDir()
// Infer the downstream issuer URL from the callback associated with the upstream test client registration.
issuerURL, err := url.Parse(env.SupervisorUpstreamOIDC.CallbackURL)
require.NoError(t, err)
require.True(t, strings.HasSuffix(issuerURL.Path, "/callback"))
issuerURL.Path = strings.TrimSuffix(issuerURL.Path, "/callback")
t.Logf("testing with downstream issuer URL %s", issuerURL.String())
issuerURL, _ := env.SupervisorUpstreamOIDC.InferTheIssuerURL(t)
// Generate a CA bundle with which to serve this provider.
t.Logf("generating test CA")

View File

@@ -5,6 +5,7 @@ package testlib
import (
"encoding/base64"
"net/url"
"os"
"sort"
"strings"
@@ -83,6 +84,20 @@ type TestOIDCUpstream struct {
ExpectedGroups []string `json:"expectedGroups"`
}
// InferTheIssuerURL infers the downstream issuer URL from the callback associated with the upstream test client registration.
func (upstream *TestOIDCUpstream) InferTheIssuerURL(t *testing.T) (*url.URL, string) {
t.Helper()
issuerURL, err := url.Parse(upstream.CallbackURL)
require.NoError(t, err)
require.True(t, strings.HasSuffix(issuerURL.Path, "/callback"))
issuerURL.Path = strings.TrimSuffix(issuerURL.Path, "/callback")
issuerAsString := issuerURL.String()
t.Logf("testing with downstream issuer URL %s", issuerAsString)
return issuerURL, issuerAsString
}
type TestLDAPUpstream struct {
Host string `json:"host"`
Domain string `json:"domain"`