packages feed

http-client-websockets-0.1.0.0: test/Spec.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}

module Main (main) where

import Data.ByteString
import Data.Foldable (for_)
import Network.HTTP.Client.TLS (newTlsManager)
import Network.HTTP.Client.WebSockets as HCWS
import Network.URI.Static
import qualified Network.WebSockets as WS
import Test.Hspec

main :: IO ()
main = hspec $
  describe "WebSockets via http-client" $ do
    it "should connect to an echo server" $ do
      mgr <- newTlsManager
      for_ [[uri|ws://echo.websocket.org|], [uri|wss://echo.websocket.org|]] $ \u ->
        HCWS.runClient mgr u $ \conn -> do
          let bs = "test" :: ByteString
          WS.sendTextData conn bs
          bs' <- WS.receiveData conn
          bs `shouldBe` bs'