packages feed

yu-auth-0.1.0.0: test-src/test-core.hs

module Main where

import           Control.Monad.Random
import           Data.Char
import           Data.String
import           System.Exit
import           System.Random
import           Yu.Auth.Core


import qualified Yu.Import.ByteString as B

main :: IO ()
main = do
  putStrLn "Yu.Auth.Core test"
  str <- mkRandomStrMax 100
  let token = generateHash SHA1 str
      rt1   = verifyHash SHA1         str  token
      rt2   = verifyHash SHA1 (B.init str) token
  print (rt1,rt2)
  if rt1 && (not rt2) then exitSuccess
    else exitFailure

mkRandomStr :: IsString str => Int -> IO str
mkRandomStr len = fromString . ((chr . (`mod` 128)) <$>) . take len <$> getRandoms

mkRandomStrMax :: IsString str => Int -> IO str
mkRandomStrMax len = (`mod` len) <$> getRandom >>= mkRandomStr