diff options
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 +} |
