|
|
@@ -1,13 +1,15 @@
|
|
|
package auth
|
|
|
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
"net/http"
|
|
|
+ "net/http/httptest"
|
|
|
"testing"
|
|
|
"time"
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/models"
|
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
|
- "gopkg.in/macaron.v1"
|
|
|
+ macaron "gopkg.in/macaron.v1"
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/log"
|
|
|
"github.com/grafana/grafana/pkg/services/sqlstore"
|
|
|
@@ -51,20 +53,37 @@ func TestUserAuthToken(t *testing.T) {
|
|
|
})
|
|
|
|
|
|
Convey("signing out should delete token and cookie if present", func() {
|
|
|
- token, err := userAuthTokenService.CreateToken(userID, "192.168.1.1:1234", "user agent")
|
|
|
- So(err, ShouldBeNil)
|
|
|
- So(token, ShouldNotBeNil)
|
|
|
-
|
|
|
httpreq := &http.Request{Header: make(http.Header)}
|
|
|
- httpreq.AddCookie(&http.Cookie{Name: userAuthTokenService.Cfg.LoginCookieName, Value: token.AuthToken})
|
|
|
+ httpreq.AddCookie(&http.Cookie{Name: userAuthTokenService.Cfg.LoginCookieName, Value: token.UnhashedToken})
|
|
|
|
|
|
- ctx := &models.ReqContext{Context: &macaron.Context{Req: macaron.Request{Request: httpreq}}}
|
|
|
+ ctx := &models.ReqContext{Context: &macaron.Context{
|
|
|
+ Req: macaron.Request{Request: httpreq},
|
|
|
+ Resp: macaron.NewResponseWriter("POST", httptest.NewRecorder()),
|
|
|
+ },
|
|
|
+ Logger: log.New("fakelogger"),
|
|
|
+ }
|
|
|
|
|
|
err = userAuthTokenService.SignOutUser(ctx)
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
// makes sure we tell the browser to overwrite the cookie
|
|
|
- //So(ctx.Resp.Header().Get("Set-Cookie"), ShouldEqual, "")
|
|
|
+ cookieHeader := fmt.Sprintf("%s=; Path=/; Max-Age=0; HttpOnly", userAuthTokenService.Cfg.LoginCookieName)
|
|
|
+ So(ctx.Resp.Header().Get("Set-Cookie"), ShouldEqual, cookieHeader)
|
|
|
+ })
|
|
|
+
|
|
|
+ Convey("signing out an none existing session should return an error", func() {
|
|
|
+ httpreq := &http.Request{Header: make(http.Header)}
|
|
|
+ httpreq.AddCookie(&http.Cookie{Name: userAuthTokenService.Cfg.LoginCookieName, Value: "missing-session-cookie"})
|
|
|
+
|
|
|
+ ctx := &models.ReqContext{Context: &macaron.Context{
|
|
|
+ Req: macaron.Request{Request: httpreq},
|
|
|
+ Resp: macaron.NewResponseWriter("POST", httptest.NewRecorder()),
|
|
|
+ },
|
|
|
+ Logger: log.New("fakelogger"),
|
|
|
+ }
|
|
|
+
|
|
|
+ err = userAuthTokenService.SignOutUser(ctx)
|
|
|
+ So(err, ShouldNotBeNil)
|
|
|
})
|
|
|
})
|
|
|
|