hercules-ci-api-agent-0.4.6.0: test/Hercules/API/Agent/Evaluate/EvaluateEvent/AttributeEffectEventSpec.hs
module Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeEffectEventSpec where
import Data.Aeson (Value, eitherDecode, encode)
import qualified Data.ByteString.Lazy as BL
import qualified Data.Map as M
import Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeEffectEvent (AttributeEffectEvent (AttributeEffectEvent), GitToken (MkGitToken), SecretRef (..), SimpleSecret (MkSimpleSecret))
import qualified Hercules.API.Agent.Evaluate.EvaluateEvent.AttributeEffectEvent
import Test.Hspec
import Prelude
objectV1 :: AttributeEffectEvent
objectV1 =
AttributeEffectEvent
{ expressionPath = ["effects", "doIt"],
derivationPath = "/nix/store/bar.drv",
secretsToUse =
M.fromList
[ ("foo", (SimpleSecret MkSimpleSecret {name = "default-foo"})),
("bar", (GitToken MkGitToken {}))
]
}
jsonV1 :: BL.ByteString
jsonV1 = "{\"derivationPath\":\"/nix/store/bar.drv\",\"expressionPath\":[\"effects\",\"doIt\"],\"secretsToUse\":{\"bar\":{\"contents\":[],\"tag\":\"GitToken\"},\"foo\":{\"contents\":{\"name\":\"default-foo\"},\"tag\":\"SimpleSecret\"}}}"
spec :: Spec
spec = do
describe "AttributeEventSpec" $ do
describe "FromJSON" $ do
it "parses v1 correctly" $ do
eitherDecode jsonV1 `shouldBe` Right objectV1
describe "ToJSON" $ do
it "encodes correctly" $ do
json (encode objectV1) `shouldBe` json jsonV1
json :: BL.ByteString -> Value
json lbs =
case eitherDecode lbs of
Left e -> error e
Right r -> r