aboutsummaryrefslogtreecommitdiffstats
path: root/integrations/integration_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'integrations/integration_test.go')
-rw-r--r--integrations/integration_test.go92
1 files changed, 92 insertions, 0 deletions
diff --git a/integrations/integration_test.go b/integrations/integration_test.go
new file mode 100644
index 0000000000..db78eead86
--- /dev/null
+++ b/integrations/integration_test.go
@@ -0,0 +1,92 @@
+// Copyright 2017 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package integrations
+
+import (
+ "bytes"
+ "fmt"
+ "io"
+ "net/http"
+ "os"
+ "testing"
+
+ "code.gitea.io/gitea/models"
+ "code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/routers"
+ "code.gitea.io/gitea/routers/routes"
+
+ "gopkg.in/macaron.v1"
+ "gopkg.in/testfixtures.v2"
+)
+
+var mac *macaron.Macaron
+
+func TestMain(m *testing.M) {
+ appIniPath := os.Getenv("GITEA_CONF")
+ if appIniPath == "" {
+ fmt.Println("Environment variable $GITEA_CONF not set")
+ os.Exit(1)
+ }
+ setting.CustomConf = appIniPath
+ routers.GlobalInit()
+ mac = routes.NewMacaron()
+ routes.RegisterRoutes(mac)
+
+ var helper testfixtures.Helper
+ if setting.UseMySQL {
+ helper = &testfixtures.MySQL{}
+ } else if setting.UsePostgreSQL {
+ helper = &testfixtures.PostgreSQL{}
+ } else if setting.UseSQLite3 {
+ helper = &testfixtures.SQLite{}
+ } else {
+ fmt.Println("Unsupported RDBMS for integration tests")
+ os.Exit(1)
+ }
+
+ err := models.InitFixtures(
+ helper,
+ "integrations/gitea-integration/fixtures/",
+ )
+ if err != nil {
+ fmt.Printf("Error initializing test database: %v\n", err)
+ os.Exit(1)
+ }
+ os.Exit(m.Run())
+}
+
+type TestResponseWriter struct {
+ HeaderCode int
+ Writer io.Writer
+}
+
+func (w *TestResponseWriter) Header() http.Header {
+ return make(map[string][]string)
+}
+
+func (w *TestResponseWriter) Write(b []byte) (int, error) {
+ return w.Writer.Write(b)
+}
+
+func (w *TestResponseWriter) WriteHeader(n int) {
+ w.HeaderCode = n
+}
+
+type TestResponse struct {
+ HeaderCode int
+ Body []byte
+}
+
+func MakeRequest(req *http.Request) *TestResponse {
+ buffer := bytes.NewBuffer(nil)
+ respWriter := &TestResponseWriter{
+ Writer: buffer,
+ }
+ mac.ServeHTTP(respWriter, req)
+ return &TestResponse{
+ HeaderCode: respWriter.HeaderCode,
+ Body: buffer.Bytes(),
+ }
+}