packages feed

hadolint-2.1.0: test/DL3026.hs

module DL3026 (tests) where

import Data.Map as Map
import Data.Text as Text
import Hadolint.Process
import Helpers
import Test.Hspec


tests :: SpecWith ()
tests = do
  let ?rulesConfig = mempty
  describe "DL2036 - Use only an allowed registry in the FROM image" $ do
    it "does not warn on empty allowed registries" $ do
      let dockerFile =
            [ "FROM random.com/debian"
            ]
      ruleCatchesNot "DL3026" $ Text.unlines dockerFile

    it "warn on non-allowed registry" $ do
      let dockerFile =
            [ "FROM random.com/debian"
            ]
      let ?rulesConfig = Hadolint.Process.RulesConfig ["docker.io"] Map.empty False
      ruleCatches "DL3026" $ Text.unlines dockerFile

    it "does not warn on allowed registries" $ do
      let dockerFile =
            [ "FROM random.com/debian"
            ]
      let ?rulesConfig = Hadolint.Process.RulesConfig ["x.com", "random.com"] Map.empty False
      ruleCatchesNot "DL3026" $ Text.unlines dockerFile

    it "doesn't warn on scratch image" $ do
      let dockerFile =
            [ "FROM scratch"
            ]
      let ?rulesConfig = Hadolint.Process.RulesConfig ["x.com", "random.com"] Map.empty False
      ruleCatchesNot "DL3026" $ Text.unlines dockerFile

    it "allows boths all forms of docker.io" $ do
      let dockerFile =
            [ "FROM ubuntu:18.04 AS builder1",
              "FROM zemanlx/ubuntu:18.04 AS builder2",
              "FROM docker.io/zemanlx/ubuntu:18.04 AS builder3"
            ]
      let ?rulesConfig = Hadolint.Process.RulesConfig ["docker.io"] Map.empty False
      ruleCatchesNot "DL3026" $ Text.unlines dockerFile

    it "allows using previous stages" $ do
      let dockerFile =
            [ "FROM random.com/foo AS builder1",
              "FROM builder1 AS builder2"
            ]
      let ?rulesConfig = Hadolint.Process.RulesConfig ["random.com"] Map.empty False
      ruleCatchesNot "DL3026" $ Text.unlines dockerFile