Skip to content

Commit

Permalink
adding in a trait for IAMPolicyVersions
Browse files Browse the repository at this point in the history
  • Loading branch information
T.J. Corrigan committed Apr 29, 2016
1 parent c446b80 commit 0da468c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
Expand Up @@ -205,7 +205,17 @@ case class Policy(PolicyName: String, PolicyDocument: PolicyDocument)
object Policy extends DefaultJsonProtocol {
implicit val format: JsonFormat[Policy] = jsonFormat2(Policy.apply)
}
case class PolicyDocument(Statement: Seq[PolicyStatement], Version : Option[String] = None)

case class PolicyDocument(Statement: Seq[PolicyStatement], Version : Option[IAMPolicyVersion] = None)
object PolicyDocument extends DefaultJsonProtocol {
implicit val format: JsonFormat[PolicyDocument] = jsonFormat2(PolicyDocument.apply)
}

sealed trait IAMPolicyVersion
object IAMPolicyVersion extends DefaultJsonProtocol {
case object `2012-10-17` extends IAMPolicyVersion
case object `2008-10-17` extends IAMPolicyVersion

val values = Seq(`2012-10-17`, `2008-10-17`)
implicit val format: JsonFormat[IAMPolicyVersion] = new EnumFormat[IAMPolicyVersion](values)
}
Expand Up @@ -99,5 +99,21 @@ class IAMPolicy_UT extends FunSpec with Matchers with JsonWritingMatcher {
|}
""".stripMargin
}

it("should generate policy document with a version") {
PolicyDocument(
Statement = Seq(PolicyStatement(Effect = "Allow",Action = Seq("*"))),
Version = Some(IAMPolicyVersion.`2012-10-17`)
) shouldMatch
"""
|{
| "Statement": [{
| "Effect": "Allow",
| "Action": ["*"]
| }],
| "Version": "2012-10-17"
|}
""".stripMargin
}
}
}

0 comments on commit 0da468c

Please sign in to comment.