diff --git a/cmd/migrate.go b/cmd/migrate.go index 522304bd9..dec2ce74e 100644 --- a/cmd/migrate.go +++ b/cmd/migrate.go @@ -23,6 +23,10 @@ func RunMigrations(logger *slog.Logger, config db.Config) error { if err != nil { return err } + defer func() { + _, _ = m.Close() + }() + if err = m.Up(); err != nil && err != migrate.ErrNoChange { return err } @@ -33,6 +37,8 @@ func RunMigrations(logger *slog.Logger, config db.Config) error { if err != nil { return errors.Wrap(err, "failed to connect to db") } + defer dbc.Close() + metaschemaRepository := postgres.NewMetaSchemaRepository(logger, dbc) metaschemaService := metaschema.NewService(metaschemaRepository, logger, 0) if err = metaschemaService.MigrateDefault(context.Background()); err != nil { @@ -49,6 +55,9 @@ func RunRollback(logger *slog.Logger, config db.Config) error { if err != nil { return err } + defer func() { + _, _ = m.Close() + }() err = m.Steps(-1) if err != nil && err != migrate.ErrNoChange { diff --git a/internal/store/postgres/audit_record_repository_test.go b/internal/store/postgres/audit_record_repository_test.go index a54cc9511..e5a15ef4c 100644 --- a/internal/store/postgres/audit_record_repository_test.go +++ b/internal/store/postgres/audit_record_repository_test.go @@ -10,11 +10,7 @@ import ( "testing" "time" - "io" - "log/slog" - "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/auditrecord" "github.com/raystack/frontier/internal/store/postgres" pkgAuditRecord "github.com/raystack/frontier/pkg/auditrecord" @@ -34,8 +30,6 @@ type AuditRecordRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.AuditRecordRepository auditRecords []auditrecord.AuditRecord } @@ -43,8 +37,7 @@ type AuditRecordRepositoryTestSuite struct { func (s *AuditRecordRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -100,7 +93,7 @@ func (s *AuditRecordRepositoryTestSuite) setupListTestData() { } func (s *AuditRecordRepositoryTestSuite) TearDownSuite() { - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/billing_customer_repository_test.go b/internal/store/postgres/billing_customer_repository_test.go index fd39cab34..8909e8afb 100644 --- a/internal/store/postgres/billing_customer_repository_test.go +++ b/internal/store/postgres/billing_customer_repository_test.go @@ -15,13 +15,9 @@ import ( "github.com/raystack/frontier/billing/customer" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" "github.com/raystack/frontier/pkg/metadata" @@ -32,8 +28,6 @@ type BillingCustomerRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.BillingCustomerRepository orgIDs []string } @@ -41,8 +35,7 @@ type BillingCustomerRepositoryTestSuite struct { func (s *BillingCustomerRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -63,8 +56,7 @@ func (s *BillingCustomerRepositoryTestSuite) SetupTest() { } func (s *BillingCustomerRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/billing_product_repository_test.go b/internal/store/postgres/billing_product_repository_test.go index 9b8f92c93..043c0dedf 100644 --- a/internal/store/postgres/billing_product_repository_test.go +++ b/internal/store/postgres/billing_product_repository_test.go @@ -9,12 +9,8 @@ import ( "github.com/google/uuid" "github.com/raystack/frontier/billing/product" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/ory/dockertest" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" "github.com/raystack/frontier/pkg/metadata" @@ -25,16 +21,13 @@ type BillingProductRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.BillingProductRepository } func (s *BillingProductRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -47,8 +40,7 @@ func (s *BillingProductRepositoryTestSuite) SetupTest() { } func (s *BillingProductRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/billing_transactions_repository_pg_test.go b/internal/store/postgres/billing_transactions_repository_pg_test.go index ff6102d80..42bf3ef38 100644 --- a/internal/store/postgres/billing_transactions_repository_pg_test.go +++ b/internal/store/postgres/billing_transactions_repository_pg_test.go @@ -2,12 +2,9 @@ package postgres_test import ( "context" - "io" - "log/slog" "testing" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/billing/credit" "github.com/raystack/frontier/internal/bootstrap/schema" "github.com/raystack/frontier/internal/store/postgres" @@ -19,16 +16,13 @@ type BillingTransactionRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.BillingTransactionRepository } func (s *BillingTransactionRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -38,7 +32,7 @@ func (s *BillingTransactionRepositoryTestSuite) SetupSuite() { } func (s *BillingTransactionRepositoryTestSuite) TearDownSuite() { - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/domain_repository_test.go b/internal/store/postgres/domain_repository_test.go index 72c69da8b..a50b8fae5 100644 --- a/internal/store/postgres/domain_repository_test.go +++ b/internal/store/postgres/domain_repository_test.go @@ -7,7 +7,6 @@ import ( "testing" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/domain" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" @@ -18,8 +17,6 @@ type DomainRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.DomainRepository orgID string } @@ -28,7 +25,7 @@ func (s *DomainRepositoryTestSuite) SetupSuite() { var err error logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -44,7 +41,7 @@ func (s *DomainRepositoryTestSuite) SetupSuite() { } func (s *DomainRepositoryTestSuite) TearDownSuite() { - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/group_repository_test.go b/internal/store/postgres/group_repository_test.go index f4a520bfb..0450a2e6b 100644 --- a/internal/store/postgres/group_repository_test.go +++ b/internal/store/postgres/group_repository_test.go @@ -8,13 +8,9 @@ import ( "github.com/raystack/frontier/internal/bootstrap/schema" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/group" "github.com/raystack/frontier/core/organization" "github.com/raystack/frontier/core/relation" @@ -29,8 +25,6 @@ type GroupRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.GroupRepository relationRepository *postgres.RelationRepository namespaceRepository *postgres.NamespaceRepository @@ -43,8 +37,7 @@ type GroupRepositoryTestSuite struct { func (s *GroupRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -125,8 +118,7 @@ func (s *GroupRepositoryTestSuite) SetupTest() { } func (s *GroupRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/invitation_repository_test.go b/internal/store/postgres/invitation_repository_test.go index 326ab3bbb..077e653cb 100644 --- a/internal/store/postgres/invitation_repository_test.go +++ b/internal/store/postgres/invitation_repository_test.go @@ -12,7 +12,6 @@ import ( "log/slog" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/group" "github.com/raystack/frontier/core/invitation" "github.com/raystack/frontier/core/user" @@ -26,8 +25,6 @@ type InvitationRespositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.InvitationRepository users []user.User groups []group.Group @@ -39,7 +36,7 @@ func (s *InvitationRespositoryTestSuite) SetupSuite() { var err error logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -69,8 +66,7 @@ func (s *InvitationRespositoryTestSuite) SetupTest() { } func (s *InvitationRespositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/kyc_repository_test.go b/internal/store/postgres/kyc_repository_test.go index b97a5c914..f098295ae 100644 --- a/internal/store/postgres/kyc_repository_test.go +++ b/internal/store/postgres/kyc_repository_test.go @@ -6,13 +6,9 @@ import ( "sort" "testing" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/kyc" "github.com/raystack/frontier/core/organization" "github.com/raystack/frontier/internal/store/postgres" @@ -24,8 +20,6 @@ type OrgKycRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.OrgKycRepository orgRepository *postgres.OrganizationRepository kycs []kyc.KYC @@ -35,8 +29,7 @@ type OrgKycRepositoryTestSuite struct { func (s *OrgKycRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -59,8 +52,7 @@ func (s *OrgKycRepositoryTestSuite) SetupTest() { } func (s *OrgKycRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/lock_test.go b/internal/store/postgres/lock_test.go index e7d21a1ae..044f9fbe2 100644 --- a/internal/store/postgres/lock_test.go +++ b/internal/store/postgres/lock_test.go @@ -4,10 +4,6 @@ import ( "context" "testing" - "io" - "log/slog" - - "github.com/ory/dockertest" "github.com/stretchr/testify/suite" "github.com/raystack/frontier/pkg/db" @@ -15,10 +11,8 @@ import ( type LockTestSuite struct { suite.Suite - ctx context.Context - client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource + ctx context.Context + client *db.Client } func TestLocks(t *testing.T) { @@ -28,8 +22,7 @@ func TestLocks(t *testing.T) { func (s *LockTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -40,8 +33,7 @@ func (s *LockTestSuite) SetupSuite() { func (s *LockTestSuite) SetupTest() {} func (s *LockTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/namespace_repository_test.go b/internal/store/postgres/namespace_repository_test.go index 33fda36c9..86e60029f 100644 --- a/internal/store/postgres/namespace_repository_test.go +++ b/internal/store/postgres/namespace_repository_test.go @@ -7,12 +7,8 @@ import ( "github.com/google/uuid" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/namespace" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" @@ -23,16 +19,13 @@ type NamespaceRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.NamespaceRepository } func (s *NamespaceRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -50,8 +43,7 @@ func (s *NamespaceRepositoryTestSuite) SetupTest() { } func (s *NamespaceRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/org_projects_repository_pg_test.go b/internal/store/postgres/org_projects_repository_pg_test.go index 57e117a0d..69032c511 100644 --- a/internal/store/postgres/org_projects_repository_pg_test.go +++ b/internal/store/postgres/org_projects_repository_pg_test.go @@ -3,11 +3,8 @@ package postgres_test import ( "context" "fmt" - "io" - "log/slog" "testing" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/aggregates/orgprojects" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" @@ -21,16 +18,13 @@ type OrgProjectsRepositoryPGTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.OrgProjectsRepository orgID string } func (s *OrgProjectsRepositoryPGTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -39,7 +33,7 @@ func (s *OrgProjectsRepositoryPGTestSuite) SetupSuite() { } func (s *OrgProjectsRepositoryPGTestSuite) TearDownSuite() { - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/org_serviceuser_repository_pg_test.go b/internal/store/postgres/org_serviceuser_repository_pg_test.go index 510c573e0..2398c3079 100644 --- a/internal/store/postgres/org_serviceuser_repository_pg_test.go +++ b/internal/store/postgres/org_serviceuser_repository_pg_test.go @@ -3,11 +3,8 @@ package postgres_test import ( "context" "fmt" - "io" - "log/slog" "testing" - "github.com/ory/dockertest" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" "github.com/raystack/salt/rql" @@ -29,16 +26,13 @@ type OrgServiceUserRepositoryPGTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.OrgServiceUserRepository orgID string } func (s *OrgServiceUserRepositoryPGTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -47,7 +41,7 @@ func (s *OrgServiceUserRepositoryPGTestSuite) SetupSuite() { } func (s *OrgServiceUserRepositoryPGTestSuite) TearDownSuite() { - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/org_users_repository_pg_test.go b/internal/store/postgres/org_users_repository_pg_test.go index cc2f1e449..6debb12f5 100644 --- a/internal/store/postgres/org_users_repository_pg_test.go +++ b/internal/store/postgres/org_users_repository_pg_test.go @@ -3,11 +3,8 @@ package postgres_test import ( "context" "fmt" - "io" - "log/slog" "testing" - "github.com/ory/dockertest" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" "github.com/raystack/salt/rql" @@ -20,16 +17,13 @@ type OrgUsersRepositoryPGTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.OrgUsersRepository orgID string } func (s *OrgUsersRepositoryPGTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -38,7 +32,7 @@ func (s *OrgUsersRepositoryPGTestSuite) SetupSuite() { } func (s *OrgUsersRepositoryPGTestSuite) TearDownSuite() { - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/organization_repository_test.go b/internal/store/postgres/organization_repository_test.go index 40b1027b3..12f3a21bb 100644 --- a/internal/store/postgres/organization_repository_test.go +++ b/internal/store/postgres/organization_repository_test.go @@ -9,13 +9,9 @@ import ( "github.com/raystack/frontier/internal/bootstrap/schema" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/organization" "github.com/raystack/frontier/core/relation" "github.com/raystack/frontier/core/user" @@ -29,8 +25,6 @@ type OrganizationRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.OrganizationRepository relationRepository *postgres.RelationRepository namespaceRepository *postgres.NamespaceRepository @@ -42,8 +36,7 @@ type OrganizationRepositoryTestSuite struct { func (s *OrganizationRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -101,8 +94,7 @@ func (s *OrganizationRepositoryTestSuite) SetupTest() { } func (s *OrganizationRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/permission_repository_test.go b/internal/store/postgres/permission_repository_test.go index 5d9d29ab7..e8b78bb78 100644 --- a/internal/store/postgres/permission_repository_test.go +++ b/internal/store/postgres/permission_repository_test.go @@ -9,12 +9,8 @@ import ( "github.com/raystack/frontier/core/permission" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/namespace" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" @@ -25,8 +21,6 @@ type PermissionRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.PermissionRepository permsInDB []permission.Permission } @@ -34,8 +28,7 @@ type PermissionRepositoryTestSuite struct { func (s *PermissionRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -58,8 +51,7 @@ func (s *PermissionRepositoryTestSuite) SetupTest() { } func (s *PermissionRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/policy_repository_test.go b/internal/store/postgres/policy_repository_test.go index 4e5d9fab9..cd07fed37 100644 --- a/internal/store/postgres/policy_repository_test.go +++ b/internal/store/postgres/policy_repository_test.go @@ -10,13 +10,9 @@ import ( "github.com/raystack/frontier/internal/bootstrap/schema" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/stretchr/testify/suite" "github.com/raystack/frontier/core/policy" @@ -28,8 +24,6 @@ type PolicyRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.PolicyRepository policies []policy.Policy userID string @@ -40,8 +34,7 @@ type PolicyRepositoryTestSuite struct { func (s *PolicyRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -87,8 +80,7 @@ func (s *PolicyRepositoryTestSuite) SetupTest() { } func (s *PolicyRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/postgres_test.go b/internal/store/postgres/postgres_test.go index 18af52fb1..1e670d659 100644 --- a/internal/store/postgres/postgres_test.go +++ b/internal/store/postgres/postgres_test.go @@ -6,6 +6,7 @@ import ( "encoding/json" "fmt" "os" + "sync/atomic" "testing" "time" @@ -39,13 +40,21 @@ import ( ) const ( - logLevelDebug = "debug" - pg_uname = "test_user" - pg_passwd = "test_pass" - pg_dbname = "test_db" + pg_uname = "test_user" + pg_passwd = "test_pass" + pg_dbname = "test_db" ) -func newTestClient(logger *slog.Logger) (*db.Client, *dockertest.Pool, *dockertest.Resource, error) { +var ( + testPool *dockertest.Pool + testResource *dockertest.Resource + testPort string + testDBCounter uint64 +) + +func TestMain(m *testing.M) { + logger := slog.New(slog.NewTextHandler(io.Discard, nil)) + opts := &dockertest.RunOptions{ Repository: "postgres", Tag: "13", // Upgraded from 12 to 13 for gen_random_uuid() support @@ -56,95 +65,140 @@ func newTestClient(logger *slog.Logger) (*db.Client, *dockertest.Pool, *dockerte }, } - // uses a sensible default on windows (tcp/http) and linux/osx (socket) - pool, err := dockertest.NewPool("") + var err error + + testPool, err = dockertest.NewPool("") if err != nil { - return nil, nil, nil, fmt.Errorf("could not create dockertest pool: %w", err) + fmt.Fprintf(os.Stderr, "could not create dockertest pool: %v\n", err) + os.Exit(1) } - // pulls an image, creates a container based on it and runs it - resource, err := pool.RunWithOptions(opts, func(config *docker.HostConfig) { - // set AutoRemove to true so that stopped container goes away by itself + testPool.MaxWait = 60 * time.Second + + testResource, err = testPool.RunWithOptions(opts, func(config *docker.HostConfig) { config.AutoRemove = true config.RestartPolicy = docker.RestartPolicy{Name: "no"} }) if err != nil { - return nil, nil, nil, fmt.Errorf("could not start resource: %w", err) + fmt.Fprintf(os.Stderr, "could not start postgres resource: %v\n", err) + os.Exit(1) } - pg_port := resource.GetPort("5432/tcp") - if err != nil { - return nil, nil, nil, fmt.Errorf("cannot parse external port of container to int: %w", err) - } - - // attach terminal logger to container if exists - // for debugging purpose - if logger.Enabled(context.Background(), slog.LevelDebug) { - logWaiter, err := pool.Client.AttachToContainerNonBlocking(docker.AttachToContainerOptions{ - Container: resource.Container.ID, - OutputStream: os.Stderr, - ErrorStream: os.Stderr, - Stderr: true, - Stdout: true, - Stream: true, - }) - if err != nil { - logger.Error("could not connect to postgres container log output", "error", err) - return nil, nil, nil, err - } - defer func() { - err = logWaiter.Close() - if err != nil { - logger.Error("could not close container log", "error", err) - } + testPort = testResource.GetPort("5432/tcp") + + pgConfig := db.Config{ + Driver: "pgx", + URL: fmt.Sprintf("postgres://%s:%s@localhost:%s/%s?sslmode=disable", pg_uname, pg_passwd, testPort, pg_dbname), + MaxIdleConns: 10, + MaxOpenConns: 10, + ConnMaxLifeTime: time.Second * 60, + MaxQueryTimeout: time.Millisecond * 1000, + } + + var pgClient *db.Client - err = logWaiter.Wait() - if err != nil { - logger.Error("could not wait for container log to close", "error", err) - } - }() + if err := testPool.Retry(func() error { + var err error + pgClient, err = db.New(pgConfig) + return err + }); err != nil { + fmt.Fprintf(os.Stderr, "could not connect to postgres: %v\n", err) + _ = testPool.Purge(testResource) + os.Exit(1) + } + + if err := setup(context.Background(), logger, pgClient, pgConfig); err != nil { + fmt.Fprintf(os.Stderr, "failed to setup and migrate DB: %v\n", err) + _ = pgClient.Close() + _ = testPool.Purge(testResource) + os.Exit(1) } - // Tell docker to hard kill the container in 120 seconds - if err := resource.Expire(120); err != nil { - return nil, nil, nil, err + if err := pgClient.Close(); err != nil { + fmt.Fprintf(os.Stderr, "failed to close template DB connection: %v\n", err) + _ = testPool.Purge(testResource) + os.Exit(1) } - // exponential backoff-retry, because the application in the container might not be ready to accept connections yet - pool.MaxWait = 60 * time.Second + code := m.Run() + + if err := testPool.Purge(testResource); err != nil { + fmt.Fprintf(os.Stderr, "could not purge postgres resource: %v\n", err) + code = 1 + } + + os.Exit(code) +} + +func newTestClient() (*db.Client, error) { + if testPool == nil || testResource == nil || testPort == "" { + return nil, fmt.Errorf("shared postgres test container is not initialized") + } + + dbName := fmt.Sprintf( + "test_db_%d", + atomic.AddUint64(&testDBCounter, 1), + ) + + adminConfig := db.Config{ + Driver: "pgx", + URL: fmt.Sprintf( + "postgres://%s:%s@localhost:%s/postgres?sslmode=disable", + pg_uname, + pg_passwd, + testPort, + ), + MaxIdleConns: 1, + MaxOpenConns: 1, + ConnMaxLifeTime: time.Second * 60, + MaxQueryTimeout: time.Millisecond * 1000, + } + + adminClient, err := db.New(adminConfig) + if err != nil { + return nil, fmt.Errorf("could not connect to postgres: %w", err) + } + defer adminClient.Close() + + query := fmt.Sprintf("CREATE DATABASE %s TEMPLATE %s", dbName, pg_dbname) + if _, err := adminClient.ExecContext(context.Background(), query); err != nil { + return nil, fmt.Errorf("could not create test database %s: %w", dbName, err) + } pgConfig := db.Config{ - Driver: "pgx", - URL: fmt.Sprintf("postgres://%s:%s@localhost:%s/%s?sslmode=disable", pg_uname, pg_passwd, pg_port, pg_dbname), + Driver: "pgx", + URL: fmt.Sprintf( + "postgres://%s:%s@localhost:%s/%s?sslmode=disable", + pg_uname, + pg_passwd, + testPort, + dbName, + ), MaxIdleConns: 10, MaxOpenConns: 10, ConnMaxLifeTime: time.Second * 60, MaxQueryTimeout: time.Millisecond * 1000, } + var pgClient *db.Client - if err = pool.Retry(func() error { + + if err := testPool.Retry(func() error { + var err error pgClient, err = db.New(pgConfig) - if err != nil { - return err - } - return nil + return err }); err != nil { - return nil, nil, nil, fmt.Errorf("could not connect to docker: %w", err) + return nil, fmt.Errorf("could not connect to test database %s: %w", dbName, err) } - err = setup(context.Background(), logger, pgClient, pgConfig) - if err != nil { - logger.Error("failed to setup and migrate DB", "error", err) - return nil, nil, nil, err - } - return pgClient, pool, resource, nil + return pgClient, nil } -func purgeDocker(pool *dockertest.Pool, resource *dockertest.Resource) error { - if err := pool.Purge(resource); err != nil { - return fmt.Errorf("could not purge resource: %w", err) +func closeTestClient(client *db.Client) error { + if client == nil { + return nil } - return nil + + return client.Close() } func setup(ctx context.Context, logger *slog.Logger, client *db.Client, cfg db.Config) (err error) { diff --git a/internal/store/postgres/preference_repository_test.go b/internal/store/postgres/preference_repository_test.go index 9569adecb..6e07c9b33 100644 --- a/internal/store/postgres/preference_repository_test.go +++ b/internal/store/postgres/preference_repository_test.go @@ -5,12 +5,8 @@ import ( "fmt" "testing" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/preference" "github.com/raystack/frontier/internal/bootstrap/schema" "github.com/raystack/frontier/internal/store/postgres" @@ -22,16 +18,13 @@ type PreferenceRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.PreferenceRepository } func (s *PreferenceRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -53,7 +46,7 @@ func (s *PreferenceRepositoryTestSuite) SetupSuite() { } func (s *PreferenceRepositoryTestSuite) TearDownSuite() { - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/project_repository_test.go b/internal/store/postgres/project_repository_test.go index 31151722c..87a4e2cc5 100644 --- a/internal/store/postgres/project_repository_test.go +++ b/internal/store/postgres/project_repository_test.go @@ -7,13 +7,9 @@ import ( "github.com/raystack/frontier/internal/bootstrap/schema" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/organization" "github.com/raystack/frontier/core/project" "github.com/raystack/frontier/core/relation" @@ -27,8 +23,6 @@ type ProjectRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.ProjectRepository relationRepository *postgres.RelationRepository namespaceRepository *postgres.NamespaceRepository @@ -41,8 +35,7 @@ type ProjectRepositoryTestSuite struct { func (s *ProjectRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -99,8 +92,7 @@ func (s *ProjectRepositoryTestSuite) SetupTest() { } func (s *ProjectRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/prospect_repository_test.go b/internal/store/postgres/prospect_repository_test.go index 36b3fef82..ce1cdc578 100644 --- a/internal/store/postgres/prospect_repository_test.go +++ b/internal/store/postgres/prospect_repository_test.go @@ -7,13 +7,9 @@ import ( "os" "testing" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/prospect" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" @@ -32,8 +28,6 @@ type ProspectRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.ProspectRepository prospects []prospect.Prospect } @@ -41,8 +35,7 @@ type ProspectRepositoryTestSuite struct { func (s *ProspectRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -92,8 +85,7 @@ func (s *ProspectRepositoryTestSuite) TearDownTest() { } func (s *ProspectRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/relation_repository_test.go b/internal/store/postgres/relation_repository_test.go index d824d4b44..c80afa06b 100644 --- a/internal/store/postgres/relation_repository_test.go +++ b/internal/store/postgres/relation_repository_test.go @@ -6,13 +6,9 @@ import ( "sort" "testing" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/relation" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" @@ -24,8 +20,6 @@ type RelationRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.RelationRepository relations []relation.Relation orgID string @@ -34,8 +28,7 @@ type RelationRepositoryTestSuite struct { func (s *RelationRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -69,8 +62,7 @@ func (s *RelationRepositoryTestSuite) SetupTest() { } func (s *RelationRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/resource_repository_test.go b/internal/store/postgres/resource_repository_test.go index b2d219a83..99c4a6285 100644 --- a/internal/store/postgres/resource_repository_test.go +++ b/internal/store/postgres/resource_repository_test.go @@ -10,12 +10,8 @@ import ( "github.com/raystack/frontier/pkg/utils" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/namespace" "github.com/raystack/frontier/core/project" "github.com/raystack/frontier/core/resource" @@ -29,8 +25,6 @@ type ResourceRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.ResourceRepository resources []resource.Resource projects []project.Project @@ -42,8 +36,7 @@ type ResourceRepositoryTestSuite struct { func (s *ResourceRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -81,8 +74,7 @@ func (s *ResourceRepositoryTestSuite) SetupTest() { } func (s *ResourceRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/role_repository_test.go b/internal/store/postgres/role_repository_test.go index 26ca0a020..5597dc30f 100644 --- a/internal/store/postgres/role_repository_test.go +++ b/internal/store/postgres/role_repository_test.go @@ -10,12 +10,8 @@ import ( "github.com/google/uuid" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/role" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" @@ -27,8 +23,6 @@ type RoleRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.RoleRepository roles []role.Role orgID string @@ -37,8 +31,7 @@ type RoleRepositoryTestSuite struct { func (s *RoleRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -67,8 +60,7 @@ func (s *RoleRepositoryTestSuite) SetupTest() { } func (s *RoleRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/serviceuser_repository_test.go b/internal/store/postgres/serviceuser_repository_test.go index a9da91d70..f56675713 100644 --- a/internal/store/postgres/serviceuser_repository_test.go +++ b/internal/store/postgres/serviceuser_repository_test.go @@ -2,11 +2,8 @@ package postgres_test import ( "context" - "io" - "log/slog" "testing" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/serviceuser" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" @@ -17,8 +14,6 @@ type ServiceUserRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.ServiceUserRepository credentialRepository *postgres.ServiceUserCredentialRepository orgID string @@ -27,8 +22,7 @@ type ServiceUserRepositoryTestSuite struct { func (s *ServiceUserRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -45,7 +39,7 @@ func (s *ServiceUserRepositoryTestSuite) SetupSuite() { } func (s *ServiceUserRepositoryTestSuite) TearDownSuite() { - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/user_consent_repository_test.go b/internal/store/postgres/user_consent_repository_test.go index bfaab68f2..6b19c8274 100644 --- a/internal/store/postgres/user_consent_repository_test.go +++ b/internal/store/postgres/user_consent_repository_test.go @@ -4,13 +4,10 @@ import ( "context" "database/sql" "fmt" - "io" - "log/slog" "testing" "time" "github.com/jmoiron/sqlx" - "github.com/ory/dockertest" "github.com/stretchr/testify/suite" "github.com/raystack/frontier/core/consent" @@ -23,8 +20,6 @@ type UserConsentRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.UserConsentRepository userRepository *postgres.UserRepository } @@ -32,8 +27,7 @@ type UserConsentRepositoryTestSuite struct { func (s *UserConsentRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -44,7 +38,7 @@ func (s *UserConsentRepositoryTestSuite) SetupSuite() { } func (s *UserConsentRepositoryTestSuite) TearDownSuite() { - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/user_repository_test.go b/internal/store/postgres/user_repository_test.go index 56938c530..f072668d2 100644 --- a/internal/store/postgres/user_repository_test.go +++ b/internal/store/postgres/user_repository_test.go @@ -6,13 +6,9 @@ import ( "fmt" "testing" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/user" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" @@ -26,8 +22,6 @@ type UserRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.UserRepository users []user.User } @@ -35,8 +29,7 @@ type UserRepositoryTestSuite struct { func (s *UserRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -55,8 +48,7 @@ func (s *UserRepositoryTestSuite) SetupTest() { } func (s *UserRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/userpat_repository_test.go b/internal/store/postgres/userpat_repository_test.go index 1915ee421..32d039944 100644 --- a/internal/store/postgres/userpat_repository_test.go +++ b/internal/store/postgres/userpat_repository_test.go @@ -6,11 +6,7 @@ import ( "testing" "time" - "io" - "log/slog" - "github.com/google/uuid" - "github.com/ory/dockertest" "github.com/raystack/frontier/core/organization" "github.com/raystack/frontier/core/user" paterrors "github.com/raystack/frontier/core/userpat/errors" @@ -24,8 +20,6 @@ type UserPATRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.UserPATRepository users []user.User orgs []organization.Organization @@ -33,8 +27,7 @@ type UserPATRepositoryTestSuite struct { func (s *UserPATRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -55,7 +48,7 @@ func (s *UserPATRepositoryTestSuite) SetupTest() { } func (s *UserPATRepositoryTestSuite) TearDownSuite() { - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/internal/store/postgres/webhook_endpoint_repository_test.go b/internal/store/postgres/webhook_endpoint_repository_test.go index 7bc986146..fdf0a3586 100644 --- a/internal/store/postgres/webhook_endpoint_repository_test.go +++ b/internal/store/postgres/webhook_endpoint_repository_test.go @@ -10,12 +10,8 @@ import ( "github.com/google/uuid" - "io" - "log/slog" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/ory/dockertest" "github.com/raystack/frontier/internal/store/postgres" "github.com/raystack/frontier/pkg/db" "github.com/stretchr/testify/suite" @@ -25,16 +21,13 @@ type WebhookEndpointRepositoryTestSuite struct { suite.Suite ctx context.Context client *db.Client - pool *dockertest.Pool - resource *dockertest.Resource repository *postgres.WebhookEndpointRepository } func (s *WebhookEndpointRepositoryTestSuite) SetupSuite() { var err error - logger := slog.New(slog.NewTextHandler(io.Discard, nil)) - s.client, s.pool, s.resource, err = newTestClient(logger) + s.client, err = newTestClient() if err != nil { s.T().Fatal(err) } @@ -47,8 +40,7 @@ func (s *WebhookEndpointRepositoryTestSuite) SetupTest() { } func (s *WebhookEndpointRepositoryTestSuite) TearDownSuite() { - // Clean tests - if err := purgeDocker(s.pool, s.resource); err != nil { + if err := closeTestClient(s.client); err != nil { s.T().Fatal(err) } } diff --git a/pkg/db/db.go b/pkg/db/db.go index eebd571cc..0bef199b6 100644 --- a/pkg/db/db.go +++ b/pkg/db/db.go @@ -34,6 +34,7 @@ func New(cfg Config) (*Client, error) { } if err = d.Ping(); err != nil { + _ = d.Close() return nil, err }