github.com/paulwerner/bookkeeper@v0.1.0/router/handler/handler_test.go (about)

     1  package handler
     2  
     3  import (
     4  	"context"
     5  	"database/sql"
     6  	"fmt"
     7  	"log"
     8  	"os"
     9  	"path/filepath"
    10  	"testing"
    11  
    12  	"github.com/gofiber/fiber/v2"
    13  	"github.com/paulwerner/bookkeeper/infra"
    14  	"github.com/paulwerner/bookkeeper/ops"
    15  	d "github.com/paulwerner/bookkeeper/pkg/domain"
    16  	"github.com/paulwerner/bookkeeper/security"
    17  	"github.com/paulwerner/bookkeeper/store"
    18  	"github.com/paulwerner/bookkeeper/utils"
    19  )
    20  
    21  var app *fiber.App
    22  var db *sql.DB
    23  
    24  func setWorkingDir() {
    25  	wd, _ := os.Getwd()
    26  	// go 2 directories up for migrations to be found
    27  	os.Chdir(filepath.Dir(filepath.Dir(wd)))
    28  }
    29  
    30  func createAuthHeader(id d.UserID) (string, string) {
    31  	token, _ := utils.GenUserToken(id)
    32  	bearer := fmt.Sprintf("Bearer %s", token)
    33  	return "Authorization", bearer
    34  }
    35  
    36  func TestMain(m *testing.M) {
    37  	setWorkingDir()
    38  	ctx := context.Background()
    39  	container, database, err := infra.CreatePostgresTestContainer(ctx, "testdb")
    40  	if err != nil {
    41  		panic(err)
    42  	}
    43  	ops.RunMigrations(database)
    44  
    45  	aH := security.NewAuthHandler()
    46  	us := store.NewUserStore(database)
    47  	as := store.NewAccountStore(database)
    48  	ts := store.NewTransactionStore(database)
    49  
    50  	h := NewHandler(aH, us, as, ts)
    51  	server := infra.NewFiberServer()
    52  
    53  	h.Register(server)
    54  
    55  	app = server
    56  	db = database
    57  
    58  	errCode := m.Run()
    59  
    60  	err = database.Close()
    61  	if err != nil {
    62  		log.Printf("failed to close db connection: %s", err)
    63  	}
    64  
    65  	err = container.Terminate(ctx)
    66  	if err != nil {
    67  		log.Printf("failed to terminate the test container: %s", err)
    68  	}
    69  
    70  	os.Exit(errCode)
    71  }