packages feed

dhall-secret-0.5.50: test/Spec.hs

module Main where
import           Age
import qualified Data.Text.IO             as TIO
import           Dhall
import           Dhall.Core               (pretty)
import qualified Dhall.Secret             as Lib
import           Dhall.Secret.IO
import           System.Environment       (setEnv)
import           System.Environment.Blank (getEnv)
import           Test.HUnit
testKms = "encrypt decrypt with KMS" ~: snapshot "./test/example01.dhall" "./test/example01.encrypted.dhall"
testAge = "encrypt decrypt with Age Algo" ~: snapshot "./test/example02.dhall" "./test/example02.encrypted.dhall"

main :: IO ()
main = do
  alg <- getEnv "TEST_ALG"
  setEnv "DHALL_SECRET_AGE_KEYS" "AGE-SECRET-KEY-1SR4ZPP77HDEUJJ9MXJPFQFKHNJ57XKUHXW7TFZ6R3AV59M3KHP2S45ZFW9\nAGE-SECRET-KEY-1HKC2ZRPFFY66049G5EWYLT2PMYKTPN6UW6RFEEEN3JEEWTFFFDNQ2QTC8M\nAGE-SECRET-KEY-1GLAZ75TDSSR647WXD0MH3RUU8XGRK6R5SD8UGQ6C6R9MCYR03ULQSUC7D6"
  case alg of
    Just "KMS" ->  runTestTTAndExit (test testKms)
    Just "ALL" -> runTestTTAndExit (test [testKms, testAgeEncryption, testAge])
    _          -> runTestTTAndExit (test [testAgeEncryption, testAge])

snapshot src expect = do
  expr <- TIO.readFile src
  encrypted1 <- parseExpr expr >>= Lib.encrypt >>= prettyExpr
  encrypted2 <- TIO.readFile expect >>= parseExpr
  decrypted1 <- parseExpr encrypted1 >>= Lib.decrypt (Lib.DecryptPreference False) >>= prettyExpr
  decrypted2 <- Lib.decrypt (Lib.DecryptPreference False) encrypted2 >>= prettyExpr
  assertEqual "snapshot" decrypted1 decrypted2