@ -252,28 +252,38 @@ func TestMiddlewareContext(t *testing.T) {
maxAgeHours := ( time . Duration ( setting . LoginMaxLifetimeDays ) * 24 * time . Hour )
maxAge := ( maxAgeHours + time . Hour ) . Seconds ( )
expectedCookie := & http . Cookie {
Name : setting . LoginCookieName ,
Value : "rotated" ,
Path : setting . AppSubUrl + "/" ,
HttpOnly : true ,
MaxAge : int ( maxAge ) ,
Secure : setting . CookieSecure ,
SameSite : setting . CookieSameSite ,
sameSitePolicies := [ ] http . SameSite {
http . SameSiteDefaultMode ,
http . SameSiteLaxMode ,
http . SameSiteStrictMode ,
}
for _ , sameSitePolicy := range sameSitePolicies {
setting . CookieSameSite = sameSitePolicy
expectedCookie := & http . Cookie {
Name : setting . LoginCookieName ,
Value : "rotated" ,
Path : setting . AppSubUrl + "/" ,
HttpOnly : true ,
MaxAge : int ( maxAge ) ,
Secure : setting . CookieSecure ,
}
if sameSitePolicy != http . SameSiteDefaultMode {
expectedCookie . SameSite = sameSitePolicy
}
sc . fakeReq ( "GET" , "/" ) . exec ( )
sc . fakeReq ( "GET" , "/" ) . exec ( )
Convey ( "Should init context with user info" , func ( ) {
So ( sc . context . IsSignedIn , ShouldBeTrue )
So ( sc . context . UserId , ShouldEqual , 12 )
So ( sc . context . UserToken . UserId , ShouldEqual , 12 )
So ( sc . context . UserToken . UnhashedToken , ShouldEqual , "rotated" )
} )
Convey ( fmt . Sprintf ( "Should init context with user info and setting.SameSite=%v " , sameSitePolicy ) , func ( ) {
So ( sc . context . IsSignedIn , ShouldBeTrue )
So ( sc . context . UserId , ShouldEqual , 12 )
So ( sc . context . UserToken . UserId , ShouldEqual , 12 )
So ( sc . context . UserToken . UnhashedToken , ShouldEqual , "rotated" )
} )
Convey ( "Should set cookie" , func ( ) {
So ( sc . resp . Header ( ) . Get ( "Set-Cookie" ) , ShouldEqual , expectedCookie . String ( ) )
} )
Convey ( fmt . Sprintf ( "Should set cookie with setting.SameSite=%v" , sameSitePolicy ) , func ( ) {
So ( sc . resp . Header ( ) . Get ( "Set-Cookie" ) , ShouldEqual , expectedCookie . String ( ) )
} )
}
} )
middlewareScenario ( t , "Invalid/expired auth token in cookie" , func ( sc * scenarioContext ) {