Skip to content

Commit e550c27

Browse files
committed
Merge pull request #29 from dbalduini/auth-covariant
Make AuthInfo[+U] covariant
2 parents 1a98f76 + c43a668 commit e550c27

File tree

8 files changed

+31
-28
lines changed

8 files changed

+31
-28
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ case class AccessToken(token: String, refreshToken: Option[String], scope: Optio
2424
* @param scope Inform the client of the scope of the access token issued.
2525
* @param redirectUri This value is used by Authorization Code Grant.
2626
*/
27-
case class AuthInfo[U](user: U, clientId: String, scope: Option[String], redirectUri: Option[String])
27+
case class AuthInfo[+U](user: U, clientId: String, scope: Option[String], redirectUri: Option[String])
2828

2929
/**
3030
* Provide accessing to data storage for using OAuth 2.0.

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ class AuthorizationCodeSpec extends FlatSpec with ScalaFutures {
1515
val request = AuthorizationRequest(Map(), Map("code" -> Seq("code1"), "redirect_uri" -> Seq("http://example.com/")))
1616
val f = authorizationCode.handleRequest(request, new MockDataHandler() {
1717

18-
override def findAuthInfoByCode(code: String): Future[Option[AuthInfo[MockUser]]] = Future.successful(Some(
18+
override def findAuthInfoByCode(code: String): Future[Option[AuthInfo[User]]] = Future.successful(Some(
1919
AuthInfo(user = MockUser(10000, "username"), clientId = "clientId1", scope = Some("all"), redirectUri = Some("http://example.com/"))
2020
))
2121

22-
override def createAccessToken(authInfo: AuthInfo[MockUser]): Future[AccessToken] = Future.successful(AccessToken("token1", Some("refreshToken1"), Some("all"), Some(3600), new java.util.Date()))
22+
override def createAccessToken(authInfo: AuthInfo[User]): Future[AccessToken] = Future.successful(AccessToken("token1", Some("refreshToken1"), Some("all"), Some(3600), new java.util.Date()))
2323
})
2424

2525
whenReady(f) { result =>
@@ -40,7 +40,7 @@ class AuthorizationCodeSpec extends FlatSpec with ScalaFutures {
4040
AuthInfo(user = MockUser(10000, "username"), clientId = "clientId1", scope = Some("all"), redirectUri = None)
4141
))
4242

43-
override def createAccessToken(authInfo: AuthInfo[MockUser]): Future[AccessToken] = Future.successful(AccessToken("token1", Some("refreshToken1"), Some("all"), Some(3600), new java.util.Date()))
43+
override def createAccessToken(authInfo: AuthInfo[User]): Future[AccessToken] = Future.successful(AccessToken("token1", Some("refreshToken1"), Some("all"), Some(3600), new java.util.Date()))
4444
})
4545

4646
whenReady(f) { result =>

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ class ClientCredentialsSpec extends FlatSpec with ScalaFutures {
1515
val request = AuthorizationRequest(Map(), Map("scope" -> Seq("all")))
1616
val f = clientCredentials.handleRequest(request, new MockDataHandler() {
1717

18-
override def findClientUser(clientId: String, clientSecret: String, scope: Option[String]): Future[Option[MockUser]] = Future.successful(Some(MockUser(10000, "username")))
18+
override def findClientUser(clientId: String, clientSecret: String, scope: Option[String]): Future[Option[User]] = Future.successful(Some(MockUser(10000, "username")))
1919

20-
override def createAccessToken(authInfo: AuthInfo[MockUser]): Future[AccessToken] = Future.successful(AccessToken("token1", None, Some("all"), Some(3600), new java.util.Date()))
20+
override def createAccessToken(authInfo: AuthInfo[User]): Future[AccessToken] = Future.successful(AccessToken("token1", None, Some("all"), Some(3600), new java.util.Date()))
2121
})
2222

2323
whenReady(f) { result =>

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

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,33 @@ import java.util.Date
44

55
import scala.concurrent.Future
66

7-
case class MockUser(id: Long, name: String)
7+
case class MockUser(id: Long, name: String) extends User
88

9-
class MockDataHandler extends DataHandler[MockUser] {
9+
class MockDataHandler extends DataHandler[User] {
1010

1111
def validateClient(clientId: String, clientSecret: String, grantType: String): Future[Boolean] = Future.successful(false)
1212

13-
def findUser(username: String, password: String): Future[Option[MockUser]] = Future.successful(None)
13+
def findUser(username: String, password: String): Future[Option[User]] = Future.successful(None)
1414

15-
def createAccessToken(authInfo: AuthInfo[MockUser]): Future[AccessToken] = Future.successful(AccessToken("", Some(""), Some(""), Some(0L), new Date()))
15+
def createAccessToken(authInfo: AuthInfo[User]): Future[AccessToken] = Future.successful(AccessToken("", Some(""), Some(""), Some(0L), new Date()))
1616

17-
def findAuthInfoByCode(code: String): Future[Option[AuthInfo[MockUser]]] = Future.successful(None)
17+
def findAuthInfoByCode(code: String): Future[Option[AuthInfo[User]]] = Future.successful(None)
1818

19-
def findAuthInfoByRefreshToken(refreshToken: String): Future[Option[AuthInfo[MockUser]]] = Future.successful(None)
19+
def findAuthInfoByRefreshToken(refreshToken: String): Future[Option[AuthInfo[User]]] = Future.successful(None)
2020

21-
def findClientUser(clientId: String, clientSecret: String, scope: Option[String]): Future[Option[MockUser]] = Future.successful(None)
21+
def findClientUser(clientId: String, clientSecret: String, scope: Option[String]): Future[Option[User]] = Future.successful(None)
2222

2323
def findAccessToken(token: String): Future[Option[AccessToken]] = Future.successful(None)
2424

25-
def findAuthInfoByAccessToken(accessToken: AccessToken): Future[Option[AuthInfo[MockUser]]] = Future.successful(None)
26-
27-
def getStoredAccessToken(authInfo: AuthInfo[MockUser]): Future[Option[AccessToken]] = Future.successful(None)
25+
def findAuthInfoByAccessToken(accessToken: AccessToken): Future[Option[AuthInfo[User]]] = Future.successful(None)
2826

29-
def refreshAccessToken(authInfo: AuthInfo[MockUser], refreshToken: String): Future[AccessToken] = Future.successful(AccessToken("", Some(""), Some(""), Some(0L), new Date()))
27+
def getStoredAccessToken(authInfo: AuthInfo[User]): Future[Option[AccessToken]] = Future.successful(None)
28+
29+
def refreshAccessToken(authInfo: AuthInfo[User], refreshToken: String): Future[AccessToken] = Future.successful(AccessToken("", Some(""), Some(""), Some(0L), new Date()))
3030

3131
}
32+
33+
trait User {
34+
def id: Long
35+
def name: String
36+
}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import org.scalatest._
44
import org.scalatest.Matchers._
55
import org.scalatest.concurrent.ScalaFutures
66

7-
import scala.concurrent.Await
8-
import scala.concurrent.duration._
97
import scala.concurrent.Future
108

119
class PasswordSpec extends FlatSpec with ScalaFutures {
@@ -15,9 +13,9 @@ class PasswordSpec extends FlatSpec with ScalaFutures {
1513
val request = AuthorizationRequest(Map(), Map("username" -> Seq("user"), "password" -> Seq("pass"), "scope" -> Seq("all")))
1614
val f = password.handleRequest(request, new MockDataHandler() {
1715

18-
override def findUser(username: String, password: String): Future[Option[MockUser]] = Future.successful(Some(MockUser(10000, "username")))
16+
override def findUser(username: String, password: String): Future[Option[User]] = Future.successful(Some(MockUser(10000, "username")))
1917

20-
override def createAccessToken(authInfo: AuthInfo[MockUser]): Future[AccessToken] = Future.successful(AccessToken("token1", Some("refreshToken1"), Some("all"), Some(3600), new java.util.Date()))
18+
override def createAccessToken(authInfo: AuthInfo[User]): Future[AccessToken] = Future.successful(AccessToken("token1", Some("refreshToken1"), Some("all"), Some(3600), new java.util.Date()))
2119

2220
})
2321

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class ProtectedResourceSpec extends FlatSpec with ScalaFutures {
1515

1616
override def findAccessToken(token: String): Future[Option[AccessToken]] = Future.successful(Some(AccessToken("token1", Some("refreshToken1"), Some("all"), Some(3600), new Date())))
1717

18-
override def findAuthInfoByAccessToken(accessToken: AccessToken): Future[Option[AuthInfo[MockUser]]] = Future.successful(Some(
18+
override def findAuthInfoByAccessToken(accessToken: AccessToken): Future[Option[AuthInfo[User]]] = Future.successful(Some(
1919
AuthInfo(user = MockUser(10000, "username"), clientId = "clientId1", scope = Some("all"), redirectUri = None)
2020
))
2121

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ class RefreshTokenSpec extends FlatSpec with ScalaFutures {
1515
val request = AuthorizationRequest(Map(), Map("refresh_token" -> Seq("refreshToken1")))
1616
val f = refreshToken.handleRequest(request, new MockDataHandler() {
1717

18-
override def findAuthInfoByRefreshToken(refreshToken: String): Future[Option[AuthInfo[MockUser]]] =
18+
override def findAuthInfoByRefreshToken(refreshToken: String): Future[Option[AuthInfo[User]]] =
1919
Future.successful(Some(AuthInfo(user = MockUser(10000, "username"), clientId = "clientId1", scope = None, redirectUri = None)))
2020

21-
override def refreshAccessToken(authInfo: AuthInfo[MockUser], refreshToken: String): Future[AccessToken] = Future.successful(AccessToken("token1", Some(refreshToken), None, Some(3600), new java.util.Date()))
21+
override def refreshAccessToken(authInfo: AuthInfo[User], refreshToken: String): Future[AccessToken] = Future.successful(AccessToken("token1", Some(refreshToken), None, Some(3600), new java.util.Date()))
2222

2323
})
2424

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ class TokenEndPointSpec extends FlatSpec with ScalaFutures {
1515

1616
override def validateClient(clientId: String, clientSecret: String, grantType: String): Future[Boolean] = Future.successful(true)
1717

18-
override def findUser(username: String, password: String): Future[Option[MockUser]] = Future.successful(Some(MockUser(10000, "username")))
18+
override def findUser(username: String, password: String): Future[Option[User]] = Future.successful(Some(MockUser(10000, "username")))
1919

20-
override def createAccessToken(authInfo: AuthInfo[MockUser]): Future[AccessToken] = Future.successful(AccessToken("token1", None, Some("all"), Some(3600), new Date()))
20+
override def createAccessToken(authInfo: AuthInfo[User]): Future[AccessToken] = Future.successful(AccessToken("token1", None, Some("all"), Some(3600), new Date()))
2121

2222
}
2323

@@ -127,9 +127,9 @@ class TokenEndPointSpec extends FlatSpec with ScalaFutures {
127127

128128
override def validateClient(clientId: String, clientSecret: String, grantType: String): Future[Boolean] = Future.successful(true)
129129

130-
override def findUser(username: String, password: String): Future[Option[MockUser]] = Future.successful(Some(MockUser(10000, "username")))
130+
override def findUser(username: String, password: String): Future[Option[User]] = Future.successful(Some(MockUser(10000, "username")))
131131

132-
override def createAccessToken(authInfo: AuthInfo[MockUser]): Future[AccessToken] = throw new Exception("Failure")
132+
override def createAccessToken(authInfo: AuthInfo[User]): Future[AccessToken] = throw new Exception("Failure")
133133

134134
}
135135

0 commit comments

Comments
 (0)