hocker-1.0.4: test/Tests/Data/Docker/Nix/FetchDocker.hs
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
-----------------------------------------------------------------------------
-- |
-- Module : Data.Docker.Nix.FetchDocker
-- Copyright : (C) 2017 Awake Networks
-- License : Apache-2.0
-- Maintainer : Awake Networks <opensource@awakenetworks.com>
-- Stability : stable
----------------------------------------------------------------------------
module Tests.Data.Docker.Nix.FetchDocker where
import Control.Exception as CE
import Control.Monad.Except as Except
import Data.ByteString.Lazy.Char8 as C8L
import Data.Either (either)
import qualified Data.Text as Text
import Network.URI
import Test.Tasty
import Test.Tasty.Golden
import Test.Tasty.HUnit
import Text.PrettyPrint.ANSI.Leijen as Text.PrettyPrint (displayS)
import Data.Docker.Image.Types
import Data.Docker.Nix.FetchDocker as Nix.FetchDocker
import Data.Docker.Nix.Lib as Nix.Lib
import Hocker.Lib
import Network.Wreq.Docker.Registry as Docker.Registry
import Hocker.Types
import Hocker.Types.ImageTag
tests = testGroup "FetchDocker Nix Generation Tests"
[ goldenVsString
"Golden vs. Generated `fetchDocker' Nix Expression"
"test/data/golden-debian:jessie.nix"
generateFetchDockerNix
, testCase "Base16 Digest to Base32 Digest" testBase16toBase32
]
testBase16toBase32 :: Assertion
testBase16toBase32 = do
let b16 = Base16Digest "5c90d4a2d1a8dfffd05ff2dd659923f0ca2d843b5e45d030e17abbcd06a11b5b"
b32 = Base32Digest "0nqvl43cvfvsw4qd0iay7f22vjph4fcnbpgjbz8gzpx8s6id942w"
res <- Except.runExceptT (Nix.Lib.toBase32Nix b16)
either
(assertFailure . show)
(assertEqual "" b32)
res
generateFetchDockerNix :: IO C8L.ByteString
generateFetchDockerNix = do
manifest <- C8L.readFile "test/data/manifest-debian:jessie.json"
nixExpression <- Nix.FetchDocker.generate
HockerImageMeta
{ imageRepo = "library"
, imageName = "debian"
, imageTag = ImageTag "jessie"
, manifestJSON = manifest
, dockerRegistry = defaultRegistry
, altImageName = Nothing
}
either
(Hocker.Lib.die . Text.pack . show)
(return . C8L.pack . (flip displayS "") . Hocker.Lib.renderNixExpr)
nixExpression