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 }