diff options
| author | mo khan <mo@mokhan.ca> | 2025-05-12 17:33:14 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-05-12 17:33:14 -0600 |
| commit | b83870b98562a1eb9d4377dffc2283706ad574f3 (patch) | |
| tree | 15c5285c39f3880e2e68f3621a6ba9bfb22694df /test/integration/container.go | |
| parent | 32e212fb891d522efa4990bc525a51326bd7e4ba (diff) | |
test: split integration test into separate files
Diffstat (limited to 'test/integration/container.go')
| -rw-r--r-- | test/integration/container.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/integration/container.go b/test/integration/container.go new file mode 100644 index 0000000..1b5b282 --- /dev/null +++ b/test/integration/container.go @@ -0,0 +1,37 @@ +package test + +import ( + "context" + "net/url" + "strconv" + "testing" + "time" + + "github.com/stretchr/testify/require" + "github.com/testcontainers/testcontainers-go" + "github.com/testcontainers/testcontainers-go/wait" + "github.com/xlgmokha/x/pkg/env" +) + +func NewContainer(t *testing.T, ctx context.Context, envVars map[string]string) *testcontainers.DockerContainer { + t.Logf("mockoidc: %v %v\n", testcontainers.HostInternal, envVars) + issuer := envVars["OIDC_ISSUER"] + + u, err := url.Parse(issuer) + require.NoError(t, err) + + port, err := strconv.Atoi(u.Port()) + require.NoError(t, err) + + container, err := testcontainers.Run( + ctx, + env.Fetch("IMAGE_TAG", "sparkled:invalid"), + testcontainers.WithEnv(envVars), + testcontainers.WithExposedPorts("8080/tcp", "9901/tcp", "10000/tcp"), + testcontainers.WithHostPortAccess(port), + testcontainers.WithLogConsumers(&LogConsumer{t: t}), + testcontainers.WithWaitStrategy(wait.ForLog("Listening on").WithStartupTimeout(10*time.Second)), + ) + require.NoError(t, err) + return container +} |
