From df1bb212f109029b7a6a9492f942e2c258a82b9c Mon Sep 17 00:00:00 2001 From: Daniel Fallon Date: Tue, 19 Dec 2017 18:50:09 -0600 Subject: [PATCH 1/6] Update to sbt 1.0.4 --- .../janstenpickle/vault/auth/UserPassIT.scala | 1 + build.sbt | 16 ++++++++++------ .../janstenpickle/scala/syntax/syntax.scala | 6 ++++-- .../janstenpickle/vault/core/VaultConfig.scala | 3 +-- project/build.properties | 2 +- project/plugins.sbt | 8 ++++---- 6 files changed, 21 insertions(+), 15 deletions(-) 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/build.sbt b/build.sbt index a665c01..276284f 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.8.9" +lazy val circeVersion = "0.7.1" +lazy val dispatchVersion = "0.11.4" lazy val startVaultTask = TaskKey[Unit]( "startVaultTask", "Start dev vault server for integration test" @@ -37,8 +39,9 @@ val pomInfo = ( ) lazy val commonSettings = Seq( + resolvers += Resolver.bintrayRepo("albertpastrana", "maven"), version := "0.4.2-SNAPSHOT", - scalaVersion := "2.11.11", + scalaVersion := "2.11.12", organization := "janstenpickle.vault", pomExtra := pomInfo, autoAPIMappings := true, @@ -90,8 +93,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 +104,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/main/scala/janstenpickle/scala/syntax/syntax.scala b/core/src/main/scala/janstenpickle/scala/syntax/syntax.scala index 2413efd..51b2217 100644 --- a/core/src/main/scala/janstenpickle/scala/syntax/syntax.scala +++ b/core/src/main/scala/janstenpickle/scala/syntax/syntax.scala @@ -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(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.apply) } implicit class HttpOps(req: Req) { diff --git a/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala b/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala index 67544a9..44b2624 100644 --- a/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala +++ b/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala @@ -48,8 +48,7 @@ object VaultConfig { ) ) - def apply(wsClient: WSClient, token: String) - (implicit ec: ExecutionContext): VaultConfig = + def apply(wsClient: WSClient, token: String): VaultConfig = VaultConfig(wsClient, AsyncResult.ok[String, String](token)) } 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") From 13be3f1346c6b9e352ad58bfa864c0fa6160550e Mon Sep 17 00:00:00 2001 From: Daniel Fallon Date: Tue, 19 Dec 2017 18:57:59 -0600 Subject: [PATCH 2/6] Update .travis.yml Updating scala version --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e55ee73..935ef55 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ services: - docker scala: - - 2.11.8 + - 2.11.12 jdk: oraclejdk8 From 4f2141d0d2f23e70a9f1fed6d44ef20963286063 Mon Sep 17 00:00:00 2001 From: Daniel Fallon Date: Tue, 19 Dec 2017 19:11:31 -0600 Subject: [PATCH 3/6] Build updates - Updating minor version of dependencies - Updating travis build to cross compile --- .travis.yml | 7 ++++--- build.sbt | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 935ef55..89bcb4f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,7 @@ services: scala: - 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/build.sbt b/build.sbt index 276284f..41394e5 100644 --- a/build.sbt +++ b/build.sbt @@ -5,9 +5,9 @@ import org.scalastyle.sbt._ name := "vault" lazy val uscalaVersion = "0.5.1" -lazy val specs2Version = "3.8.9" +lazy val specs2Version = "3.9.5" lazy val circeVersion = "0.7.1" -lazy val dispatchVersion = "0.11.4" +lazy val dispatchVersion = "0.13.2" lazy val startVaultTask = TaskKey[Unit]( "startVaultTask", "Start dev vault server for integration test" @@ -42,6 +42,7 @@ lazy val commonSettings = Seq( resolvers += Resolver.bintrayRepo("albertpastrana", "maven"), version := "0.4.2-SNAPSHOT", scalaVersion := "2.11.12", + crossScalaVersions := Seq( "2.11.12", "2.12.4"), organization := "janstenpickle.vault", pomExtra := pomInfo, autoAPIMappings := true, From d5f1f5510dab8dfe46e638ba0369764746dc51e1 Mon Sep 17 00:00:00 2001 From: Daniel Fallon Date: Tue, 19 Dec 2017 19:59:08 -0600 Subject: [PATCH 4/6] Fixes for 2.12 Updating various project files to fix minor issues caused by dependency upgrades --- .../janstenpickle/scala/syntax/syntax.scala | 6 +++--- .../scala/janstenpickle/vault/core/Secrets.scala | 4 ++-- .../janstenpickle/vault/core/VaultConfig.scala | 7 ++++--- .../janstenpickle/vault/manage/MountIT.scala | 16 ++++++++-------- .../janstenpickle/vault/manage/UserPass.scala | 4 ++-- .../janstenpickle/vault/manage/manage.scala | 4 ++-- 6 files changed, 21 insertions(+), 20 deletions(-) diff --git a/core/src/main/scala/janstenpickle/scala/syntax/syntax.scala b/core/src/main/scala/janstenpickle/scala/syntax/syntax.scala index 51b2217..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 @@ -35,7 +35,7 @@ object AsyncResultSyntax { implicit class ReqToAsyncResult(req: Req) (implicit ec: ExecutionContext) { def toAsyncResult: AsyncResult[String, Response] = - Http(req) + Http.default(req) .toAsyncResult } @@ -111,7 +111,7 @@ object SyntaxRequest { implicit class ExecuteRequest(req: AsyncResult[String, Req]) (implicit ec: ExecutionContext) { def execute: AsyncResult[String, Response] = - req.flatMapF(Http.apply) + 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..b664f3e 100644 --- a/core/src/main/scala/janstenpickle/vault/core/Secrets.scala +++ b/core/src/main/scala/janstenpickle/vault/core/Secrets.scala @@ -1,9 +1,9 @@ package janstenpickle.vault.core -import com.ning.http.client.Response -import janstenpickle.scala.syntax.SyntaxRequest._ 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 diff --git a/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala b/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala index 44b2624..1fa1c09 100644 --- a/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala +++ b/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala @@ -1,13 +1,14 @@ package janstenpickle.vault.core import java.net.URL +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 @@ -57,8 +58,8 @@ object VaultConfig { case class WSClient(server: URL, version: String = "v1") { def path(p: String): Req = - url(s"${server.toString}/$version/$p"). - setContentType("application/json", "UTF-8") + 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/main/scala/janstenpickle/vault/manage/UserPass.scala b/manage/src/main/scala/janstenpickle/vault/manage/UserPass.scala index 7e1211b..8e5d940 100644 --- a/manage/src/main/scala/janstenpickle/vault/manage/UserPass.scala +++ b/manage/src/main/scala/janstenpickle/vault/manage/UserPass.scala @@ -1,11 +1,11 @@ package janstenpickle.vault.manage -import com.ning.http.client.Response 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 diff --git a/manage/src/main/scala/janstenpickle/vault/manage/manage.scala b/manage/src/main/scala/janstenpickle/vault/manage/manage.scala index a681b8a..5617fed 100644 --- a/manage/src/main/scala/janstenpickle/vault/manage/manage.scala +++ b/manage/src/main/scala/janstenpickle/vault/manage/manage.scala @@ -1,14 +1,14 @@ package janstenpickle.vault.manage -import com.ning.http.client.Response 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 From 3bce90476539fb29e1577841006605e2d52e3c42 Mon Sep 17 00:00:00 2001 From: Daniel Fallon Date: Tue, 19 Dec 2017 20:46:17 -0600 Subject: [PATCH 5/6] General Code Cleanup - reformatting - removing magic numbers --- .../janstenpickle/vault/auth/UserPass.scala | 16 +++--- .../janstenpickle/vault/core/SecretsIT.scala | 4 +- .../janstenpickle/vault/core/Secrets.scala | 26 ++++----- .../vault/core/VaultConfig.scala | 39 ++++++------- .../janstenpickle/vault/manage/PolicyIT.scala | 11 ++-- .../janstenpickle/vault/manage/UserPass.scala | 16 +++--- .../janstenpickle/vault/manage/manage.scala | 56 +++++++++---------- .../janstenpickle/vault/manage/RuleSpec.scala | 6 +- 8 files changed, 85 insertions(+), 89 deletions(-) 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/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/main/scala/janstenpickle/vault/core/Secrets.scala b/core/src/main/scala/janstenpickle/vault/core/Secrets.scala index b664f3e..031a645 100644 --- a/core/src/main/scala/janstenpickle/vault/core/Secrets.scala +++ b/core/src/main/scala/janstenpickle/vault/core/Secrets.scala @@ -1,5 +1,7 @@ package janstenpickle.vault.core +import java.net.{HttpURLConnection => status} + import janstenpickle.scala.syntax.ResponseSyntax._ import janstenpickle.scala.syntax.SyntaxRequest._ import janstenpickle.scala.syntax.VaultConfigSyntax._ @@ -9,7 +11,6 @@ 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 1fa1c09..3314667 100644 --- a/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala +++ b/core/src/main/scala/janstenpickle/vault/core/VaultConfig.scala @@ -1,6 +1,6 @@ package janstenpickle.vault.core -import java.net.URL +import java.net.{URL, HttpURLConnection => status} import java.nio.charset.Charset import dispatch.{Req, url} @@ -14,37 +14,35 @@ 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") ) ) @@ -54,12 +52,11 @@ object VaultConfig { } - case class WSClient(server: URL, version: String = "v1") { - def path(p: String): Req = - url(s"${server.toString}/$version/$p") - .setContentType("application/json", Charset.forName("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/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 8e5d940..4660349 100644 --- a/manage/src/main/scala/janstenpickle/vault/manage/UserPass.scala +++ b/manage/src/main/scala/janstenpickle/vault/manage/UserPass.scala @@ -1,5 +1,7 @@ package janstenpickle.vault.manage +import java.net.{HttpURLConnection => status} + import janstenpickle.scala.syntax.OptionSyntax._ import janstenpickle.scala.syntax.ResponseSyntax._ import janstenpickle.scala.syntax.SyntaxRequest._ @@ -10,7 +12,6 @@ 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 5617fed..a5b17db 100644 --- a/manage/src/main/scala/janstenpickle/vault/manage/manage.scala +++ b/manage/src/main/scala/janstenpickle/vault/manage/manage.scala @@ -1,5 +1,7 @@ package janstenpickle.vault.manage +import java.net.{HttpURLConnection => status} + import io.circe.generic.auto._ import io.circe.syntax._ import janstenpickle.scala.syntax.OptionSyntax._ @@ -14,7 +16,6 @@ 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 { From c2e42c4af9bf977605832cfd96365929cfd51834 Mon Sep 17 00:00:00 2001 From: Daniel Fallon Date: Tue, 19 Dec 2017 20:52:05 -0600 Subject: [PATCH 6/6] Fixing import issue see travis ci build https://travis-ci.org/dv-trading/scala-vault/jobs/318966359 --- core/src/it/scala/janstenpickle/vault/core/VaultSpec.scala | 3 --- 1 file changed, 3 deletions(-) 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