diff options
author | Zach Smith <zach@driver.xyz> | 2017-05-11 16:13:10 -0700 |
---|---|---|
committer | Zach Smith <zach@driver.xyz> | 2017-05-24 13:50:04 -0700 |
commit | 0e1d65445524b9819f701b67e11bebd03121964c (patch) | |
tree | 93d4a6f266e38433ae81c291a17783bcdc03979e /src/test/scala/xyz/driver | |
parent | 4f11172ee721f7af12f4ff39cfa96a698fc88342 (diff) | |
download | driver-core-0e1d65445524b9819f701b67e11bebd03121964c.tar.gz driver-core-0e1d65445524b9819f701b67e11bebd03121964c.tar.bz2 driver-core-0e1d65445524b9819f701b67e11bebd03121964c.zip |
Permissions token refactors
Diffstat (limited to 'src/test/scala/xyz/driver')
-rw-r--r-- | src/test/scala/xyz/driver/core/AuthTest.scala | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/test/scala/xyz/driver/core/AuthTest.scala b/src/test/scala/xyz/driver/core/AuthTest.scala index 9c86577..8de0e87 100644 --- a/src/test/scala/xyz/driver/core/AuthTest.scala +++ b/src/test/scala/xyz/driver/core/AuthTest.scala @@ -3,14 +3,14 @@ package xyz.driver.core import akka.http.scaladsl.model.headers.{HttpChallenges, RawHeader} import akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsRejected import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.{RequestContext => _, _} +import akka.http.scaladsl.server._ import akka.http.scaladsl.testkit.ScalatestRouteTest import org.scalatest.mock.MockitoSugar import org.scalatest.{FlatSpec, Matchers} import pdi.jwt.{Jwt, JwtAlgorithm} import xyz.driver.core.auth._ import xyz.driver.core.logging._ -import xyz.driver.core.rest.{AuthProvider, AuthorizedRequestContext, Authorization, RequestContext} +import xyz.driver.core.rest._ import scala.concurrent.Future import scalaz.OptionT @@ -33,19 +33,22 @@ class AuthTest extends FlatSpec with Matchers with MockitoSugar with ScalatestRo (keyPair.getPublic, keyPair.getPrivate) } - val authorization: Authorization[User] = new Authorization[User] { + val basicAuthorization: Authorization[User] = new Authorization[User] { override def userHasPermissions(permissions: Seq[Permission])( - implicit ctx: AuthorizedRequestContext[User]): OptionT[Future, - (Map[Permission, Boolean], PermissionsToken)] = { - val permissionsMap = permissions.map(p => p -> (p === TestRoleAllowedPermission)).toMap - val token = PermissionsToken("TODO") - OptionT.optionT(Future.successful(Option((permissionsMap, token)))) + implicit ctx: AuthorizedServiceRequestContext[User]): Future[AuthorizationResult] = { + val authorized = permissions.forall(_ === TestRoleAllowedPermission) + Future.successful(AuthorizationResult(authorized, ctx.permissionsToken)) } } - val authStatusService = new AuthProvider[User](authorization, publicKey, NoLogger) { - override def authenticatedUser(implicit ctx: RequestContext): OptionT[Future, User] = + val tokenIssuer = "users" + val tokenAuthorization = new CachedTokenAuthorization[User](publicKey, tokenIssuer) + + val authorization = new ChainedAuthorization[User](tokenAuthorization, basicAuthorization) + + val authStatusService = new AuthProvider[User](authorization, NoLogger) { + override def authenticatedUser(implicit ctx: ServiceRequestContext): OptionT[Future, User] = OptionT.optionT[Future] { if (ctx.contextHeaders.keySet.contains(AuthProvider.AuthenticationTokenHeader)) { Future.successful(Some(BasicUser(Id[User]("1"), Set(TestRole)))) @@ -109,7 +112,7 @@ class AuthTest extends FlatSpec with Matchers with MockitoSugar with ScalatestRo val claim = JsObject( Map( - "iss" -> JsString("users"), + "iss" -> JsString(tokenIssuer), "sub" -> JsString("1"), "permissions" -> JsObject(Map(TestRoleAllowedByTokenPermission.toString -> JsBoolean(true))) )).prettyPrint |