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.String.Conversions (cs)
import Data.Either (isLeft) import Data.Either (isLeft)
import Control.Exception.Base (bracket, finally)
import Control.Exception.Base (bracket, tryJust) import Control.Exception.Base (bracket, tryJust)
import Control.Monad (when) import Control.Monad (when)
@@ -24,6 +25,7 @@ import qualified Data.ByteString.Char8 as BS
import Network.Wai.Middleware.Cors (cors) import Network.Wai.Middleware.Cors (cors)
import Dbapi (app, corsPolicy, AppConfig(..)) import Dbapi (app, corsPolicy, AppConfig(..))
import PgQuery(addUser)
cfg :: AppConfig cfg :: AppConfig
cfg = AppConfig "postgres://dbapi_test:@localhost:5432/dbapi_test" 9000 "test/test.crt" "test/test.key" "dbapi_anonymous" 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 action c
rollback 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 :: ActionWith Application -> IO ()
appWithFixture action = withDatabaseConnection $ \c -> do appWithFixture action = withDatabaseConnection $ \c -> do
result <- tryJust transactionAborted $ do result <- tryJust transactionAborted $ do