packages feed

aws-sns-verify-0.0.0.0: tests/Amazon/SNS/Verify/TestPrelude.hs

module Amazon.SNS.Verify.TestPrelude
  ( module X
  , module Amazon.SNS.Verify.TestPrelude
  ) where

import Prelude as X

import Control.Concurrent.Async
import Control.Concurrent.MVar
import Data.Text as X (Text)
import Network.HTTP.Types.Status
import Network.Wai
import Network.Wai.Handler.Warp
import Test.Hspec as X

useCertServer :: IO () -> IO ()
useCertServer action = do
  (setReady, whenReady) <- initReadyState
  race_ (whenReady action)
    $ runSettings (setBeforeMainLoop setReady . setPort 3000 $ defaultSettings)
    $ \_req send -> send $ responseFile
        ok200
        [("Content-Type", "text/plain")]
        "./tests/cert.pem"
        Nothing
 where
  initReadyState = do
    ready <- newEmptyMVar
    return (putMVar ready (), withMVar ready . const)