diff --git a/Network/Connection/Conduit.hs b/Network/Connection/Conduit.hs
--- a/Network/Connection/Conduit.hs
+++ b/Network/Connection/Conduit.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE RankNTypes #-}
--- | A @conduit@ source and sink based on "Network.Connection" from the
--- @connection@ package, and ResourceT aware constructors.
+-- | A @conduit@ source and sink based on "Network.Connection", and
+-- "Control.Monad.Trans.Resource#t:ResourceT" aware constructors.
 module Network.Connection.Conduit
     ( -- * Source and sink
       sourceConnection
@@ -39,13 +39,13 @@
   where
     loop = await >>= maybe (return ()) (\bs -> lift (liftIO $ C.connectionPut connection bs) >> loop)
 
--- | Create a new connection from a handle. See 'Network.Connection.connectFromHandle'.
+-- | Create a new connection from a handle. See "Network.Connection.connectFromHandle".
 connectFromHandle :: (MonadResource m) => C.ConnectionContext -> Handle -> C.ConnectionParams -> m C.Connection
 connectFromHandle ctx h params = do
     (_, c) <- liftResourceT $ allocate (C.connectFromHandle ctx h params) C.connectionClose
     return c
 
--- | Create a new connection. See 'Network.Connection.connectTo'.
+-- | Create a new connection. See "Network.Connection.connectTo".
 connectTo :: (MonadResource m) => C.ConnectionContext -> C.ConnectionParams -> m C.Connection
 connectTo ctx params = do
     (_, c) <- liftResourceT $ allocate (C.connectTo ctx params) C.connectionClose
diff --git a/conduit-connection.cabal b/conduit-connection.cabal
--- a/conduit-connection.cabal
+++ b/conduit-connection.cabal
@@ -1,8 +1,9 @@
 name:                conduit-connection
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            Conduit source and sink for Network.Connection.
 description:
-    @conduit-connection@ provides a @conduit@ source and sink based on @connection@.
+    @conduit-connection@ provides a "Data.Conduit" source and sink based on
+    "Network.Connection".
 homepage:            https://github.com/sdroege/conduit-connection
 license:             BSD3
 license-file:        LICENSE
@@ -18,10 +19,29 @@
                      , transformers >= 0.2 && < 0.5
                      , bytestring >=0.10 && <0.11
                      , resourcet >= 1.1 && < 1.2
-                     , conduit >=1.1 && <1.2
+                     , conduit >=1.1 && <1.3
                      , connection >=0.2 && <0.3
   default-language:    Haskell2010
   ghc-options:         -Wall
+
+test-suite Tests
+  type:               exitcode-stdio-1.0
+  x-uses-tf:          true
+  build-depends:      base == 4.*
+                    , transformers >= 0.2 && < 0.5
+                    , network == 2.*
+                    , HUnit >= 1.2 && < 2
+                    , test-framework >= 0.4.1
+                    , test-framework-hunit
+                    , bytestring
+                    , connection
+                    , resourcet >= 1.1 && < 1.2
+                    , conduit >= 1.1 && < 1.3
+                    , conduit-connection
+  ghc-options:        -Wall
+  hs-source-dirs:     tests
+  default-language:   Haskell2010
+  main-is:            Tests.hs
 
 source-repository head
   type:     git
diff --git a/tests/Tests.hs b/tests/Tests.hs
new file mode 100644
--- /dev/null
+++ b/tests/Tests.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE OverloadedStrings #-}
+module Main where
+
+import qualified Data.ByteString as B
+
+import Control.Concurrent (forkIO)
+import Control.Concurrent.MVar
+import Control.Monad
+import Control.Monad.Trans.Resource
+import Control.Monad.IO.Class (liftIO)
+
+import Network.Connection
+
+import Data.Conduit
+import qualified Data.Conduit.List as CL
+import qualified Network.Connection.Conduit as CCon
+
+import Network.Socket hiding (send, sendTo, recv, recvFrom)
+import Network.Socket.ByteString
+
+import Test.HUnit
+
+import Test.Framework as TF (defaultMain, testGroup, Test)
+import Test.Framework.Providers.HUnit
+
+main :: IO ()
+main = defaultMain tests
+
+setupSocket :: IO (Socket, PortNumber)
+setupSocket = do
+    let addr = SockAddrInet aNY_PORT iNADDR_ANY
+
+    s <- socket AF_INET Stream defaultProtocol
+    bind s addr
+    listen s 5
+
+    p <- socketPort s
+
+    return (s, p)
+
+testSinkConnection :: Assertion
+testSinkConnection = do
+    (s, p) <- setupSocket
+
+    let input = ["abcde", "fghij", "klmno"]
+
+    mOutput <- newEmptyMVar
+
+    _ <- forkIO $ do
+        (s', _) <- accept s
+
+        let recvAll l = do
+                            b <- recv s' 4096
+                            if b == B.empty then
+                                return l
+                            else
+                                recvAll (l ++ [b])
+        o <- recvAll []
+        putMVar mOutput o
+        close s'
+
+    runResourceT $ do
+        ctx <- liftIO initConnectionContext
+        c <- CCon.connectTo ctx (ConnectionParams "localhost" p Nothing Nothing)
+        CL.sourceList input $$ CCon.sinkConnection c
+
+    output <- takeMVar mOutput
+
+    B.concat input @=? B.concat output
+
+    close s
+
+testSourceConnection :: Assertion
+testSourceConnection = do
+    (s, p) <- setupSocket
+
+    let input = ["abcde", "fghij", "klmno"]
+
+    _ <- forkIO $ do
+        (s', _) <- accept s
+        forM_ input (send s')
+        close s'
+
+    output <- runResourceT $ do
+        ctx <- liftIO initConnectionContext
+        c <- CCon.connectTo ctx (ConnectionParams "localhost" p Nothing Nothing)
+        CCon.sourceConnection c $$ CL.fold (\a b -> a ++ [b]) []
+
+    B.concat input @=? B.concat output
+
+    close s
+
+tests :: [TF.Test]
+tests = [
+            testGroup "HUnit tests Network.Connection.Conduit" [
+                  testCase "sourceConnection" testSourceConnection
+                , testCase "sinkConnection" testSinkConnection
+            ]
+        ]
