some more setup/teardown actions

This commit is contained in:
Adam C. Baker
2014-10-08 15:21:18 -07:00
parent f0e8d23dd2
commit 40f3056ef4
+16
View File
@@ -10,6 +10,7 @@ import Database.HDBC.PostgreSQL
import Data.String.Conversions (cs)
import Data.Either (isLeft)
import Control.Exception.Base (bracket, finally)
import Control.Exception.Base (bracket, tryJust)
import Control.Monad (when)
@@ -24,6 +25,7 @@ import qualified Data.ByteString.Char8 as BS
import Network.Wai.Middleware.Cors (cors)
import Dbapi (app, corsPolicy, AppConfig(..))
import PgQuery(addUser)
cfg :: AppConfig
cfg = AppConfig "postgres://dbapi_test:@localhost:5432/dbapi_test" 9000 "test/test.crt" "test/test.key" "dbapi_anonymous"
@@ -45,6 +47,20 @@ dbWithSchema action = withDatabaseConnection $ \c -> do
action c
rollback c
withUser :: BS.ByteString -> BS.ByteString -> BS.ByteString ->
ActionWith Connection -> ActionWith Connection
withUser name pass role action conn = do
addUser name pass role conn
finally (action conn) $ do
_ <- run conn "delete from dbapi.auth where id=?" [toSql name]
runRaw conn "commit"
withApp :: ActionWith Application -> ActionWith Connection
withApp action conn = do
runRaw conn "begin;"
action $ cors corsPolicy $ app conn "dbapi_anonymous"
rollback conn
appWithFixture :: ActionWith Application -> IO ()
appWithFixture action = withDatabaseConnection $ \c -> do
result <- tryJust transactionAborted $ do