sel-0.1.0.0: test/Test/Hashing/SHA2.hs
{-# LANGUAGE OverloadedStrings #-}
module Test.Hashing.SHA2 where
import Data.Text (Text)
import Test.Tasty
import Test.Tasty.HUnit
import qualified Sel.Hashing.SHA256 as SHA256
import qualified Sel.Hashing.SHA512 as SHA512
spec :: TestTree
spec =
testGroup
"SHA2 hashing"
[ testGroup
"SHA-256"
[ testCase "SHA-256 single-message hashing" testSingleHashSHA256
, testCase "SHA-256 multi-part message hashing" testMultipartHashSH256
]
, testGroup
"SHA-512"
[ testCase "SHA-512 single-message hashing" testSingleHashSHA512
, testCase "SHA-512 multi-part message hashing" testMultipartHashSH512
]
]
testSingleHashSHA512 :: Assertion
testSingleHashSHA512 = do
let password = "hunter2" :: Text
actual = SHA512.hashText password
assertEqual
"SHA-512 hashing is consistent"
(SHA512.hashToHexByteString actual)
"6b97ed68d14eb3f1aa959ce5d49c7dc612e1eb1dafd73b1e705847483fd6a6c809f2ceb4e8df6ff9984c6298ff0285cace6614bf8daa9f0070101b6c89899e22"
testMultipartHashSH512 :: Assertion
testMultipartHashSH512 = do
actual <- SHA512.withMultipart $ \multipart -> do
SHA512.updateMultipart multipart "hunter"
SHA512.updateMultipart multipart "2"
assertEqual
"SHA-512 hashing is consistent"
(SHA512.hashToHexByteString actual)
"6b97ed68d14eb3f1aa959ce5d49c7dc612e1eb1dafd73b1e705847483fd6a6c809f2ceb4e8df6ff9984c6298ff0285cace6614bf8daa9f0070101b6c89899e22"
testSingleHashSHA256 :: Assertion
testSingleHashSHA256 = do
let password = "hunter2" :: Text
actual = SHA256.hashText password
assertEqual
"SHA-256 hashing is consistent"
(SHA256.hashToHexByteString actual)
"f52fbd32b2b3b86ff88ef6c490628285f482af15ddcb29541f94bcf526a3f6c7"
testMultipartHashSH256 :: Assertion
testMultipartHashSH256 = do
actual <- SHA256.withMultipart $ \multipart -> do
SHA256.updateMultipart multipart "hunter"
SHA256.updateMultipart multipart "2"
assertEqual
"SHA-256 hashing is consistent"
(SHA256.hashToHexByteString actual)
"f52fbd32b2b3b86ff88ef6c490628285f482af15ddcb29541f94bcf526a3f6c7"