searcherside/internal/db/dbtest/postgres.go

40 lines
976 B
Go
Raw Permalink Normal View History

package dbtest
import (
"context"
"github.com/testcontainers/testcontainers-go"
tcpostgres "github.com/testcontainers/testcontainers-go/modules/postgres"
"github.com/testcontainers/testcontainers-go/wait"
)
func TestPostgresDatabase(ctx context.Context) (string, DbCloser, error) {
container, err := tcpostgres.RunContainer(
ctx,
withImage("docker.io/postgres:16-alpine"),
tcpostgres.WithDatabase("gophershare"),
tcpostgres.WithUsername("postgres"),
tcpostgres.WithPassword("postgres"),
testcontainers.WithWaitStrategy(
wait.ForListeningPort("5432/tcp"),
),
)
if err != nil {
return "", nil, err
}
connString, err := container.ConnectionString(ctx, "sslmode=disable")
if err != nil {
return "", nil, err
}
return connString, CloserFunc(container.Terminate), nil
}
func withImage(image string) testcontainers.CustomizeRequestOption {
return func(req *testcontainers.GenericContainerRequest) error {
req.Image = image
return nil
}
}