diff options
author | vlad <vlad@drivergrp.com> | 2016-10-21 16:07:05 -0400 |
---|---|---|
committer | vlad <vlad@drivergrp.com> | 2016-10-21 16:07:05 -0400 |
commit | 02810f5eac3b4ce6a5d1128281a01b2a2ed0647c (patch) | |
tree | a733b421759216a7f12d227d2f912eecdfa842aa /src | |
parent | 7c77f5ff23e4b0f8d5e189492bc4f25f847adc00 (diff) | |
download | driver-core-02810f5eac3b4ce6a5d1128281a01b2a2ed0647c.tar.gz driver-core-02810f5eac3b4ce6a5d1128281a01b2a2ed0647c.tar.bz2 driver-core-02810f5eac3b4ce6a5d1128281a01b2a2ed0647c.zip |
Renamed package to xyz, New formatting, authorize directive supporting multiple permissions
Diffstat (limited to 'src')
-rw-r--r-- | src/main/scala/xyz/driver/core/app.scala (renamed from src/main/scala/com/drivergrp/core/app.scala) | 74 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/auth.scala (renamed from src/main/scala/com/drivergrp/core/auth.scala) | 18 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/config.scala (renamed from src/main/scala/com/drivergrp/core/config.scala) | 2 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/core.scala (renamed from src/main/scala/com/drivergrp/core/core.scala) | 2 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/crypto.scala (renamed from src/main/scala/com/drivergrp/core/crypto.scala) | 4 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/database.scala (renamed from src/main/scala/com/drivergrp/core/database.scala) | 4 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/file.scala (renamed from src/main/scala/com/drivergrp/core/file.scala) | 16 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/generators.scala (renamed from src/main/scala/com/drivergrp/core/generators.scala) | 6 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/json.scala (renamed from src/main/scala/com/drivergrp/core/json.scala) | 7 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/logging.scala (renamed from src/main/scala/com/drivergrp/core/logging.scala) | 4 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/messages.scala (renamed from src/main/scala/com/drivergrp/core/messages.scala) | 4 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/rest.scala (renamed from src/main/scala/com/drivergrp/core/rest.scala) | 14 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/stats.scala (renamed from src/main/scala/com/drivergrp/core/stats.scala) | 6 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/time.scala (renamed from src/main/scala/com/drivergrp/core/time.scala) | 2 | ||||
-rw-r--r-- | src/test/scala/xyz/driver/core/AuthTest.scala (renamed from src/test/scala/com/drivergrp/core/AuthTest.scala) | 60 | ||||
-rw-r--r-- | src/test/scala/xyz/driver/core/CoreTest.scala (renamed from src/test/scala/com/drivergrp/core/CoreTest.scala) | 6 | ||||
-rw-r--r-- | src/test/scala/xyz/driver/core/FileTest.scala (renamed from src/test/scala/com/drivergrp/core/FileTest.scala) | 14 | ||||
-rw-r--r-- | src/test/scala/xyz/driver/core/GeneratorsTest.scala (renamed from src/test/scala/com/drivergrp/core/GeneratorsTest.scala) | 6 | ||||
-rw-r--r-- | src/test/scala/xyz/driver/core/JsonTest.scala (renamed from src/test/scala/com/drivergrp/core/JsonTest.scala) | 24 | ||||
-rw-r--r-- | src/test/scala/xyz/driver/core/MessagesTest.scala (renamed from src/test/scala/com/drivergrp/core/MessagesTest.scala) | 20 | ||||
-rw-r--r-- | src/test/scala/xyz/driver/core/StatsTest.scala (renamed from src/test/scala/com/drivergrp/core/StatsTest.scala) | 10 | ||||
-rw-r--r-- | src/test/scala/xyz/driver/core/TimeTest.scala (renamed from src/test/scala/com/drivergrp/core/TimeTest.scala) | 12 |
22 files changed, 159 insertions, 156 deletions
diff --git a/src/main/scala/com/drivergrp/core/app.scala b/src/main/scala/xyz/driver/core/app.scala index f6100f0..e080e1b 100644 --- a/src/main/scala/com/drivergrp/core/app.scala +++ b/src/main/scala/xyz/driver/core/app.scala @@ -1,4 +1,4 @@ -package com.drivergrp.core +package xyz.driver.core import akka.actor.ActorSystem import akka.http.scaladsl.Http @@ -9,14 +9,15 @@ import akka.http.scaladsl.server.Directives._ import akka.http.scaladsl.server.RouteResult._ import akka.http.scaladsl.server.{ExceptionHandler, Route, RouteConcatenation} import akka.stream.ActorMaterializer -import com.drivergrp.core.logging.{Logger, TypesafeScalaLogger} -import com.drivergrp.core.rest.Swagger -import com.drivergrp.core.stats.SystemStats -import com.drivergrp.core.time.Time -import com.drivergrp.core.time.provider.{SystemTimeProvider, TimeProvider} import com.typesafe.config.Config import org.slf4j.LoggerFactory import spray.json.DefaultJsonProtocol +import xyz.driver.core +import xyz.driver.core.logging.{Logger, TypesafeScalaLogger} +import xyz.driver.core.rest.Swagger +import xyz.driver.core.stats.SystemStats +import xyz.driver.core.time.Time +import xyz.driver.core.time.provider.{SystemTimeProvider, TimeProvider} import scala.compat.Platform.ConcurrentModificationException import scala.concurrent.duration._ @@ -29,8 +30,8 @@ object app { modules: Seq[Module], time: TimeProvider = new SystemTimeProvider(), log: Logger = new TypesafeScalaLogger( - com.typesafe.scalalogging.Logger(LoggerFactory.getLogger(classOf[DriverApp]))), - config: Config = com.drivergrp.core.config.loadDefaultConfig, + com.typesafe.scalalogging.Logger(LoggerFactory.getLogger(classOf[DriverApp]))), + config: Config = core.config.loadDefaultConfig, interface: String = "::0", baseUrl: String = "localhost:8080", port: Int = 8080) { @@ -71,8 +72,8 @@ object app { log.debug(s"Request is not allowed to $uri ($requestUuid)", is) complete( - HttpResponse(BadRequest, - entity = s"""{ "requestUuid": "$requestUuid", "message": "${is.getMessage}" }""")) + HttpResponse(BadRequest, + entity = s"""{ "requestUuid": "$requestUuid", "message": "${is.getMessage}" }""")) } case cm: ConcurrentModificationException => @@ -82,8 +83,7 @@ object app { log.debug(s"Concurrent modification of the resource $uri ($requestUuid)", cm) complete( - HttpResponse(Conflict, - entity = s"""{ "requestUuid": "$requestUuid", "message": "${cm.getMessage}" }""")) + HttpResponse(Conflict, entity = s"""{ "requestUuid": "$requestUuid", "message": "${cm.getMessage}" }""")) } case t: Throwable => @@ -93,8 +93,8 @@ object app { log.error(s"Request to $uri could not be handled normally ($requestUuid)", t) complete( - HttpResponse(InternalServerError, - entity = s"""{ "requestUuid": "$requestUuid", "message": "${t.getMessage}" }""")) + HttpResponse(InternalServerError, + entity = s"""{ "requestUuid": "$requestUuid", "message": "${t.getMessage}" }""")) } } @@ -112,14 +112,14 @@ object app { path("version") { val currentTime = time.currentTime().millis complete( - Map( - "version" -> version, - "gitHash" -> gitHash, - "modules" -> modules.map(_.name).mkString(", "), - "startupTime" -> startupTime.millis.toString, - "serverTime" -> currentTime.toString, - "uptime" -> (currentTime - startupTime.millis).toString - )) + Map( + "version" -> version, + "gitHash" -> gitHash, + "modules" -> modules.map(_.name).mkString(", "), + "startupTime" -> startupTime.millis.toString, + "serverTime" -> currentTime.toString, + "uptime" -> (currentTime - startupTime.millis).toString + )) } } @@ -133,25 +133,25 @@ object app { path("health") { complete( - Map( - "availableProcessors" -> SystemStats.availableProcessors.toJson, - "memoryUsage" -> Map( - "free" -> memoryUsage.free.toJson, - "total" -> memoryUsage.total.toJson, - "max" -> memoryUsage.max.toJson - ).toJson, - "gcStats" -> Map( - "garbageCollectionTime" -> gcStats.garbageCollectionTime.toJson, - "totalGarbageCollections" -> gcStats.totalGarbageCollections.toJson - ).toJson, - "fileSystemSpace" -> SystemStats.fileSystemSpace.map { f => + Map( + "availableProcessors" -> SystemStats.availableProcessors.toJson, + "memoryUsage" -> Map( + "free" -> memoryUsage.free.toJson, + "total" -> memoryUsage.total.toJson, + "max" -> memoryUsage.max.toJson + ).toJson, + "gcStats" -> Map( + "garbageCollectionTime" -> gcStats.garbageCollectionTime.toJson, + "totalGarbageCollections" -> gcStats.totalGarbageCollections.toJson + ).toJson, + "fileSystemSpace" -> SystemStats.fileSystemSpace.map { f => Map("path" -> f.path.toJson, "freeSpace" -> f.freeSpace.toJson, "totalSpace" -> f.totalSpace.toJson, "usableSpace" -> f.usableSpace.toJson) }.toJson, - "operatingSystem" -> SystemStats.operatingSystemStats.toJson - )) + "operatingSystem" -> SystemStats.operatingSystemStats.toJson + )) } } @@ -206,7 +206,7 @@ object app { } class EmptyModule extends Module { - val name = "Nothing" + val name = "Nothing" def route: Route = complete(StatusCodes.OK) def routeTypes = Seq.empty[Type] } diff --git a/src/main/scala/com/drivergrp/core/auth.scala b/src/main/scala/xyz/driver/core/auth.scala index e857ef0..874f1e1 100644 --- a/src/main/scala/com/drivergrp/core/auth.scala +++ b/src/main/scala/xyz/driver/core/auth.scala @@ -1,4 +1,4 @@ -package com.drivergrp.core +package xyz.driver.core import akka.http.scaladsl.model.headers.HttpChallenges import akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsRejected @@ -87,21 +87,22 @@ object auth { protected def authStatus(authToken: AuthToken): OptionT[Future, U] - def authorize(permission: Permission): Directive1[(AuthToken, U)] = { + def authorize(permissions: Permission*): Directive1[(AuthToken, U)] = { parameters('authToken.?).flatMap { parameterTokenValue => optionalHeaderValueByName(AuthService.AuthenticationTokenHeader).flatMap { headerTokenValue => - verifyAuthToken(headerTokenValue.orElse(parameterTokenValue), permission) + verifyAuthToken(headerTokenValue.orElse(parameterTokenValue), permissions.toSet) } } } - private def verifyAuthToken(tokenOption: Option[String], permission: Permission): Directive1[(AuthToken, U)] = + private def verifyAuthToken(tokenOption: Option[String], + permissions: Set[Permission]): Directive1[(AuthToken, U)] = tokenOption match { case Some(tokenValue) => val token = AuthToken(Base64[Macaroon](tokenValue)) onComplete(authStatus(token).run).flatMap { tokenUserResult => - checkPermissions(tokenUserResult, permission, token) + checkPermissions(tokenUserResult, permissions, token) } case None => @@ -109,13 +110,14 @@ object auth { } private def checkPermissions(userResult: Try[Option[U]], - permission: Permission, + permissions: Set[Permission], token: AuthToken): Directive1[(AuthToken, U)] = { userResult match { case Success(Some(user)) => - if (user.roles.exists(_.hasPermission(permission))) provide(token -> user) + if (permissions.forall(user.permissions.contains)) provide(token -> user) else { - val challenge = HttpChallenges.basic(s"User does not have the required permission $permission") + val challenge = + HttpChallenges.basic(s"User does not have the required permissions: ${permissions.mkString(", ")}") reject(AuthenticationFailedRejection(CredentialsRejected, challenge)) } diff --git a/src/main/scala/com/drivergrp/core/config.scala b/src/main/scala/xyz/driver/core/config.scala index 29cd9ed..112986e 100644 --- a/src/main/scala/com/drivergrp/core/config.scala +++ b/src/main/scala/xyz/driver/core/config.scala @@ -1,4 +1,4 @@ -package com.drivergrp.core +package xyz.driver.core import java.io.File import com.typesafe.config.{Config, ConfigFactory} diff --git a/src/main/scala/com/drivergrp/core/core.scala b/src/main/scala/xyz/driver/core/core.scala index 158447f..b7fbeb6 100644 --- a/src/main/scala/com/drivergrp/core/core.scala +++ b/src/main/scala/xyz/driver/core/core.scala @@ -1,4 +1,4 @@ -package com.drivergrp +package xyz.driver import scalaz.Equal diff --git a/src/main/scala/com/drivergrp/core/crypto.scala b/src/main/scala/xyz/driver/core/crypto.scala index 5f63eb9..d001e0f 100644 --- a/src/main/scala/com/drivergrp/core/crypto.scala +++ b/src/main/scala/xyz/driver/core/crypto.scala @@ -1,6 +1,6 @@ -package com.drivergrp.core +package xyz.driver.core -import com.drivergrp.core.auth.AuthToken +import xyz.driver.core.auth.AuthToken object crypto { diff --git a/src/main/scala/com/drivergrp/core/database.scala b/src/main/scala/xyz/driver/core/database.scala index 581c5de..1039be4 100644 --- a/src/main/scala/com/drivergrp/core/database.scala +++ b/src/main/scala/xyz/driver/core/database.scala @@ -1,6 +1,6 @@ -package com.drivergrp.core +package xyz.driver.core -import com.drivergrp.core.time.Time +import xyz.driver.core.time.Time import scala.concurrent.Future import slick.backend.DatabaseConfig diff --git a/src/main/scala/com/drivergrp/core/file.scala b/src/main/scala/xyz/driver/core/file.scala index 20bd36e..93715d0 100644 --- a/src/main/scala/com/drivergrp/core/file.scala +++ b/src/main/scala/xyz/driver/core/file.scala @@ -1,4 +1,4 @@ -package com.drivergrp.core +package xyz.driver.core import java.io.File import java.nio.file.{Path, Paths} @@ -6,8 +6,8 @@ import java.util.UUID._ import com.amazonaws.services.s3.AmazonS3 import com.amazonaws.services.s3.model.{Bucket, GetObjectRequest, ListObjectsV2Request} -import com.drivergrp.core.revision.Revision -import com.drivergrp.core.time.Time +import xyz.driver.core.revision.Revision +import xyz.driver.core.time.Time import scala.concurrent.{ExecutionContext, Future} import scalaz.{ListT, OptionT} @@ -15,10 +15,10 @@ import scalaz.{ListT, OptionT} object file { final case class FileLink( - name: Name[File], - location: Path, - revision: Revision[File], - lastModificationDate: Time + name: Name[File], + location: Path, + revision: Revision[File], + lastModificationDate: Time ) trait FileService { @@ -114,7 +114,7 @@ object file { if (localSource.renameTo(destinationFile)) () else { throw new Exception( - s"Failed to move file from `${localSource.getCanonicalPath}` to `${destinationFile.getCanonicalPath}`") + s"Failed to move file from `${localSource.getCanonicalPath}` to `${destinationFile.getCanonicalPath}`") } } else { throw new Exception(s"Failed to create parent directories for file `${destinationFile.getCanonicalPath}`") diff --git a/src/main/scala/com/drivergrp/core/generators.scala b/src/main/scala/xyz/driver/core/generators.scala index 10df7db..bb026a9 100644 --- a/src/main/scala/com/drivergrp/core/generators.scala +++ b/src/main/scala/xyz/driver/core/generators.scala @@ -1,9 +1,9 @@ -package com.drivergrp.core +package xyz.driver.core import java.math.MathContext -import com.drivergrp.core.revision.Revision -import com.drivergrp.core.time.{Time, TimeRange} +import xyz.driver.core.revision.Revision +import xyz.driver.core.time.{Time, TimeRange} import scala.reflect.ClassTag import scala.util.Random diff --git a/src/main/scala/com/drivergrp/core/json.scala b/src/main/scala/xyz/driver/core/json.scala index 9a30161..51679c3 100644 --- a/src/main/scala/com/drivergrp/core/json.scala +++ b/src/main/scala/xyz/driver/core/json.scala @@ -1,12 +1,13 @@ -package com.drivergrp.core +package xyz.driver.core import akka.http.scaladsl.model.Uri.Path import akka.http.scaladsl.server.PathMatcher.Matched import akka.http.scaladsl.server.{PathMatcher, _} import akka.http.scaladsl.unmarshalling.Unmarshaller -import com.drivergrp.core.revision.Revision -import com.drivergrp.core.time.Time +import xyz.driver.core.revision.Revision +import xyz.driver.core.time.Time import spray.json.{DeserializationException, JsNumber, _} +import xyz.driver.core.time.Time import scala.reflect.runtime.universe._ diff --git a/src/main/scala/com/drivergrp/core/logging.scala b/src/main/scala/xyz/driver/core/logging.scala index 2c8c670..599c824 100644 --- a/src/main/scala/com/drivergrp/core/logging.scala +++ b/src/main/scala/xyz/driver/core/logging.scala @@ -1,4 +1,4 @@ -package com.drivergrp.core +package xyz.driver.core import java.text.SimpleDateFormat import java.util.Date @@ -168,7 +168,7 @@ object logging { private def logContext(message: StringBuilder, loggingEvent: ILoggingEvent) = { Option(loggingEvent.getMDCPropertyMap).map(_.asScala).filter(_.nonEmpty).foreach { context => message.append( - context map { case (key, value) => s"$key$FieldSeparator$value" } mkString ("Context: ", " ", newline) + context map { case (key, value) => s"$key$FieldSeparator$value" } mkString ("Context: ", " ", newline) ) } } diff --git a/src/main/scala/com/drivergrp/core/messages.scala b/src/main/scala/xyz/driver/core/messages.scala index 3a97401..94d9889 100644 --- a/src/main/scala/com/drivergrp/core/messages.scala +++ b/src/main/scala/xyz/driver/core/messages.scala @@ -1,9 +1,9 @@ -package com.drivergrp.core +package xyz.driver.core import java.util.Locale -import com.drivergrp.core.logging.Logger import com.typesafe.config.Config +import xyz.driver.core.logging.Logger import scala.collection.JavaConverters._ diff --git a/src/main/scala/com/drivergrp/core/rest.scala b/src/main/scala/xyz/driver/core/rest.scala index d97e13e..c615d99 100644 --- a/src/main/scala/com/drivergrp/core/rest.scala +++ b/src/main/scala/xyz/driver/core/rest.scala @@ -1,4 +1,4 @@ -package com.drivergrp.core +package xyz.driver.core import akka.actor.ActorSystem import akka.http.scaladsl.Http @@ -8,15 +8,15 @@ import akka.http.scaladsl.unmarshalling.Unmarshal import akka.stream.ActorMaterializer import akka.stream.scaladsl.Flow import akka.util.ByteString -import com.drivergrp.core.auth.{AuthService, AuthToken} -import com.drivergrp.core.crypto.Crypto -import com.drivergrp.core.logging.Logger -import com.drivergrp.core.stats.Stats -import com.drivergrp.core.time.TimeRange -import com.drivergrp.core.time.provider.TimeProvider import com.github.swagger.akka.model._ import com.github.swagger.akka.{HasActorSystem, SwaggerHttpService} import com.typesafe.config.Config +import xyz.driver.core.auth.{AuthService, AuthToken} +import xyz.driver.core.crypto.Crypto +import xyz.driver.core.logging.Logger +import xyz.driver.core.stats.Stats +import xyz.driver.core.time.TimeRange +import xyz.driver.core.time.provider.TimeProvider import scala.concurrent.{ExecutionContext, Future} import scala.util.{Failure, Success} diff --git a/src/main/scala/com/drivergrp/core/stats.scala b/src/main/scala/xyz/driver/core/stats.scala index 2af4b6a..5759012 100644 --- a/src/main/scala/com/drivergrp/core/stats.scala +++ b/src/main/scala/xyz/driver/core/stats.scala @@ -1,11 +1,11 @@ -package com.drivergrp.core +package xyz.driver.core import java.io.File import java.lang.management.ManagementFactory import java.lang.reflect.Modifier -import com.drivergrp.core.logging.Logger -import com.drivergrp.core.time.{Time, TimeRange} +import xyz.driver.core.logging.Logger +import xyz.driver.core.time.{Time, TimeRange} object stats { diff --git a/src/main/scala/com/drivergrp/core/time.scala b/src/main/scala/xyz/driver/core/time.scala index 9bafb00..625d6a2 100644 --- a/src/main/scala/com/drivergrp/core/time.scala +++ b/src/main/scala/xyz/driver/core/time.scala @@ -1,4 +1,4 @@ -package com.drivergrp.core +package xyz.driver.core import java.text.SimpleDateFormat import java.util._ diff --git a/src/test/scala/com/drivergrp/core/AuthTest.scala b/src/test/scala/xyz/driver/core/AuthTest.scala index 42f9155..fef3eda 100644 --- a/src/test/scala/com/drivergrp/core/AuthTest.scala +++ b/src/test/scala/xyz/driver/core/AuthTest.scala @@ -1,6 +1,5 @@ -package com.drivergrp.core +package xyz.driver.core -import com.drivergrp.core.auth._ import akka.http.scaladsl.testkit.ScalatestRouteTest import akka.http.scaladsl.server._ import Directives._ @@ -8,6 +7,7 @@ import akka.http.scaladsl.model.headers.{HttpChallenges, RawHeader} import akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsRejected import org.scalatest.mock.MockitoSugar import org.scalatest.{FlatSpec, Matchers} +import xyz.driver.core.auth._ import scala.concurrent.Future import scalaz.OptionT @@ -28,14 +28,14 @@ class AuthTest extends FlatSpec with Matchers with MockitoSugar with ScalatestRo "'authorize' directive" should "throw error is auth token is not in the request" in { Get("/naive/attempt") ~> - authorize(CanSignOutReport) { - case (authToken, user) => - complete("Never going to be here") - } ~> - check { - handled shouldBe false - rejections should contain(MissingHeaderRejection("WWW-Authenticate")) - } + authorize(CanSignOutReport) { + case (authToken, user) => + complete("Never going to be here") + } ~> + check { + handled shouldBe false + rejections should contain(MissingHeaderRejection("WWW-Authenticate")) + } } it should "throw error is authorized user is not having the requested permission" in { @@ -43,19 +43,19 @@ class AuthTest extends FlatSpec with Matchers with MockitoSugar with ScalatestRo val referenceAuthToken = AuthToken(Base64("I am a pathologist's token")) Post("/administration/attempt").addHeader( - RawHeader(AuthService.AuthenticationTokenHeader, referenceAuthToken.value.value) + RawHeader(AuthService.AuthenticationTokenHeader, referenceAuthToken.value.value) ) ~> - authorize(CanAssignRoles) { - case (authToken, user) => - complete("Never going to get here") - } ~> - check { - handled shouldBe false - rejections should contain( + authorize(CanAssignRoles) { + case (authToken, user) => + complete("Never going to get here") + } ~> + check { + handled shouldBe false + rejections should contain( AuthenticationFailedRejection( - CredentialsRejected, - HttpChallenges.basic("User does not have the required permission CanAssignRoles"))) - } + CredentialsRejected, + HttpChallenges.basic("User does not have the required permissions: CanAssignRoles"))) + } } it should "pass and retrieve the token to client code, if token is in request and user has permission" in { @@ -63,15 +63,15 @@ class AuthTest extends FlatSpec with Matchers with MockitoSugar with ScalatestRo val referenceAuthToken = AuthToken(Base64("I am token")) Get("/valid/attempt/?a=2&b=5").addHeader( - RawHeader(AuthService.AuthenticationTokenHeader, referenceAuthToken.value.value) + RawHeader(AuthService.AuthenticationTokenHeader, referenceAuthToken.value.value) ) ~> - authorize(CanSignOutReport) { - case (authToken, user) => - complete("Alright, \"" + authToken.value.value + "\" is handled") - } ~> - check { - handled shouldBe true - responseAs[String] shouldBe "Alright, \"I am token\" is handled" - } + authorize(CanSignOutReport) { + case (authToken, user) => + complete("Alright, \"" + authToken.value.value + "\" is handled") + } ~> + check { + handled shouldBe true + responseAs[String] shouldBe "Alright, \"I am token\" is handled" + } } } diff --git a/src/test/scala/com/drivergrp/core/CoreTest.scala b/src/test/scala/xyz/driver/core/CoreTest.scala index 19e685c..f9a1aab 100644 --- a/src/test/scala/com/drivergrp/core/CoreTest.scala +++ b/src/test/scala/xyz/driver/core/CoreTest.scala @@ -1,11 +1,11 @@ -package com.drivergrp.core +package xyz.driver.core import java.io.ByteArrayOutputStream -import com.drivergrp.core.revision.Revision +import org.mockito.Mockito._ import org.scalatest.mock.MockitoSugar import org.scalatest.{FlatSpec, Matchers} -import org.mockito.Mockito._ +import xyz.driver.core.revision.Revision class CoreTest extends FlatSpec with Matchers with MockitoSugar { diff --git a/src/test/scala/com/drivergrp/core/FileTest.scala b/src/test/scala/xyz/driver/core/FileTest.scala index 2c9c2c9..aba79f7 100644 --- a/src/test/scala/com/drivergrp/core/FileTest.scala +++ b/src/test/scala/xyz/driver/core/FileTest.scala @@ -1,15 +1,15 @@ -package com.drivergrp.core +package xyz.driver.core import java.io.File import java.nio.file.Paths import com.amazonaws.services.s3.AmazonS3 import com.amazonaws.services.s3.model._ -import com.drivergrp.core.file.{FileSystemStorage, S3Storage} +import org.mockito.Matchers._ +import org.mockito.Mockito._ import org.scalatest.mock.MockitoSugar import org.scalatest.{FlatSpec, Matchers} -import org.mockito.Mockito._ -import org.mockito.Matchers._ +import xyz.driver.core.file.{FileSystemStorage, S3Storage} import scala.concurrent.Await import scala.concurrent.duration._ @@ -44,9 +44,9 @@ class FileTest extends FlatSpec with Matchers with MockitoSugar { false, // after file is uploaded it contains this one file (one page) false) // after file is deleted it is empty (zero pages) again when(s3ResultsMock.getObjectSummaries).thenReturn( - // before file created it is empty, `getObjectSummaries` is never called - List[S3ObjectSummary](s3ObjectSummaryMock).asJava, // after file is uploaded it contains this one file - List.empty[S3ObjectSummary].asJava) // after file is deleted it is empty again + // before file created it is empty, `getObjectSummaries` is never called + List[S3ObjectSummary](s3ObjectSummaryMock).asJava, // after file is uploaded it contains this one file + List.empty[S3ObjectSummary].asJava) // after file is deleted it is empty again val s3ObjectMetadataMock = mock[ObjectMetadata] val amazonS3Mock = mock[AmazonS3] diff --git a/src/test/scala/com/drivergrp/core/GeneratorsTest.scala b/src/test/scala/xyz/driver/core/GeneratorsTest.scala index 631149e..0432b2a 100644 --- a/src/test/scala/com/drivergrp/core/GeneratorsTest.scala +++ b/src/test/scala/xyz/driver/core/GeneratorsTest.scala @@ -1,4 +1,4 @@ -package com.drivergrp.core +package xyz.driver.core import org.scalatest.{Assertions, FlatSpec, Matchers} @@ -86,7 +86,7 @@ class GeneratorsTest extends FlatSpec with Matchers with Assertions { generatedPair._2.length should be > 0 nextPair(nextId[Int](), nextName[Int]()) should not be - nextPair(nextId[Int](), nextName[Int]()) + nextPair(nextId[Int](), nextName[Int]()) } it should "be able to generate a triad of two generated values" in { @@ -103,7 +103,7 @@ class GeneratorsTest extends FlatSpec with Matchers with Assertions { generatedTriad._3 should be >= BigDecimal(0.00) nextTriad(nextId[Int](), nextName[Int](), nextBigDecimal()) should not be - nextTriad(nextId[Int](), nextName[Int](), nextBigDecimal()) + nextTriad(nextId[Int](), nextName[Int](), nextBigDecimal()) } it should "be able to generate a time value" in { diff --git a/src/test/scala/com/drivergrp/core/JsonTest.scala b/src/test/scala/xyz/driver/core/JsonTest.scala index 125e97c..bcdcd5d 100644 --- a/src/test/scala/com/drivergrp/core/JsonTest.scala +++ b/src/test/scala/xyz/driver/core/JsonTest.scala @@ -1,9 +1,9 @@ -package com.drivergrp.core +package xyz.driver.core -import com.drivergrp.core.json.{EnumJsonFormat, ValueClassFormat} -import com.drivergrp.core.revision.Revision -import com.drivergrp.core.time.provider.SystemTimeProvider import org.scalatest.{FlatSpec, Matchers} +import xyz.driver.core.json.{EnumJsonFormat, ValueClassFormat} +import xyz.driver.core.revision.Revision +import xyz.driver.core.time.provider.SystemTimeProvider class JsonTest extends FlatSpec with Matchers { @@ -11,10 +11,10 @@ class JsonTest extends FlatSpec with Matchers { val referenceId = Id[String](1312L) - val writtenJson = com.drivergrp.core.json.idFormat.write(referenceId) + val writtenJson = json.idFormat.write(referenceId) writtenJson.prettyPrint should be("1312") - val parsedId = com.drivergrp.core.json.idFormat.read(writtenJson) + val parsedId = json.idFormat.read(writtenJson) parsedId should be(referenceId) } @@ -22,10 +22,10 @@ class JsonTest extends FlatSpec with Matchers { val referenceName = Name[String]("Homer") - val writtenJson = com.drivergrp.core.json.nameFormat.write(referenceName) + val writtenJson = json.nameFormat.write(referenceName) writtenJson.prettyPrint should be("\"Homer\"") - val parsedName = com.drivergrp.core.json.nameFormat.read(writtenJson) + val parsedName = json.nameFormat.read(writtenJson) parsedName should be(referenceName) } @@ -33,10 +33,10 @@ class JsonTest extends FlatSpec with Matchers { val referenceTime = new SystemTimeProvider().currentTime() - val writtenJson = com.drivergrp.core.json.timeFormat.write(referenceTime) + val writtenJson = json.timeFormat.write(referenceTime) writtenJson.prettyPrint should be("{\n \"timestamp\": " + referenceTime.millis + "\n}") - val parsedTime = com.drivergrp.core.json.timeFormat.read(writtenJson) + val parsedTime = json.timeFormat.read(writtenJson) parsedTime should be(referenceTime) } @@ -44,10 +44,10 @@ class JsonTest extends FlatSpec with Matchers { val referenceRevision = Revision[String]("037e2ec0-8901-44ac-8e53-6d39f6479db4") - val writtenJson = com.drivergrp.core.json.revisionFormat.write(referenceRevision) + val writtenJson = json.revisionFormat.write(referenceRevision) writtenJson.prettyPrint should be("\"" + referenceRevision.id + "\"") - val parsedRevision = com.drivergrp.core.json.revisionFormat.read(writtenJson) + val parsedRevision = json.revisionFormat.read(writtenJson) parsedRevision should be(referenceRevision) } diff --git a/src/test/scala/com/drivergrp/core/MessagesTest.scala b/src/test/scala/xyz/driver/core/MessagesTest.scala index 21fe30a..dc44ee1 100644 --- a/src/test/scala/com/drivergrp/core/MessagesTest.scala +++ b/src/test/scala/xyz/driver/core/MessagesTest.scala @@ -1,13 +1,13 @@ -package com.drivergrp.core +package xyz.driver.core import java.util.Locale -import com.drivergrp.core.logging.Logger -import com.drivergrp.core.messages.Messages import com.typesafe.config.{ConfigException, ConfigFactory} import org.mockito.Mockito._ import org.scalatest.mock.MockitoSugar import org.scalatest.{FlatSpec, Matchers} +import xyz.driver.core.logging.Logger +import xyz.driver.core.messages.Messages import scala.collection.JavaConversions._ @@ -33,11 +33,11 @@ class MessagesTest extends FlatSpec with Matchers with MockitoSugar { val log = mock[Logger] val messagesConfig = ConfigFactory.parseMap( - englishLocaleMessages ++ Map( - "zh.hello" -> "你好,世界!", - "zh.greeting" -> "你好,{0}!", - "zh.greetingFullName" -> "你好,{0} {1} {2}!" - )) + englishLocaleMessages ++ Map( + "zh.hello" -> "你好,世界!", + "zh.greeting" -> "你好,{0}!", + "zh.greetingFullName" -> "你好,{0} {1} {2}!" + )) val englishMessages = Messages.messages(messagesConfig, log, Locale.US) val englishMessagesToo = Messages.messages(messagesConfig, log, Locale.ENGLISH) @@ -50,7 +50,7 @@ class MessagesTest extends FlatSpec with Matchers with MockitoSugar { englishMessagesToo("hello") should be(englishMessages("hello")) englishMessagesToo("greeting", "Homer") should be(englishMessages("greeting", "Homer")) englishMessagesToo("greetingFullName", "Homer", "J", "Simpson") should be( - englishMessages("greetingFullName", "Homer", "J", "Simpson")) + englishMessages("greetingFullName", "Homer", "J", "Simpson")) chineseMessages("hello") should be("你好,世界!") chineseMessages("greeting", "Homer") should be("你好,Homer!") @@ -63,7 +63,7 @@ class MessagesTest extends FlatSpec with Matchers with MockitoSugar { val messagesConfig = ConfigFactory.parseMap(englishLocaleMessages) an[ConfigException.Missing] should be thrownBy - Messages.messages(messagesConfig, log, Locale.GERMAN) + Messages.messages(messagesConfig, log, Locale.GERMAN) } it should "log a problem, when there is no message for key" in { diff --git a/src/test/scala/com/drivergrp/core/StatsTest.scala b/src/test/scala/xyz/driver/core/StatsTest.scala index c4f449b..27ea1bd 100644 --- a/src/test/scala/com/drivergrp/core/StatsTest.scala +++ b/src/test/scala/xyz/driver/core/StatsTest.scala @@ -1,11 +1,11 @@ -package com.drivergrp.core +package xyz.driver.core -import com.drivergrp.core.logging.Logger -import com.drivergrp.core.stats.LogStats -import com.drivergrp.core.time.{Time, TimeRange} +import org.mockito.Mockito._ import org.scalatest.mock.MockitoSugar import org.scalatest.{FlatSpec, Matchers} -import org.mockito.Mockito._ +import xyz.driver.core.logging.Logger +import xyz.driver.core.stats.LogStats +import xyz.driver.core.time.{Time, TimeRange} class StatsTest extends FlatSpec with Matchers with MockitoSugar { diff --git a/src/test/scala/com/drivergrp/core/TimeTest.scala b/src/test/scala/xyz/driver/core/TimeTest.scala index b928413..76ef42c 100644 --- a/src/test/scala/com/drivergrp/core/TimeTest.scala +++ b/src/test/scala/xyz/driver/core/TimeTest.scala @@ -1,13 +1,13 @@ -package com.drivergrp.core +package xyz.driver.core import java.util.TimeZone -import com.drivergrp.core.time.{Time, _} -import org.scalacheck.{Arbitrary, Gen} -import org.scalatest.{FlatSpec, Matchers} -import org.scalatest.prop.Checkers import org.scalacheck.Arbitrary._ import org.scalacheck.Prop.BooleanOperators +import org.scalacheck.{Arbitrary, Gen} +import org.scalatest.prop.Checkers +import org.scalatest.{FlatSpec, Matchers} +import xyz.driver.core.time.{Time, _} import scala.concurrent.duration._ @@ -56,7 +56,7 @@ class TimeTest extends FlatSpec with Matchers with Checkers { it should "have ordering defined correctly" in { Seq(Time(321L), Time(123L), Time(231L)).sorted should - contain theSameElementsInOrderAs Seq(Time(123L), Time(231L), Time(321L)) + contain theSameElementsInOrderAs Seq(Time(123L), Time(231L), Time(321L)) check { times: List[Time] => times.sorted.sliding(2).filter(_.size == 2).forall { |