aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvlad <vlad@drivergrp.com>2016-10-21 16:07:05 -0400
committervlad <vlad@drivergrp.com>2016-10-21 16:07:05 -0400
commit02810f5eac3b4ce6a5d1128281a01b2a2ed0647c (patch)
treea733b421759216a7f12d227d2f912eecdfa842aa
parent7c77f5ff23e4b0f8d5e189492bc4f25f847adc00 (diff)
downloaddriver-core-02810f5eac3b4ce6a5d1128281a01b2a2ed0647c.tar.gz
driver-core-02810f5eac3b4ce6a5d1128281a01b2a2ed0647c.tar.bz2
driver-core-02810f5eac3b4ce6a5d1128281a01b2a2ed0647c.zip
Renamed package to xyz, New formatting, authorize directive supporting multiple permissions
-rw-r--r--.gitignore1
-rw-r--r--.scalafmt24
-rw-r--r--build.sbt40
-rw-r--r--project/plugins.sbt2
-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
26 files changed, 181 insertions, 201 deletions
diff --git a/.gitignore b/.gitignore
index 5ffc222..9ecad8f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,4 +18,5 @@ project/plugins/project/
.idea/
.idea
.scalafmt
+.scalafmt.conf
scalastyle-config.xml
diff --git a/.scalafmt b/.scalafmt
deleted file mode 100644
index 5226b38..0000000
--- a/.scalafmt
+++ /dev/null
@@ -1,24 +0,0 @@
-# scalafmt sbt plugin config
-# refer to https://olafurpg.github.io/scalafmt/#Configuration for properties
-
---style defaultWithAlign # For pretty alignment.
---maxColumn 120 # For my wide 30" display.
-
---reformatDocstrings true
---scalaDocs
-
---continuationIndentCallSite 4
---continuationIndentDefnSite 4
-
---rewriteTokens ⇒;=>,←;<-
---danglingParentheses false
---spaceAfterTripleEquals true
---alignByArrowEnumeratorGenerator true
---binPackParentConstructors true
---allowNewlineBeforeColonInMassiveReturnTypes true
---spacesInImportCurlyBraces false
-
-# --alignByOpenParenCallSite <value>
-# --alignByOpenParenDefnSite <value>
-
- \ No newline at end of file
diff --git a/build.sbt b/build.sbt
index 854ae44..2f1c7f2 100644
--- a/build.sbt
+++ b/build.sbt
@@ -3,26 +3,26 @@ import Keys._
lazy val akkaHttpV = "2.4.8"
-lazy val core = (project in file(".")).
- settings(name := "core").
- settings(
+lazy val core = (project in file("."))
+ .settings(name := "core")
+ .settings(
libraryDependencies ++= Seq(
- "com.typesafe.akka" %% "akka-http-core" % akkaHttpV,
- "com.typesafe.akka" %% "akka-http-experimental" % akkaHttpV,
- "com.typesafe.akka" %% "akka-http-jackson-experimental" % akkaHttpV,
- "com.typesafe.akka" %% "akka-http-spray-json-experimental" % akkaHttpV,
- "com.typesafe.akka" %% "akka-http-testkit" % akkaHttpV,
- "org.scalatest" % "scalatest_2.11" % "2.2.6" % "test",
- "org.scalacheck" %% "scalacheck" % "1.12.5" % "test",
- "org.mockito" % "mockito-core" % "1.9.5" % "test",
- "com.amazonaws" % "aws-java-sdk-s3" % "1.11.26",
- "com.typesafe.slick" %% "slick" % "3.1.1",
- "com.typesafe" % "config" % "1.2.1",
- "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0",
- "ch.qos.logback" % "logback-classic" % "1.1.3",
- "org.slf4j" % "slf4j-nop" % "1.6.4",
- "com.github.swagger-akka-http" %% "swagger-akka-http" % "0.7.1"
+ "com.typesafe.akka" %% "akka-http-core" % akkaHttpV,
+ "com.typesafe.akka" %% "akka-http-experimental" % akkaHttpV,
+ "com.typesafe.akka" %% "akka-http-jackson-experimental" % akkaHttpV,
+ "com.typesafe.akka" %% "akka-http-spray-json-experimental" % akkaHttpV,
+ "com.typesafe.akka" %% "akka-http-testkit" % akkaHttpV,
+ "org.scalatest" % "scalatest_2.11" % "2.2.6" % "test",
+ "org.scalacheck" %% "scalacheck" % "1.12.5" % "test",
+ "org.mockito" % "mockito-core" % "1.9.5" % "test",
+ "com.amazonaws" % "aws-java-sdk-s3" % "1.11.26",
+ "com.typesafe.slick" %% "slick" % "3.1.1",
+ "com.typesafe" % "config" % "1.2.1",
+ "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0",
+ "ch.qos.logback" % "logback-classic" % "1.1.3",
+ "org.slf4j" % "slf4j-nop" % "1.6.4",
+ "com.github.swagger-akka-http" %% "swagger-akka-http" % "0.7.1"
))
.gitPluginConfiguration
- .settings (lintingSettings ++ formatSettings)
- .settings (repositoriesSettings ++ publicationSettings ++ releaseSettings)
+ .settings(lintingSettings ++ formatSettings)
+ .settings(repositoriesSettings ++ publicationSettings ++ releaseSettings)
diff --git a/project/plugins.sbt b/project/plugins.sbt
index dde5a53..637ac2d 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -1,4 +1,4 @@
resolvers += "releases" at "https://drivergrp.jfrog.io/drivergrp/releases"
credentials += Credentials("Artifactory Realm", "drivergrp.jfrog.io", "sbt-publisher", "ANC-d8X-Whm-USS")
-addSbtPlugin("xyz.driver" % "sbt-settings" % "0.5.16")
+addSbtPlugin("xyz.driver" % "sbt-settings" % "0.5.26")
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 {