packages feed

craft-0.0.0.1: test/Craft/SSHSpec.hs

module Craft.SSHSpec (spec) where

import           Test.Hspec
import           Test.Hspec.Megaparsec
import qualified Text.Megaparsec       as MP

import           Craft.SSH

spec :: Spec
spec = do
  describe "parseKeyType" $ do
    let parse = MP.parse parseKeyType ""
    it "fails on empty string" $
      parse `shouldFailOn` ""
    it "fails on just prefix" $
      parse `shouldFailOn` "ssh-"
    it "fails on uppercase prefix" $
      parse `shouldFailOn` "SSH-RSA"
    it "parses DSA" $
      parse "ssh-dsa" `shouldParse` DSA
    it "parses RSA" $
      parse "ssh-rsa" `shouldParse` RSA
    it "parses RSA1" $
      parse "ssh-rsa1" `shouldParse` RSA1
    it "parses ECDSA" $
      parse "ssh-ecdsa" `shouldParse` ECDSA
    it "parses ED25519" $
      parse "ssh-ed25519" `shouldParse` ED25519
    it "parses other keytypes" $
      parse "ssh-foobar" `shouldParse` (KeyType "ssh-foobar")
    it "parses mixed case" $
      parse "ssh-rSa" `shouldParse` RSA