some more setup/teardown actions
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user