Tests compile, run, and fail

Temporarily disabled unit tests
This commit is contained in:
Joe Nelson
2014-12-06 17:42:19 -08:00
parent d791f3939e
commit dd2adf4daa
10 changed files with 93 additions and 87 deletions
+16 -14
View File
@@ -4,11 +4,12 @@ import Network.Wai
import Test.Hspec
import Test.Hspec.Wai
import Database.HDBC
import Database.HDBC.PostgreSQL
import Database.PostgreSQL.Simple
import Database.PostgreSQL.Simple.Types
import Data.String.Conversions (cs)
import Control.Exception.Base (bracket, finally)
import Control.Monad (void)
import Network.HTTP.Types.Header (Header, ByteRange, renderByteRange,
hRange, hAuthorization)
@@ -20,8 +21,9 @@ import Network.Wai.Middleware.Cors (cors)
import Middleware(clientErrors, withSavepoint, authenticated, Environment(..))
import Dbapi (app, corsPolicy, AppConfig(..))
import PgQuery(addUser)
import App (app)
import Config (corsPolicy, AppConfig(..))
import Auth (addUser)
isLeft :: Either a b -> Bool
isLeft (Left _ ) = True
@@ -31,41 +33,41 @@ cfg :: AppConfig
cfg = AppConfig "postgres://dbapi_test:@localhost:5432/dbapi_test" 9000 "dbapi_anonymous" False 10
openConnection :: IO Connection
openConnection = connectPostgreSQL' $ configDbUri cfg
openConnection = connectPostgreSQL $ cs $ configDbUri cfg
withDatabaseConnection :: (Connection -> IO ()) -> IO ()
withDatabaseConnection = bracket openConnection disconnect
withDatabaseConnection = bracket openConnection close
loadFixture :: String -> Connection -> IO ()
loadFixture name conn = do
sql <- readFile $ "test/fixtures/" ++ name ++ ".sql"
runRaw conn sql
void $ execute_ conn $ Query (cs sql)
dbWithSchema :: ActionWith Connection -> IO ()
dbWithSchema action = withDatabaseConnection $ \c -> do
runRaw c "begin;"
_ <- execute_ c "begin;"
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
_ <- addUser conn name pass role
finally (action conn) $ do
_ <- run conn "delete from dbapi.auth where id=?" [toSql name]
runRaw conn "commit"
_ <- execute conn "delete from dbapi.auth where id=?" $ Only name
execute_ conn "commit"
withApp :: ActionWith Application -> ActionWith Connection
withApp action conn = do
runRaw conn "begin;"
_ <- execute_ conn "begin;"
action $ cors corsPolicy $ authenticated "dbapi_anonymous" app conn
rollback conn
appWithFixture :: ActionWith Application -> IO ()
appWithFixture action = withDatabaseConnection $ \c -> do
runRaw c "begin;"
_ <- execute_ c "begin;"
action $ cors corsPolicy . clientErrors $
(authenticated "dbapi_anonymous" . withSavepoint Test) app c
(authenticated "dbapi_anonymous" . Middleware.withSavepoint Test) app c
rollback c
rangeHdrs :: ByteRange -> [Header]