packages feed

cachix-0.5.0: test/InstallationModeSpec.hs

module InstallationModeSpec where

import Cachix.Client.InstallationMode
import qualified Cachix.Client.NixConf as NixConf
import Protolude
import Test.Hspec

defautUseOptions :: UseOptions
defautUseOptions =
  UseOptions
    { useMode = Nothing,
      useOutputDirectory = Nothing,
      useNixOSFolder = "/etc/nixos"
    }

spec :: Spec
spec = describe "getInstallationMode" $ do
  it "NixOS with root prints configuration" $
    let nixenv =
          NixEnv
            { isTrusted = True, -- any
              isRoot = True,
              isNixOS = True
            }
     in getInstallationMode nixenv defautUseOptions `shouldBe` WriteNixOS
  it "NixOS without trust prints steps to follow" $
    let nixenv =
          NixEnv
            { isTrusted = False,
              isRoot = False,
              isNixOS = True
            }
     in getInstallationMode nixenv defautUseOptions `shouldBe` UntrustedNixOS
  it "NixOS without trust prints steps to follow" $
    let nixenv =
          NixEnv
            { isTrusted = False,
              isRoot = False,
              isNixOS = True
            }
     in getInstallationMode nixenv defautUseOptions `shouldBe` UntrustedNixOS
  it "NixOS non-root trusted results into local install" $
    let nixenv =
          NixEnv
            { isTrusted = True,
              isRoot = False,
              isNixOS = True
            }
     in getInstallationMode nixenv defautUseOptions `shouldBe` Install NixConf.Local
  it "non-NixOS root results into global install" $
    let nixenv =
          NixEnv
            { isTrusted = True,
              isRoot = True,
              isNixOS = False
            }
     in getInstallationMode nixenv defautUseOptions `shouldBe` Install NixConf.Global
  it "non-NixOS with Nix 1.X root results into global install" $
    let nixenv =
          NixEnv
            { isTrusted = True,
              isRoot = True,
              isNixOS = False -- any
            }
     in getInstallationMode nixenv defautUseOptions `shouldBe` Install NixConf.Global
  it "non-NixOS non-root trusted results into local install" $
    let nixenv =
          NixEnv
            { isTrusted = True,
              isRoot = False,
              isNixOS = False
            }
     in getInstallationMode nixenv defautUseOptions `shouldBe` Install NixConf.Local
  it "non-NixOS non-root non-trusted results into required sudo" $
    let nixenv =
          NixEnv
            { isTrusted = False,
              isRoot = False,
              isNixOS = False
            }
     in getInstallationMode nixenv defautUseOptions `shouldBe` UntrustedRequiresSudo