Skip to content

Commit f183a31

Browse files
committed
Merge pull request #72 from pmellati/FixedExpiresIn
Make "expires_in" represent seconds of validity since 'now'
2 parents 97140be + d19fc5b commit f183a31

File tree

6 files changed

+22
-17
lines changed

6 files changed

+22
-17
lines changed

scala-oauth2-core/src/main/scala/scalaoauth2/provider/DataHandler.scala

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,21 @@ trait DataHandler[U] extends AuthorizationHandler[U] with ProtectedResourceHandl
1313
* @param token Access token is used to authentication.
1414
* @param refreshToken Refresh token is used to re-issue access token.
1515
* @param scope Inform the client of the scope of the access token issued.
16-
* @param expiresIn Expiration date of access token. Unit is seconds.
16+
* @param lifeSeconds Life of the access token since its creation. In seconds.
1717
* @param createdAt Access token is created date.
1818
*/
19-
case class AccessToken(token: String, refreshToken: Option[String], scope: Option[String], expiresIn: Option[Long], createdAt: Date) {
19+
case class AccessToken(token: String, refreshToken: Option[String], scope: Option[String], lifeSeconds: Option[Long], createdAt: Date) {
20+
def isExpired: Boolean = expirationTimeInMilis.exists {expTime =>
21+
expTime <= System.currentTimeMillis
22+
}
2023

21-
def isExpired: Boolean = expiresIn.exists { expiresIn =>
22-
val now = System.currentTimeMillis()
23-
createdAt.getTime + expiresIn * 1000 <= now
24+
def expiresIn: Option[Long] = expirationTimeInMilis map {expTime =>
25+
(expTime - System.currentTimeMillis) / 1000
2426
}
2527

28+
private def expirationTimeInMilis: Option[Long] = lifeSeconds map {lifeSecs =>
29+
createdAt.getTime + lifeSecs * 1000
30+
}
2631
}
2732

2833
/**

scala-oauth2-core/src/test/scala/scalaoauth2/provider/AuthorizationCodeSpec.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import org.scalatest.concurrent.ScalaFutures
66

77
import scala.concurrent.Future
88

9-
class AuthorizationCodeSpec extends FlatSpec with ScalaFutures {
9+
class AuthorizationCodeSpec extends FlatSpec with ScalaFutures with OptionValues {
1010

1111
it should "handle request" in {
1212
val authorizationCode = new AuthorizationCode()
@@ -30,7 +30,7 @@ class AuthorizationCodeSpec extends FlatSpec with ScalaFutures {
3030
codeDeleted shouldBe true
3131
result.tokenType shouldBe "Bearer"
3232
result.accessToken shouldBe "token1"
33-
result.expiresIn shouldBe Some(3600)
33+
result.expiresIn.value should (be <= 3600L and be > 3595L)
3434
result.refreshToken shouldBe Some("refreshToken1")
3535
result.scope shouldBe Some("all")
3636
}
@@ -51,7 +51,7 @@ class AuthorizationCodeSpec extends FlatSpec with ScalaFutures {
5151
whenReady(f) { result =>
5252
result.tokenType shouldBe "Bearer"
5353
result.accessToken shouldBe "token1"
54-
result.expiresIn shouldBe Some(3600)
54+
result.expiresIn.value should (be <= 3600L and be > 2595L)
5555
result.refreshToken shouldBe Some("refreshToken1")
5656
result.scope shouldBe Some("all")
5757
}

scala-oauth2-core/src/test/scala/scalaoauth2/provider/ClientCredentialsSpec.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import org.scalatest.concurrent.ScalaFutures
66

77
import scala.concurrent.Future
88

9-
class ClientCredentialsSpec extends FlatSpec with ScalaFutures {
9+
class ClientCredentialsSpec extends FlatSpec with ScalaFutures with OptionValues {
1010

1111
it should "handle request" in {
1212
val clientCredentials = new ClientCredentials()
@@ -21,7 +21,7 @@ class ClientCredentialsSpec extends FlatSpec with ScalaFutures {
2121
whenReady(f) { result =>
2222
result.tokenType should be ("Bearer")
2323
result.accessToken should be ("token1")
24-
result.expiresIn should be (Some(3600))
24+
result.expiresIn.value should (be <= 3600L and be > 3595L)
2525
result.refreshToken should be (None)
2626
result.scope should be (Some("all"))
2727
}

scala-oauth2-core/src/test/scala/scalaoauth2/provider/ImplicitSpec.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import org.scalatest.concurrent.ScalaFutures
88

99
import scala.concurrent.Future
1010

11-
class ImplicitSpec extends FlatSpec with ScalaFutures {
11+
class ImplicitSpec extends FlatSpec with ScalaFutures with OptionValues {
1212

1313
val implicitGrant = new Implicit()
1414

@@ -31,7 +31,7 @@ class ImplicitSpec extends FlatSpec with ScalaFutures {
3131
whenReady(f) { result =>
3232
result.tokenType should be("Bearer")
3333
result.accessToken should be("token1")
34-
result.expiresIn should be(Some(3600))
34+
result.expiresIn.value should (be <= 3600L and be > 3595L)
3535
result.refreshToken should be(None)
3636
result.scope should be(Some("all"))
3737
}

scala-oauth2-core/src/test/scala/scalaoauth2/provider/PasswordSpec.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import org.scalatest.concurrent.ScalaFutures
66

77
import scala.concurrent.Future
88

9-
class PasswordSpec extends FlatSpec with ScalaFutures {
9+
class PasswordSpec extends FlatSpec with ScalaFutures with OptionValues {
1010

1111
val passwordClientCredReq = new Password()
1212
val passwordNoClientCredReq = new Password() {
@@ -29,7 +29,7 @@ class PasswordSpec extends FlatSpec with ScalaFutures {
2929
whenReady(f) { result =>
3030
result.tokenType should be("Bearer")
3131
result.accessToken should be("token1")
32-
result.expiresIn should be(Some(3600))
32+
result.expiresIn.value should (be <= 3600L and be > 3595L)
3333
result.refreshToken should be(Some("refreshToken1"))
3434
result.scope should be(Some("all"))
3535
}

scala-oauth2-core/src/test/scala/scalaoauth2/provider/RefreshTokenSpec.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package scalaoauth2.provider
22

3-
import org.scalatest.FlatSpec
3+
import org.scalatest.{FlatSpec, OptionValues}
44
import org.scalatest.Matchers._
55
import org.scalatest.concurrent.ScalaFutures
66

77
import scala.concurrent.Future
88

9-
class RefreshTokenSpec extends FlatSpec with ScalaFutures {
9+
class RefreshTokenSpec extends FlatSpec with ScalaFutures with OptionValues {
1010

1111
it should "handle request" in {
1212
val refreshToken = new RefreshToken()
@@ -23,7 +23,7 @@ class RefreshTokenSpec extends FlatSpec with ScalaFutures {
2323
whenReady(f) { result =>
2424
result.tokenType should be ("Bearer")
2525
result.accessToken should be ("token1")
26-
result.expiresIn should be (Some(3600))
26+
result.expiresIn.value should (be <= 3600L and be > 3595L)
2727
result.refreshToken should be (Some("refreshToken1"))
2828
result.scope should be (None)
2929
}

0 commit comments

Comments
 (0)