diff --git a/.travis.yml b/.travis.yml index e55ee73..89bcb4f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,8 @@ services: - docker scala: - - 2.11.8 + - 2.11.12 + - 2.12.4 jdk: oraclejdk8 @@ -19,6 +20,6 @@ before_install: - bash scripts/start_vault script: - - sbt scalastyle - - sbt test - - sbt it:test + - sbt ++$TRAVIS_SCALA_VERSION scalastyle + - sbt ++$TRAVIS_SCALA_VERSION test + - sbt ++$TRAVIS_SCALA_VERSION it:test diff --git a/auth/src/it/scala/janstenpickle/vault/auth/UserPassIT.scala b/auth/src/it/scala/janstenpickle/vault/auth/UserPassIT.scala index 7d9c8c7..f9327af 100644 --- a/auth/src/it/scala/janstenpickle/vault/auth/UserPassIT.scala +++ b/auth/src/it/scala/janstenpickle/vault/auth/UserPassIT.scala @@ -6,6 +6,7 @@ import org.scalacheck.{Gen, Prop} import org.specs2.ScalaCheck import org.specs2.matcher.MatchResult +//noinspection ScalaStyle class UserPassIT extends VaultSpec with ScalaCheck { import VaultSpec._ diff --git a/auth/src/main/scala/janstenpickle/vault/auth/UserPass.scala b/auth/src/main/scala/janstenpickle/vault/auth/UserPass.scala index daa4c6a..d224e00 100644 --- a/auth/src/main/scala/janstenpickle/vault/auth/UserPass.scala +++ b/auth/src/main/scala/janstenpickle/vault/auth/UserPass.scala @@ -1,9 +1,11 @@ package janstenpickle.vault.auth +import java.net.{HttpURLConnection => status} + import io.circe.generic.auto._ import janstenpickle.scala.syntax.AsyncResultSyntax._ -import janstenpickle.scala.syntax.SyntaxRequest._ import janstenpickle.scala.syntax.ResponseSyntax._ +import janstenpickle.scala.syntax.SyntaxRequest._ import janstenpickle.vault.core.WSClient import uscala.concurrent.result.AsyncResult @@ -17,13 +19,11 @@ case class UserPass(wsClient: WSClient) { ttl: Int, client: String = "userpass" )(implicit ec: ExecutionContext): AsyncResult[String, UserPassResponse] = - wsClient.path(s"auth/$client/login/$username"). - post(Map("password" -> password, "ttl" -> s"${ttl}s")). - toAsyncResult. - // scalastyle:off magic.number - acceptStatusCodes(200). - // scalastyle:on magic.number - extractFromJson[UserPassResponse](_.downField("auth")) + wsClient.path(s"auth/$client/login/$username") + .post(Map("password" -> password, "ttl" -> s"${ttl}s")) + .toAsyncResult + .acceptStatusCodes(status.HTTP_OK) + .extractFromJson[UserPassResponse](_.downField("auth")) } case class UserPassResponse( diff --git a/build.sbt b/build.sbt index a665c01..41394e5 100644 --- a/build.sbt +++ b/build.sbt @@ -1,11 +1,13 @@ import sbt.Keys._ +import org.scalastyle.sbt._ + name := "vault" lazy val uscalaVersion = "0.5.1" -lazy val specs2Version = "3.8.8" -lazy val circeVersion = "0.7.0" -lazy val dispatchVersion = "0.11.3" +lazy val specs2Version = "3.9.5" +lazy val circeVersion = "0.7.1" +lazy val dispatchVersion = "0.13.2" lazy val startVaultTask = TaskKey[Unit]( "startVaultTask", "Start dev vault server for integration test" @@ -37,8 +39,10 @@ val pomInfo = ( ) lazy val commonSettings = Seq( + resolvers += Resolver.bintrayRepo("albertpastrana", "maven"), version := "0.4.2-SNAPSHOT", - scalaVersion := "2.11.11", + scalaVersion := "2.11.12", + crossScalaVersions := Seq( "2.11.12", "2.12.4"), organization := "janstenpickle.vault", pomExtra := pomInfo, autoAPIMappings := true, @@ -90,8 +94,7 @@ lazy val commonSettings = Seq( unmanagedSourceDirectories in IntegrationTest += baseDirectory.value / "test" / "scala", // check style settings - checkStyleBeforeCompile := - org.scalastyle.sbt.ScalastylePlugin.scalastyle.in(Compile).toTask("").value, + checkStyleBeforeCompile := (scalastyle in Compile).toTask("").value, (compile in Compile) := ( (compile in Compile) dependsOn checkStyleBeforeCompile @@ -102,11 +105,13 @@ lazy val core = (project in file("core")). settings(name := "vault-core"). settings(commonSettings: _*). configs(IntegrationTest) + lazy val manage = (project in file("manage")). settings(name := "vault-manage"). settings(commonSettings: _*). configs(IntegrationTest). dependsOn(core % "compile->compile;it->it,it->test") + lazy val auth = (project in file("auth")). settings(name := "vault-auth"). settings(commonSettings: _*). diff --git a/core/src/it/scala/janstenpickle/vault/core/SecretsIT.scala b/core/src/it/scala/janstenpickle/vault/core/SecretsIT.scala index 7cbdca1..3833e05 100644 --- a/core/src/it/scala/janstenpickle/vault/core/SecretsIT.scala +++ b/core/src/it/scala/janstenpickle/vault/core/SecretsIT.scala @@ -69,8 +69,8 @@ trait SecretsTests extends VaultSpec with ScalaCheck { }) } - def failGet = good.get("john").attemptRun(_.getMessage()) must beFail. - like { case err => + def failGet = good.get("john").attemptRun(_.getMessage()) must beFail + .like { case err => err must contain("Received failure response from server: 404") } diff --git a/core/src/it/scala/janstenpickle/vault/core/VaultSpec.scala b/core/src/it/scala/janstenpickle/vault/core/VaultSpec.scala index 43f31cd..7e61509 100644 --- a/core/src/it/scala/janstenpickle/vault/core/VaultSpec.scala +++ b/core/src/it/scala/janstenpickle/vault/core/VaultSpec.scala @@ -2,9 +2,6 @@ package janstenpickle.vault.core import java.net.URL -import janstenpickle.scala.syntax.SyntaxRequest._ -import janstenpickle.scala.syntax.ResponseSyntax._ -import janstenpickle.scala.syntax.VaultConfigSyntax._ import org.scalacheck.Gen import org.specs2.Specification import org.specs2.specification.core.Fragments diff --git a/core/src/main/scala/janstenpickle/scala/syntax/syntax.scala b/core/src/main/scala/janstenpickle/scala/syntax/syntax.scala index 2413efd..d2c7639 100644 --- a/core/src/main/scala/janstenpickle/scala/syntax/syntax.scala +++ b/core/src/main/scala/janstenpickle/scala/syntax/syntax.scala @@ -1,11 +1,11 @@ package janstenpickle.scala.syntax -import com.ning.http.client.Response import dispatch.{Http, Req} import io.circe._ import io.circe.parser._ import io.circe.syntax._ import janstenpickle.vault.core.VaultConfig +import org.asynchttpclient.Response import uscala.concurrent.result.AsyncResult import uscala.result.Result @@ -34,7 +34,9 @@ object AsyncResultSyntax { implicit class ReqToAsyncResult(req: Req) (implicit ec: ExecutionContext) { - def toAsyncResult: AsyncResult[String, Response] = Http(req).toAsyncResult + def toAsyncResult: AsyncResult[String, Response] = + Http.default(req) + .toAsyncResult } implicit def toAsyncResult[T](future: scala.concurrent.Future[T]) @@ -109,7 +111,7 @@ object SyntaxRequest { implicit class ExecuteRequest(req: AsyncResult[String, Req]) (implicit ec: ExecutionContext) { def execute: AsyncResult[String, Response] = - req.flatMapF(Http(_)) + req.flatMapF(Http.default.apply) } implicit class HttpOps(req: Req) { diff --git a/core/src/main/scala/janstenpickle/vault/core/Secrets.scala b/core/src/main/scala/janstenpickle/vault/core/Secrets.scala index 32f53a0..031a645 100644 --- a/core/src/main/scala/janstenpickle/vault/core/Secrets.scala +++ b/core/src/main/scala/janstenpickle/vault/core/Secrets.scala @@ -1,15 +1,16 @@ package janstenpickle.vault.core -import com.ning.http.client.Response -import janstenpickle.scala.syntax.SyntaxRequest._ +import java.net.{HttpURLConnection => status} + import janstenpickle.scala.syntax.ResponseSyntax._ +import janstenpickle.scala.syntax.SyntaxRequest._ import janstenpickle.scala.syntax.VaultConfigSyntax._ +import org.asynchttpclient.Response import uscala.concurrent.result.AsyncResult import uscala.result.Result import scala.concurrent.ExecutionContext -// scalastyle:off magic.number case class Secrets(config: VaultConfig, backend: String) { def get(key: String, subKey: String = "value") (implicit ec: ExecutionContext): AsyncResult[String, String] = @@ -19,10 +20,10 @@ case class Secrets(config: VaultConfig, backend: String) { def getAll(key: String) (implicit ec: ExecutionContext): AsyncResult[String, Map[String, String]] = - config.authenticatedRequest(path(key))(_.get). - execute. - acceptStatusCodes(200). - extractFromJson[Map[String, String]](_.downField("data")) + config.authenticatedRequest(path(key))(_.get) + .execute + .acceptStatusCodes(status.HTTP_OK) + .extractFromJson[Map[String, String]](_.downField("data")) def set(key: String, value: String) (implicit ec: ExecutionContext): AsyncResult[String, Response] = @@ -34,17 +35,16 @@ case class Secrets(config: VaultConfig, backend: String) { def set(key: String, values: Map[String, String]) (implicit ec: ExecutionContext): AsyncResult[String, Response] = - config.authenticatedRequest(path(key))(_.post(values)). - execute. - acceptStatusCodes(204) + config.authenticatedRequest(path(key))(_.post(values)) + .execute + .acceptStatusCodes(status.HTTP_NO_CONTENT) def list(implicit ec: ExecutionContext): AsyncResult[String, List[String]] = config.authenticatedRequest(backend)( - _.addQueryParameter("list", true.toString).get). - execute. - acceptStatusCodes(200). - extractFromJson[List[String]](_.downField("data").downField("keys")) + _.addQueryParameter("list", true.toString).get) + .execute + .acceptStatusCodes(status.HTTP_OK) + .extractFromJson[List[String]](_.downField("data").downField("keys")) def path(key: String): String = s"$backend/$key" } -// scalastyle:on magic.number diff --git a/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala b/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala index 67544a9..3314667 100644 --- a/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala +++ b/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala @@ -1,65 +1,62 @@ package janstenpickle.vault.core -import java.net.URL +import java.net.{URL, HttpURLConnection => status} +import java.nio.charset.Charset import dispatch.{Req, url} import io.circe.generic.auto._ import io.circe.syntax._ import janstenpickle.scala.syntax.AsyncResultSyntax._ -import janstenpickle.scala.syntax.SyntaxRequest._ import janstenpickle.scala.syntax.ResponseSyntax._ +import janstenpickle.scala.syntax.SyntaxRequest._ import uscala.concurrent.result.AsyncResult import scala.concurrent.ExecutionContext case class VaultConfig(wsClient: WSClient, token: AsyncResult[String, String]) + @deprecated("Vault 0.6.5 deprecated AppId in favor of AppRole", "0.4.0") case class AppId(app_id: String, user_id: String) + case class AppRole(role_id: String, secret_id: String) object VaultConfig { @deprecated("Vault 0.6.5 deprecated AppId in favor of AppRole", "0.4.0") def apply(client: WSClient, appId: AppId) - (implicit ec: ExecutionContext): VaultConfig = + (implicit ec: ExecutionContext): VaultConfig = VaultConfig(client, - client.path("auth/app-id/login"). - post(appId.asJson). - toAsyncResult. - // scalastyle:off magic.number - acceptStatusCodes(200). - // scalastyle:on magic.number - extractFromJson[String]( + client.path("auth/app-id/login") + .post(appId.asJson) + .toAsyncResult + .acceptStatusCodes(status.HTTP_OK) + .extractFromJson[String]( _.downField("auth").downField("client_token") ) ) def apply(client: WSClient, appRole: AppRole) - (implicit ec: ExecutionContext): VaultConfig = + (implicit ec: ExecutionContext): VaultConfig = VaultConfig(client, - client.path("auth/approle/login"). - post(appRole.asJson). - toAsyncResult. - // scalastyle:off magic.number - acceptStatusCodes(200). - // scalastyle:on magic.number - extractFromJson[String]( + client.path("auth/approle/login") + .post(appRole.asJson) + .toAsyncResult + .acceptStatusCodes(status.HTTP_OK) + .extractFromJson[String]( _.downField("auth").downField("client_token") ) ) - def apply(wsClient: WSClient, token: String) - (implicit ec: ExecutionContext): VaultConfig = + def apply(wsClient: WSClient, token: String): VaultConfig = VaultConfig(wsClient, AsyncResult.ok[String, String](token)) } - case class WSClient(server: URL, version: String = "v1") { - def path(p: String): Req = - url(s"${server.toString}/$version/$p"). - setContentType("application/json", "UTF-8") + def path(p: String): Req = + url(s"${server.toString}/$version/$p") + .setContentType("application/json", Charset.forName("UTF-8")) } diff --git a/manage/src/it/scala/janstenpickle/vault/manage/MountIT.scala b/manage/src/it/scala/janstenpickle/vault/manage/MountIT.scala index 449a418..dad27eb 100644 --- a/manage/src/it/scala/janstenpickle/vault/manage/MountIT.scala +++ b/manage/src/it/scala/janstenpickle/vault/manage/MountIT.scala @@ -1,9 +1,9 @@ package janstenpickle.vault.manage -import com.ning.http.client.Response -import com.ning.http.client.providers.jdk.JDKResponse import janstenpickle.vault.core.VaultSpec import janstenpickle.vault.manage.Model.{Mount, MountConfig} +import org.asynchttpclient.Response +import org.asynchttpclient.netty.NettyResponse import org.scalacheck.{Gen, Prop} import org.specs2.ScalaCheck import uscala.result.Result @@ -19,7 +19,7 @@ class MountIT extends VaultSpec with ScalaCheck { Cannot enable an invalid mount type $enableFail """ - lazy val underTest = new Mounts(config) + lazy val underTest = Mounts(config) def happy = Prop.forAllNoShrink( mountGen, @@ -75,9 +75,9 @@ object MountIT { forceNoCache <- Gen.option(Gen.oneOf(true, false)) } yield Mount(mountType, description, Some(MountConfig(defaultTtl, maxTtl, forceNoCache))) - def processMountTypes(op: (Result[String, Response], String) => Result[String, - Response]) = - mountTypes.foldLeft[Result[String, Response]](Result.ok(new - JDKResponse(null, null, null)))(op) - + def processMountTypes(op: (Result[String, Response], String) => + Result[String, Response]) = + mountTypes.foldLeft[Result[String, Response]]( + Result.ok(new NettyResponse(null, null, null)) + )(op) } diff --git a/manage/src/it/scala/janstenpickle/vault/manage/PolicyIT.scala b/manage/src/it/scala/janstenpickle/vault/manage/PolicyIT.scala index c8a4b38..19a8ce0 100644 --- a/manage/src/it/scala/janstenpickle/vault/manage/PolicyIT.scala +++ b/manage/src/it/scala/janstenpickle/vault/manage/PolicyIT.scala @@ -4,7 +4,6 @@ import janstenpickle.vault.core.VaultSpec import janstenpickle.vault.manage.Model.Rule import org.scalacheck.{Gen, Prop} import org.specs2.ScalaCheck -import uscala.result.Result class PolicyIT extends VaultSpec with ScalaCheck { import PolicyIT._ @@ -20,8 +19,8 @@ class PolicyIT extends VaultSpec with ScalaCheck { def happy = Prop.forAllNoShrink( longerStrGen, - Gen.listOf(ruleGen(longerStrGen, policyGen, capabilitiesGen)). - suchThat(_.nonEmpty)) { (name, rules) => + Gen.listOf(ruleGen(longerStrGen, policyGen, capabilitiesGen)) + .suchThat(_.nonEmpty)) { (name, rules) => (underTest.set(name.toLowerCase, rules) .attemptRun(_.getMessage()) must beOk) and (underTest.inspect(name.toLowerCase) @@ -40,9 +39,9 @@ object PolicyIT { val policyGen = Gen.option(Gen.oneOf("read", "write", "sudo", "deny")) val capabilitiesGen = Gen.listOf(Gen.oneOf( - "create", "read", "update", "delete", "list", "sudo", "deny")). - suchThat(_.nonEmpty). - map(_.distinct) + "create", "read", "update", "delete", "list", "sudo", "deny")) + .suchThat(_.nonEmpty) + .map(_.distinct) def ruleGen( pathGen: Gen[String], diff --git a/manage/src/main/scala/janstenpickle/vault/manage/UserPass.scala b/manage/src/main/scala/janstenpickle/vault/manage/UserPass.scala index 7e1211b..4660349 100644 --- a/manage/src/main/scala/janstenpickle/vault/manage/UserPass.scala +++ b/manage/src/main/scala/janstenpickle/vault/manage/UserPass.scala @@ -1,16 +1,17 @@ package janstenpickle.vault.manage -import com.ning.http.client.Response +import java.net.{HttpURLConnection => status} + import janstenpickle.scala.syntax.OptionSyntax._ -import janstenpickle.scala.syntax.SyntaxRequest._ import janstenpickle.scala.syntax.ResponseSyntax._ +import janstenpickle.scala.syntax.SyntaxRequest._ import janstenpickle.scala.syntax.VaultConfigSyntax._ import janstenpickle.vault.core.VaultConfig +import org.asynchttpclient.Response import uscala.concurrent.result.AsyncResult import scala.concurrent.ExecutionContext -// scalastyle:off magic.number case class UserPass(config: VaultConfig) { final val DefaultClient = "userpass" def create(username: String, @@ -24,13 +25,13 @@ case class UserPass(config: VaultConfig) { Map("username" -> username, "password" -> password, "ttl" -> s"${ttl}s")) - ).execute.acceptStatusCodes(204) + ).execute.acceptStatusCodes(status.HTTP_NO_CONTENT) def delete(username: String, client: String = DefaultClient) (implicit ec: ExecutionContext): AsyncResult[String, Response] = - config.authenticatedRequest(s"auth/$client/users/$username")(_.delete). - execute. - acceptStatusCodes(204) + config.authenticatedRequest(s"auth/$client/users/$username")(_.delete) + .execute + .acceptStatusCodes(status.HTTP_NO_CONTENT) def setPassword( username: String, @@ -39,7 +40,7 @@ case class UserPass(config: VaultConfig) { )(implicit ec: ExecutionContext): AsyncResult[String, Response] = config.authenticatedRequest(s"auth/$client/users/$username/password")( _.post(Map("username" -> username, "password" -> password)) - ).execute.acceptStatusCodes(204) + ).execute.acceptStatusCodes(status.HTTP_NO_CONTENT) def setPolicies( username: String, @@ -48,6 +49,5 @@ case class UserPass(config: VaultConfig) { )(implicit ec: ExecutionContext): AsyncResult[String, Response] = config.authenticatedRequest(s"auth/$client/users/$username/policies")( _.post(Map("username" -> username, "policies" -> policies.mkString(","))) - ).execute.acceptStatusCodes(204) + ).execute.acceptStatusCodes(status.HTTP_NO_CONTENT) } -// scalastyle:on magic.number diff --git a/manage/src/main/scala/janstenpickle/vault/manage/manage.scala b/manage/src/main/scala/janstenpickle/vault/manage/manage.scala index a681b8a..a5b17db 100644 --- a/manage/src/main/scala/janstenpickle/vault/manage/manage.scala +++ b/manage/src/main/scala/janstenpickle/vault/manage/manage.scala @@ -1,20 +1,21 @@ package janstenpickle.vault.manage -import com.ning.http.client.Response +import java.net.{HttpURLConnection => status} + import io.circe.generic.auto._ import io.circe.syntax._ import janstenpickle.scala.syntax.OptionSyntax._ -import janstenpickle.scala.syntax.SyntaxRequest._ import janstenpickle.scala.syntax.ResponseSyntax._ +import janstenpickle.scala.syntax.SyntaxRequest._ import janstenpickle.scala.syntax.VaultConfigSyntax._ import janstenpickle.vault.core.VaultConfig import janstenpickle.vault.manage.Model._ +import org.asynchttpclient.Response import uscala.concurrent.result.AsyncResult import uscala.result.Result import scala.concurrent.ExecutionContext -// scalastyle:off magic.number case class Auth(config: VaultConfig) { def enable(`type`: String, mountPoint: Option[String] = None, @@ -22,13 +23,13 @@ case class Auth(config: VaultConfig) { (implicit ec: ExecutionContext): AsyncResult[String, Response] = config.authenticatedRequest(s"sys/auth/${mountPoint.getOrElse(`type`)}")( _.post(description.toMap("description") + ("type" -> `type`)) - ).execute.acceptStatusCodes(204) + ).execute.acceptStatusCodes(status.HTTP_NO_CONTENT) def disable(mountPoint: String) (implicit ec: ExecutionContext): AsyncResult[String, Response] = - config.authenticatedRequest(s"sys/auth/$mountPoint")(_.delete). - execute. - acceptStatusCodes(204) + config.authenticatedRequest(s"sys/auth/$mountPoint")(_.delete) + .execute + .acceptStatusCodes(status.HTTP_NO_CONTENT) } case class Mounts(config: VaultConfig) { @@ -36,14 +37,14 @@ case class Mounts(config: VaultConfig) { (implicit ec: ExecutionContext): AsyncResult[String, Response] = config.authenticatedRequest("sys/remount")( _.post(Map("from" -> from, "to" -> to)) - ).execute.acceptStatusCodes(204) + ).execute.acceptStatusCodes(status.HTTP_NO_CONTENT) def list(implicit ec: ExecutionContext): AsyncResult[String, Map[String, Mount]] = - config.authenticatedRequest("sys/mounts")(_.get). - execute. - acceptStatusCodes(200). - extractFromJson[Map[String, Mount]](_.downField("data")) + config.authenticatedRequest("sys/mounts")(_.get) + .execute + .acceptStatusCodes(status.HTTP_OK) + .extractFromJson[Map[String, Mount]](_.downField("data")) def mount(`type`: String, mountPoint: Option[String] = None, @@ -52,43 +53,43 @@ case class Mounts(config: VaultConfig) { (implicit ec: ExecutionContext): AsyncResult[String, Response] = config.authenticatedRequest(s"sys/mounts/${mountPoint.getOrElse(`type`)}")( _.post(MountRequest(`type`, description, conf).asJson) - ).execute.acceptStatusCodes(204) + ).execute.acceptStatusCodes(status.HTTP_NO_CONTENT) def delete(mountPoint: String) (implicit ec: ExecutionContext): AsyncResult[String, Response] = - config.authenticatedRequest(s"sys/mounts/$mountPoint")(_.delete). - execute. - acceptStatusCodes(204) + config.authenticatedRequest(s"sys/mounts/$mountPoint")(_.delete) + .execute + .acceptStatusCodes(status.HTTP_NO_CONTENT) } case class Policy(config: VaultConfig) { def list(implicit ec: ExecutionContext): AsyncResult[String, List[String]] = - config.authenticatedRequest("sys/policy")(_.get). - execute. - acceptStatusCodes(200). - extractFromJson[List[String]](_.downField("policies")) + config.authenticatedRequest("sys/policy")(_.get) + .execute + .acceptStatusCodes(status.HTTP_OK) + .extractFromJson[List[String]](_.downField("policies")) // NOTE: `rules` is not valid Json def inspect(policy: String)(implicit ec: ExecutionContext): AsyncResult[String, String] = - config.authenticatedRequest(s"sys/policy/$policy")(_.get). - execute. - acceptStatusCodes(200) + config.authenticatedRequest(s"sys/policy/$policy")(_.get) + .execute + .acceptStatusCodes(status.HTTP_OK) .extractFromJson[String](_.downField("rules")) def set(policy: String, rules: List[Rule]) (implicit ec: ExecutionContext): AsyncResult[String, Response] = config.authenticatedRequest(s"sys/policy/$policy")( - _.post(PolicySetting(policy, rules).asJson)). - execute. - acceptStatusCodes(204) + _.post(PolicySetting(policy, rules).asJson)) + .execute + .acceptStatusCodes(status.HTTP_NO_CONTENT) def delete(policy: String)(implicit ec: ExecutionContext): AsyncResult[String, Response] = - config.authenticatedRequest(s"sys/policy/$policy")(_.delete). - execute. - acceptStatusCodes(204) + config.authenticatedRequest(s"sys/policy/$policy")(_.delete) + .execute + .acceptStatusCodes(status.HTTP_NO_CONTENT) } object Model { @@ -158,4 +159,3 @@ object Model { } } } -// scalastyle:on magic.number diff --git a/manage/src/test/scala/janstenpickle/vault/manage/RuleSpec.scala b/manage/src/test/scala/janstenpickle/vault/manage/RuleSpec.scala index c6ec359..54bdca1 100644 --- a/manage/src/test/scala/janstenpickle/vault/manage/RuleSpec.scala +++ b/manage/src/test/scala/janstenpickle/vault/manage/RuleSpec.scala @@ -28,9 +28,9 @@ class RuleSpec extends Specification with ScalaCheck with ResultMatchers { object RuleSpec { val policyGen = Gen.option(Gen.oneOf("read", "write", "sudo", "deny")) val capabilitiesGen = Gen.option( - Gen.listOf(Gen.oneOf("create", "read", "update", "delete", "list", "sudo", "deny")). - suchThat(_.nonEmpty). - map(_.distinct) + Gen.listOf(Gen.oneOf("create", "read", "update", "delete", "list", "sudo", "deny")) + .suchThat(_.nonEmpty) + .map(_.distinct) ) val ruleGen = for { diff --git a/project/build.properties b/project/build.properties index b168a33..059dc1f 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version = 0.13.13 +sbt.version = 1.0.4 diff --git a/project/plugins.sbt b/project/plugins.sbt index f396454..f3686b3 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,13 +1,13 @@ logLevel := Level.Warn // publishing and resolving bintray packages -addSbtPlugin("me.lessis" % "bintray-sbt" % "0.3.0") +addSbtPlugin("org.foundweekends" % "sbt-bintray" % "0.5.2") // measure code coverage -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.5.0") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.5.1") // measure code style -addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "0.8.0") +addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0") // check dependencies -addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.3.0") +addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.3.3")