package com.monsanto.arch.cloudformation.model.resource import com.monsanto.arch.cloudformation.model.{ Token, `Fn::Sub` } import org.scalatest.{ FunSpec, Matchers } import spray.json._ class Events_UT extends FunSpec with Matchers { describe("RuleTarget") { it("Should serialize") { val t = RuleTarget( Arn = "arn", Id = "id", Input = Some(JsObject( "a" -> JsNumber(5), "b" -> JsBoolean(false) ).compactPrint)) t.toJson.compactPrint shouldEqual raw"""{"Arn":"arn","Id":"id","Input":"{\"a\":5,\"b\":false}"}""" } it("Should serialize sub") { val sub: Token[String] = `Fn::Sub`( JsObject( "a" -> JsString(raw"$${AWS::Region}"), "b" -> JsString(raw"$${FOO}") ).compactPrint, Some(Map("FOO" -> "BAR")) ) val t = RuleTarget( Arn = "arn", Id = "id", Input = Some(sub) ) t.toJson.compactPrint shouldEqual raw"""{"Arn":"arn","Id":"id","Input":{"Fn::Sub":["{\"a\":\"$${AWS::Region}\",\"b\":\"$${FOO}\"}",{"FOO":"BAR"}]}}""" } } }