summaryrefslogtreecommitdiff
path: root/test/integration/container.go
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-05-12 17:33:14 -0600
committermo khan <mo@mokhan.ca>2025-05-12 17:33:14 -0600
commitb83870b98562a1eb9d4377dffc2283706ad574f3 (patch)
tree15c5285c39f3880e2e68f3621a6ba9bfb22694df /test/integration/container.go
parent32e212fb891d522efa4990bc525a51326bd7e4ba (diff)
test: split integration test into separate files
Diffstat (limited to 'test/integration/container.go')
-rw-r--r--test/integration/container.go37
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
+}