packages feed

botan-low-0.1.0.0: test/Test/Botan/Low/Bcrypt.hs

{-# LANGUAGE OverloadedStrings #-}

module Test.Botan.Low.Bcrypt (tests) where

import           Botan.Low.Bcrypt
import           Botan.Low.RNG
import           Data.ByteString
import           Test.Hspec
import           Test.Tasty
import           Test.Tasty.Hspec
import           Test.Util.Hspec

tests :: IO TestTree
tests = do
    specs <- testSpec "spec_bcrypt" spec_bcrypt
    pure $ testGroup "Test.Botan.Low.Bcrypt" [
        specs
      ]

password :: ByteString
password = "Fee fi fo fum!"

factor :: BcryptWorkFactor
factor = 12

spec_bcrypt :: Spec
spec_bcrypt = do
    describe "bcryptGenerate" $ do
        it "generates a bcrypt hash" $ do
            rng <- rngInit "user-threadsafe"
            _ <- bcryptGenerate password rng factor
            pass
    describe "bcryptIsValid" $ do
        it "validates a bcrypt hash" $ do
            rng <- rngInit "user-threadsafe"
            h <- bcryptGenerate password rng factor
            valid <- bcryptIsValid password h
            valid `shouldBe` True