packages feed

couchdb-conduit-0.8.3: test/Database/CouchDB/Conduit/Test/Base.hs

{-# LANGUAGE OverloadedStrings #-} 

-- | base tests
module Database.CouchDB.Conduit.Test.Base (tests) where

import Test.Framework (testGroup, mutuallyExclusive, Test)
import Test.Framework.Providers.HUnit (testCase)
import Test.HUnit (Assertion, (@=?))

import CouchDBAuth

import Control.Monad.IO.Class (liftIO)

import qualified Data.ByteString as B

import qualified Network.HTTP.Conduit as H
import qualified Network.HTTP.Types as HT

import Database.CouchDB.Conduit
import Database.CouchDB.Conduit.DB
import Database.CouchDB.Conduit.LowLevel

tests :: Test
tests = mutuallyExclusive $ testGroup "Base" [
    testCase "Just connect" caseJustConnect,
    testCase "Put and delete DB" caseDbPut
    ]

-- | Just connect
caseJustConnect :: Assertion
caseJustConnect = runCouch def $ do
    H.Response (HT.Status sc _) _ _h _bsrc <- couch HT.methodGet "" [] [] 
                    (H.RequestBodyBS B.empty) protect'
    liftIO $ sc @=? 200

-- | Put and delete
caseDbPut :: Assertion    
caseDbPut =  runCouch def {couchLogin = login, 
                            couchPass=pass} $ do
    couchPutDB_ "cdbc_dbputdel"
    couchDeleteDB "cdbc_dbputdel"