mirror of
https://github.com/absmach/supermq.git
synced 2026-06-23 06:30:22 +00:00
a0c40ba462
* chore(license): update copyright notices Add CI check for non go files to check that the files contain a license Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * fix(ci): log failed files When the CI fails during check for license header, log the failed file to console so that someone can check on the actual file. Also simplify the grep check to make it more human readable and understandable Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> --------- Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
88 lines
2.0 KiB
Go
88 lines
2.0 KiB
Go
// Copyright (c) Abstract Machines
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// Package postgres_test contains tests for PostgreSQL repository
|
|
// implementations.
|
|
package postgres_test
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
apostgres "github.com/absmach/magistrala/auth/postgres"
|
|
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
|
"github.com/absmach/magistrala/internal/postgres"
|
|
"github.com/jmoiron/sqlx"
|
|
dockertest "github.com/ory/dockertest/v3"
|
|
"go.opentelemetry.io/otel"
|
|
)
|
|
|
|
var (
|
|
db *sqlx.DB
|
|
database postgres.Database
|
|
tracer = otel.Tracer("repo_tests")
|
|
)
|
|
|
|
func TestMain(m *testing.M) {
|
|
pool, err := dockertest.NewPool("")
|
|
if err != nil {
|
|
log.Fatalf("Could not connect to docker: %s", err)
|
|
}
|
|
|
|
cfg := []string{
|
|
"POSTGRES_USER=test",
|
|
"POSTGRES_PASSWORD=test",
|
|
"POSTGRES_DB=test",
|
|
}
|
|
container, err := pool.Run("postgres", "13.3-alpine", cfg)
|
|
if err != nil {
|
|
log.Fatalf("Could not start container: %s", err)
|
|
}
|
|
|
|
port := container.GetPort("5432/tcp")
|
|
|
|
pool.MaxWait = 120 * time.Second
|
|
if err := pool.Retry(func() error {
|
|
url := fmt.Sprintf("host=localhost port=%s user=test dbname=test password=test sslmode=disable", port)
|
|
db, err := sql.Open("pgx", url)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return db.Ping()
|
|
}); err != nil {
|
|
log.Fatalf("Could not connect to docker: %s", err)
|
|
}
|
|
|
|
dbConfig := pgclient.Config{
|
|
Host: "localhost",
|
|
Port: port,
|
|
User: "test",
|
|
Pass: "test",
|
|
Name: "test",
|
|
SSLMode: "disable",
|
|
SSLCert: "",
|
|
SSLKey: "",
|
|
SSLRootCert: "",
|
|
}
|
|
|
|
if db, err = pgclient.SetupDB(dbConfig, *apostgres.Migration()); err != nil {
|
|
log.Fatalf("Could not setup test DB connection: %s", err)
|
|
}
|
|
|
|
database = postgres.NewDatabase(db, dbConfig, tracer)
|
|
|
|
code := m.Run()
|
|
|
|
// Defers will not be run when using os.Exit
|
|
db.Close()
|
|
if err := pool.Purge(container); err != nil {
|
|
log.Fatalf("Could not purge container: %s", err)
|
|
}
|
|
|
|
os.Exit(code)
|
|
}
|