瀏覽代碼

Refactoring, worked on middleware unit tests, and began thinking about api unit tests, #1921

Torkel Ödegaard 10 年之前
父節點
當前提交
cb8110cd48

+ 35 - 0
pkg/api/api_test.go

@@ -0,0 +1,35 @@
+package api
+
+import (
+	"testing"
+)
+
+func TestHttpApi(t *testing.T) {
+
+	// Convey("Given the grafana api", t, func() {
+	// 	ConveyApiScenario("Can sign up", func(c apiTestContext) {
+	// 		c.PostJson()
+	// 		So(c.Resp, ShouldEqualJsonApiResponse, "User created and logged in")
+	// 	})
+	//
+	// 	m := macaron.New()
+	// 	m.Use(middleware.GetContextHandler())
+	// 	m.Use(middleware.Sessioner(&session.Options{}))
+	// 	Register(m)
+	//
+	// 	var context *middleware.Context
+	// 	m.Get("/", func(c *middleware.Context) {
+	// 		context = c
+	// 	})
+	//
+	// 	resp := httptest.NewRecorder()
+	// 	req, err := http.NewRequest("GET", "/", nil)
+	// 	So(err, ShouldBeNil)
+	//
+	// 	m.ServeHTTP(resp, req)
+	//
+	// 	Convey("should red 200", func() {
+	// 		So(resp.Code, ShouldEqual, 200)
+	// 	})
+	// })
+}

+ 35 - 17
pkg/middleware/middleware_test.go

@@ -10,31 +10,49 @@ import (
 	. "github.com/smartystreets/goconvey/convey"
 )
 
-func TestMiddlewareContext(t *testing.T) {
+type scenarioContext struct {
+	m       *macaron.Macaron
+	context *Context
+	resp    *httptest.ResponseRecorder
+}
 
-	Convey("Given grafana context", t, func() {
-		m := macaron.New()
-		m.Use(GetContextHandler())
-		m.Use(Sessioner(&session.Options{}))
+func (sc *scenarioContext) PerformGet(url string) {
+	req, err := http.NewRequest("GET", "/", nil)
+	So(err, ShouldBeNil)
+	sc.m.ServeHTTP(sc.resp, req)
+}
 
-		var context *Context
+type scenarioFunc func(c *scenarioContext)
 
-		m.Get("/", func(c *Context) {
-			context = c
-		})
+func middlewareScenario(desc string, fn scenarioFunc) {
+	sc := &scenarioContext{}
+
+	sc.m = macaron.New()
+	sc.m.Use(GetContextHandler())
+	// mock out gc goroutine
+	startSessionGC = func() {}
+	sc.m.Use(Sessioner(&session.Options{}))
 
-		resp := httptest.NewRecorder()
-		req, err := http.NewRequest("GET", "/", nil)
-		So(err, ShouldBeNil)
+	sc.m.Get("/", func(c *Context) {
+		sc.context = c
+	})
+
+	sc.resp = httptest.NewRecorder()
+	fn(sc)
+}
 
-		m.ServeHTTP(resp, req)
+func TestMiddlewareContext(t *testing.T) {
 
-		Convey("Should be able to get grafana context in handlers", func() {
-			So(context, ShouldNotBeNil)
+	Convey("Given grafana context", t, func() {
+		middlewareScenario("middleware should add context to injector", func(sc *scenarioContext) {
+			sc.PerformGet("/")
+			So(sc.context, ShouldNotBeNil)
 		})
 
-		Convey("should return 200", func() {
-			So(resp.Code, ShouldEqual, 200)
+		middlewareScenario("Default middleware should allow get request", func(sc *scenarioContext) {
+			sc.PerformGet("/")
+			So(sc.resp.Code, ShouldEqual, 200)
 		})
+
 	})
 }

+ 6 - 3
pkg/middleware/session.go

@@ -17,10 +17,13 @@ const (
 
 var sessionManager *session.Manager
 var sessionOptions *session.Options
+var startSessionGC func()
 
-func startSessionGC() {
-	sessionManager.GC()
-	time.AfterFunc(time.Duration(sessionOptions.Gclifetime)*time.Second, startSessionGC)
+func init() {
+	startSessionGC = func() {
+		sessionManager.GC()
+		time.AfterFunc(time.Duration(sessionOptions.Gclifetime)*time.Second, startSessionGC)
+	}
 }
 
 func prepareOptions(opt *session.Options) *session.Options {

+ 20 - 23
pkg/services/sqlstore/migrations/migrations_test.go

@@ -1,12 +1,9 @@
 package migrations
 
 import (
-	"fmt"
-	"strings"
 	"testing"
 
 	"github.com/go-xorm/xorm"
-	"github.com/grafana/grafana/pkg/log"
 	. "github.com/grafana/grafana/pkg/services/sqlstore/migrator"
 	"github.com/grafana/grafana/pkg/services/sqlstore/sqlutil"
 
@@ -16,7 +13,7 @@ import (
 var indexTypes = []string{"Unknown", "INDEX", "UNIQUE INDEX"}
 
 func TestMigrations(t *testing.T) {
-	log.NewLogger(0, "console", `{"level": 0}`)
+	//log.NewLogger(0, "console", `{"level": 0}`)
 
 	testDBs := []sqlutil.TestDB{
 		sqlutil.TestDB_Sqlite3,
@@ -31,30 +28,30 @@ func TestMigrations(t *testing.T) {
 			sqlutil.CleanDB(x)
 
 			mg := NewMigrator(x)
-			mg.LogLevel = log.DEBUG
+			//mg.LogLevel = log.DEBUG
 			AddMigrations(mg)
 
 			err = mg.Start()
 			So(err, ShouldBeNil)
 
-			tables, err := x.DBMetas()
-			So(err, ShouldBeNil)
-
-			fmt.Printf("\nDB Schema after migration: table count: %v\n", len(tables))
-
-			for _, table := range tables {
-				fmt.Printf("\nTable: %v \n", table.Name)
-				for _, column := range table.Columns() {
-					fmt.Printf("\t %v \n", column.String(x.Dialect()))
-				}
-
-				if len(table.Indexes) > 0 {
-					fmt.Printf("\n\tIndexes:\n")
-					for _, index := range table.Indexes {
-						fmt.Printf("\t %v (%v) %v \n", index.Name, strings.Join(index.Cols, ","), indexTypes[index.Type])
-					}
-				}
-			}
+			// tables, err := x.DBMetas()
+			// So(err, ShouldBeNil)
+			//
+			// fmt.Printf("\nDB Schema after migration: table count: %v\n", len(tables))
+			//
+			// for _, table := range tables {
+			// 	fmt.Printf("\nTable: %v \n", table.Name)
+			// 	for _, column := range table.Columns() {
+			// 		fmt.Printf("\t %v \n", column.String(x.Dialect()))
+			// 	}
+			//
+			// 	if len(table.Indexes) > 0 {
+			// 		fmt.Printf("\n\tIndexes:\n")
+			// 		for _, index := range table.Indexes {
+			// 			fmt.Printf("\t %v (%v) %v \n", index.Name, strings.Join(index.Cols, ","), indexTypes[index.Type])
+			// 		}
+			// 	}
+			// }
 		})
 	}
 }

+ 0 - 1
pkg/services/sqlstore/org_test.go

@@ -10,7 +10,6 @@ import (
 )
 
 func TestAccountDataAccess(t *testing.T) {
-
 	Convey("Testing Account DB Access", t, func() {
 		InitTestDB(t)
 

+ 0 - 0
pkg/services/sqlstore/xorm.log


+ 1 - 1
pkg/setting/setting.go

@@ -122,7 +122,7 @@ type CommandLineArgs struct {
 
 func init() {
 	IsWindows = runtime.GOOS == "windows"
-	log.NewLogger(0, "console", `{"level": 0}`)
+	//log.NewLogger(0, "console", `{"level": 0}`)
 }
 
 func parseAppUrlAndSubUrl(section *ini.Section) (string, string) {