Skip to content

Commit 856c77b

Browse files
committed
allow zero expiration on access tokens
1 parent 20ac475 commit 856c77b

File tree

2 files changed

+42
-2
lines changed

2 files changed

+42
-2
lines changed

manage/manage_test.go

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ func TestManager(t *testing.T) {
4343
testManager(tgr, manager)
4444
})
4545

46-
Convey("Token zero expire refresh test", func() {
46+
Convey("zero expiration access token test", func() {
47+
testZeroAccessExpirationManager(tgr, manager)
48+
})
49+
50+
Convey("zero expiration refresh token test", func() {
4751
testZeroRefreshExpirationManager(tgr, manager)
4852
})
4953
})
@@ -113,6 +117,41 @@ func testManager(tgr *oauth2.TokenGenerateRequest, manager oauth2.Manager) {
113117
So(err, ShouldNotBeNil)
114118
}
115119

120+
func testZeroAccessExpirationManager(tgr *oauth2.TokenGenerateRequest, manager oauth2.Manager) {
121+
config := manage.Config{
122+
AccessTokenExp: 0, // Set explicitly as we're testing 0 (no) expiration
123+
IsGenerateRefresh: true,
124+
}
125+
m, ok := manager.(*manage.Manager)
126+
So(ok, ShouldBeTrue)
127+
m.SetAuthorizeCodeTokenCfg(&config)
128+
129+
cti, err := manager.GenerateAuthToken(oauth2.Code, tgr)
130+
So(err, ShouldBeNil)
131+
132+
code := cti.GetCode()
133+
So(code, ShouldNotBeEmpty)
134+
135+
atParams := &oauth2.TokenGenerateRequest{
136+
ClientID: tgr.ClientID,
137+
ClientSecret: "11",
138+
RedirectURI: tgr.RedirectURI,
139+
Code: code,
140+
}
141+
ati, err := manager.GenerateAccessToken(oauth2.AuthorizationCode, atParams)
142+
So(err, ShouldBeNil)
143+
144+
accessToken, refreshToken := ati.GetAccess(), ati.GetRefresh()
145+
So(accessToken, ShouldNotBeEmpty)
146+
So(refreshToken, ShouldNotBeEmpty)
147+
148+
tokenInfo, err := manager.LoadAccessToken(accessToken)
149+
So(err, ShouldBeNil)
150+
So(tokenInfo, ShouldNotBeNil)
151+
So(tokenInfo.GetAccess(), ShouldEqual, accessToken)
152+
So(tokenInfo.GetAccessExpiresIn(), ShouldEqual, 0)
153+
}
154+
116155
func testZeroRefreshExpirationManager(tgr *oauth2.TokenGenerateRequest, manager oauth2.Manager) {
117156
config := manage.Config{
118157
RefreshTokenExp: 0, // Set explicitly as we're testing 0 (no) expiration

manage/manager.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,8 @@ func (m *Manager) LoadAccessToken(access string) (info oauth2.TokenInfo, err err
468468
ti.GetRefreshCreateAt().Add(ti.GetRefreshExpiresIn()).Before(ct) {
469469
err = errors.ErrExpiredRefreshToken
470470
return
471-
} else if ti.GetAccessCreateAt().Add(ti.GetAccessExpiresIn()).Before(ct) {
471+
} else if ti.GetAccessExpiresIn() != 0 &&
472+
ti.GetAccessCreateAt().Add(ti.GetAccessExpiresIn()).Before(ct) {
472473
err = errors.ErrExpiredAccessToken
473474
return
474475
}

0 commit comments

Comments
 (0)