mirror of
https://github.com/juanfont/headscale.git
synced 2026-10-10 08:40:07 +09:00
+35
-10
@@ -24,6 +24,7 @@ import (
|
||||
clientv1 "github.com/juanfont/headscale/gen/client/v1"
|
||||
"github.com/juanfont/headscale/hscontrol/capver"
|
||||
"github.com/juanfont/headscale/hscontrol/types"
|
||||
"github.com/juanfont/headscale/hscontrol/util"
|
||||
"github.com/juanfont/headscale/integration/dockertestutil"
|
||||
"github.com/juanfont/headscale/integration/dsic"
|
||||
"github.com/juanfont/headscale/integration/hsic"
|
||||
@@ -51,9 +52,11 @@ const (
|
||||
var usePostgresForTest = envknob.Bool("HEADSCALE_INTEGRATION_POSTGRES")
|
||||
|
||||
var (
|
||||
errNoHeadscaleAvailable = errors.New("no headscale available")
|
||||
errNoUserAvailable = errors.New("no user available")
|
||||
errNoClientFound = errors.New("client not found")
|
||||
errNoHeadscaleAvailable = errors.New("no headscale available")
|
||||
errNoUserAvailable = errors.New("no user available")
|
||||
errNoClientFound = errors.New("client not found")
|
||||
errInvalidMockOIDCImage = errors.New("invalid HEADSCALE_INTEGRATION_HEADSCALE_IMAGE format, expected repository:tag")
|
||||
errMockOIDCImageRequiredInCI = errors.New("HEADSCALE_INTEGRATION_HEADSCALE_IMAGE must be set for mock OIDC in CI")
|
||||
|
||||
// AllVersions represents a list of Tailscale versions the suite
|
||||
// uses to test compatibility with the [ControlServer].
|
||||
@@ -1638,16 +1641,38 @@ func (s *Scenario) runMockOIDC(accessTTL time.Duration, users []mockoidc.MockUse
|
||||
// Add integration test labels if running under hi tool
|
||||
dockertestutil.DockerAddIntegrationLabels(mockOidcOptions, "oidc")
|
||||
|
||||
if pmockoidc, err := s.pool.BuildAndRunWithBuildOptions( //nolint:noinlineerr
|
||||
headscaleBuildOptions,
|
||||
mockOidcOptions,
|
||||
dockertestutil.DockerRestartPolicy,
|
||||
); err == nil {
|
||||
s.mockOIDC.r = pmockoidc
|
||||
var container *dockertest.Resource
|
||||
|
||||
// CI already built and loaded the Headscale image, including its mockoidc command.
|
||||
// Reuse it instead of downloading dependencies and rebuilding for every OIDC test.
|
||||
if prebuiltImage := os.Getenv("HEADSCALE_INTEGRATION_HEADSCALE_IMAGE"); prebuiltImage != "" {
|
||||
repo, tag, ok := strings.Cut(prebuiltImage, ":")
|
||||
if !ok || repo == "" || tag == "" {
|
||||
return errInvalidMockOIDCImage
|
||||
}
|
||||
|
||||
mockOidcOptions.Repository = repo
|
||||
mockOidcOptions.Tag = tag
|
||||
container, err = s.pool.RunWithOptions(
|
||||
mockOidcOptions,
|
||||
dockertestutil.DockerRestartPolicy,
|
||||
)
|
||||
} else if util.IsCI() {
|
||||
return errMockOIDCImageRequiredInCI
|
||||
} else {
|
||||
return err
|
||||
container, err = s.pool.BuildAndRunWithBuildOptions(
|
||||
headscaleBuildOptions,
|
||||
mockOidcOptions,
|
||||
dockertestutil.DockerRestartPolicy,
|
||||
)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf("starting mock OIDC container: %w", err)
|
||||
}
|
||||
|
||||
s.mockOIDC.r = container
|
||||
|
||||
// headscale needs to set up the provider with a specific
|
||||
// IP addr to ensure we get the correct config from the well-known
|
||||
// endpoint.
|
||||
|
||||
Reference in New Issue
Block a user