hercules-ci-cli-0.1.0: test/Hercules/CLI/CredentialsSpec.hs
{-# LANGUAGE BlockArguments #-}
module Hercules.CLI.CredentialsSpec where
import qualified Data.Map as M
import Hercules.CLI.Credentials
import Test.Hspec
import Test.QuickCheck
import Prelude
spec :: Spec
spec = do
describe "urlDomain" do
it "parses the default" \_ -> do
urlDomain "https://hercules-ci.com" `shouldBe` Right "hercules-ci.com"
it "parses away trailing slash" \_ -> do
urlDomain "https://hercules-ci.com/" `shouldBe` Right "hercules-ci.com"
it "works with http if you really want" \_ -> do
urlDomain "http://private-hercules-ci.bizz.biz" `shouldBe` Right "private-hercules-ci.bizz.biz"
it "reports parse error (1)" \_ -> do
urlDomain "aburaoernqeg9" `shouldBe` Left "could not parse HERCULES_CI_API_BASE_URL"
it "reports parse error (2)" \_ -> do
urlDomain "http:///" `shouldBe` Left "HERCULES_CI_API_BASE_URL domain name must not be empty"
it "reports parse error (3)" \_ -> do
urlDomain "http:/" `shouldBe` Left "HERCULES_CI_API_BASE_URL has no domain/authority part"
describe "parseCredentials" do
it "parses v0 format (empty)" \_ -> do
fmap Blind (parseCredentials "path" "{ \"domains\": {} }") `shouldBe` fmap Blind (Right (Credentials mempty))
it "parses v0 format" \_ -> do
fmap Blind (parseCredentials "path" "{ \"domains\": { \"hercules-ci.com\": { \"personalToken\": \"tok\" } } }")
`shouldBe` fmap Blind (Right (Credentials $ M.singleton "hercules-ci.com" (DomainCredentials {personalToken = "tok"})))