gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

router.go (2221B)


      1 // GoToSocial
      2 // Copyright (C) GoToSocial Authors admin@gotosocial.org
      3 // SPDX-License-Identifier: AGPL-3.0-or-later
      4 //
      5 // This program is free software: you can redistribute it and/or modify
      6 // it under the terms of the GNU Affero General Public License as published by
      7 // the Free Software Foundation, either version 3 of the License, or
      8 // (at your option) any later version.
      9 //
     10 // This program is distributed in the hope that it will be useful,
     11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 // GNU Affero General Public License for more details.
     14 //
     15 // You should have received a copy of the GNU Affero General Public License
     16 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 
     18 package testrig
     19 
     20 import (
     21 	"context"
     22 	"os"
     23 	"path/filepath"
     24 	"strconv"
     25 
     26 	"github.com/gin-gonic/gin"
     27 	"github.com/superseriousbusiness/gotosocial/internal/config"
     28 	"github.com/superseriousbusiness/gotosocial/internal/db"
     29 	"github.com/superseriousbusiness/gotosocial/internal/router"
     30 )
     31 
     32 // NewTestRouter returns a Router suitable for testing
     33 //
     34 // If the environment variable GTS_WEB_TEMPLATE_BASE_DIR set, it will take that
     35 // value as the template base directory instead.
     36 func NewTestRouter(db db.DB) router.Router {
     37 	if alternativeTemplateBaseDir := os.Getenv("GTS_WEB_TEMPLATE_BASE_DIR"); alternativeTemplateBaseDir != "" {
     38 		config.Config(func(cfg *config.Configuration) {
     39 			cfg.WebTemplateBaseDir = alternativeTemplateBaseDir
     40 		})
     41 	}
     42 
     43 	if alternativeBindAddress := os.Getenv("GTS_BIND_ADDRESS"); alternativeBindAddress != "" {
     44 		config.SetBindAddress(alternativeBindAddress)
     45 	}
     46 
     47 	if alternativePortStr := os.Getenv("GTS_PORT"); alternativePortStr != "" {
     48 		if alternativePort, err := strconv.Atoi(alternativePortStr); err == nil {
     49 			config.SetPort(alternativePort)
     50 		}
     51 	}
     52 
     53 	r, err := router.New(context.Background())
     54 	if err != nil {
     55 		panic(err)
     56 	}
     57 	return r
     58 }
     59 
     60 // ConfigureTemplatesWithGin will panic on any errors related to template loading during tests
     61 func ConfigureTemplatesWithGin(engine *gin.Engine, templatePath string) {
     62 	router.LoadTemplateFunctions(engine)
     63 	engine.LoadHTMLGlob(filepath.Join(templatePath, "*"))
     64 }