Skip to content
This repository was archived by the owner on Dec 21, 2023. It is now read-only.

Commit

Permalink
Upgrade to CE3, sbt to 1.5.0, scala to 2.13.5/2.12.13 (#4)
Browse files Browse the repository at this point in the history
Use munit for cats effect in test
  • Loading branch information
alexgb1 authored Apr 19, 2021
1 parent 5d5e806 commit 2dfaf11
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 32 deletions.
10 changes: 6 additions & 4 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@ name := "ciris-aws-secretsmanager"
organization := "com.ovoenergy"
licenses += ("MIT", url("http://opensource.org/licenses/MIT"))

scalaVersion := "2.13.4"
crossScalaVersions := Seq(scalaVersion.value, "2.12.10")
scalaVersion := "2.13.5"
crossScalaVersions := Seq(scalaVersion.value, "2.12.13")
releaseCrossBuild := true

libraryDependencies ++= Seq(
"is.cir" %% "ciris" % "1.1.0",
"is.cir" %% "ciris" % "2.0.0-RC2",
"org.typelevel" %% "cats-core" % "2.5.0",
"org.typelevel" %% "cats-effect" % "3.0.0",
"software.amazon.awssdk" % "secretsmanager" % "2.15.58",
"org.scalameta" %% "munit" % "0.7.11" % Test
"org.typelevel" %% "munit-cats-effect-3" % "1.0.1" % Test
)

publishTo := sonatypePublishToBundle.value
Expand Down
2 changes: 1 addition & 1 deletion project/build.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
sbt.version = 1.3.3
sbt.version = 1.5.0
18 changes: 9 additions & 9 deletions src/main/scala/ciris/aws/secretsmanager/SecretString.scala
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
package ciris.aws.secretsmanager

import cats.implicits._
import ciris.{ConfigKey, ConfigValue, Secret}
import software.amazon.awssdk.services.secretsmanager.SecretsManagerAsyncClient
import cats.implicits._
import software.amazon.awssdk.services.secretsmanager.model._

sealed abstract class SecretString {
def apply(key: String): ConfigValue[Secret[String]]
def apply(key: String, version: String): ConfigValue[Secret[String]]
sealed abstract class SecretString[F[_]] {
def apply(key: String): ConfigValue[F, Secret[String]]
def apply(key: String, version: String): ConfigValue[F, Secret[String]]
}

private[secretsmanager] final object SecretString {
final def apply(client: SecretsManagerAsyncClient): SecretString =
new SecretString {
override final def apply(key: String): ConfigValue[Secret[String]] =
final def apply[F[_]](client: SecretsManagerAsyncClient): SecretString[F] =
new SecretString[F] {
override final def apply(key: String): ConfigValue[F, Secret[String]] =
fetch(key, GetSecretValueRequest.builder().secretId(key).build())

def apply(key: String, version: String): ConfigValue[Secret[String]] =
def apply(key: String, version: String): ConfigValue[F, Secret[String]] =
fetch(key, GetSecretValueRequest.builder().secretId(key).versionId(version).build())


private def fetch(key: String, request: GetSecretValueRequest): ConfigValue[Secret[String]] =
private def fetch(key: String, request: GetSecretValueRequest): ConfigValue[F, Secret[String]] =
ConfigValue.async { cb =>
val configKey =
ConfigKey(s"secret string $key from AWS secrets manager")
Expand Down
19 changes: 9 additions & 10 deletions src/main/scala/ciris/aws/secretsmanager/package.scala
Original file line number Diff line number Diff line change
@@ -1,32 +1,31 @@
package ciris.aws

import cats.effect.{IO, Resource}
import cats.effect.kernel.{Resource, Sync}
import ciris.ConfigValue
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider
import software.amazon.awssdk.auth.credentials.{AwsCredentialsProvider, DefaultCredentialsProvider}
import software.amazon.awssdk.services.secretsmanager.SecretsManagerAsyncClient
import software.amazon.awssdk.services.secretsmanager.SecretsManagerAsyncClientBuilder

package object secretsmanager {
def secrets(
def secrets[F[_]: Sync](
region: Region
): ConfigValue[SecretString] =
): ConfigValue[F, SecretString[F]] =
secrets(SecretsManagerAsyncClient.builder().region(region.asJava).credentialsProvider(DefaultCredentialsProvider.create()))

def secrets(
def secrets[F[_]: Sync](
clientBuilder: SecretsManagerAsyncClientBuilder
): ConfigValue[SecretString] =
): ConfigValue[F, SecretString[F]] =
ConfigValue.resource {
Resource {
IO {
Sync[F].delay {
val client =
clientBuilder
.build()

val shutdown =
IO(client.close())
Sync[F].delay(client.close())

(ConfigValue.default(SecretString(client)), shutdown)
(ConfigValue.default(SecretString[F](client)), shutdown)
}
}
}
Expand Down
11 changes: 3 additions & 8 deletions src/test/scala/ciris/aws/secretsmanager/RegionSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,17 @@ package ciris.aws.secretsmanager

import cats.effect.IO
import ciris.ConfigValue
import munit.FunSuite
import munit.CatsEffectSuite

import scala.concurrent.ExecutionContext


class RegionSpec extends FunSuite {

implicit val cs = IO.contextShift(ExecutionContext.global)
class RegionSpec extends CatsEffectSuite {

test("should convert a region string to a Region") {

val region = ConfigValue.default("eu-west-1")
.as[Region]
.load[IO]
.unsafeRunSync()

assertEquals(region, Region.EU_WEST_1)
region.assertEquals(Region.EU_WEST_1)
}
}

0 comments on commit 2dfaf11

Please sign in to comment.