{-# LANGUAGE OverloadedStrings #-} module Session(spec) where import Control.Arrow import Control.Lens import Control.Lens.Extras (is) import Data.IP import Test.Hspec import Config import OpenTok import OpenTok.Session import OpenTok.Types ot :: OpenTok ot = opentok testKey testSecret spec :: Spec spec = do defaultSessionSpec customSessionSpec invalidCredentialsSpec defaultSessionSpec :: Spec defaultSessionSpec = describe "A session created with default options" $ do it "should have default session properties" $ do session <- createSession ot sessionOpts session `shouldSatisfy` is _Right right mediaMode session `shouldBe` Right Relayed right archiveMode session `shouldBe` Right Manual right location session `shouldBe` Right Nothing customSessionSpec :: Spec customSessionSpec = describe "A session created with custom options" $ do it "should have matching session properties" $ do let loc = Just $ ipv4 "10.1.200.30" session <- createSession ot sessionOpts { _mediaMode = Routed, _archiveMode = Always, _location = loc } session `shouldSatisfy` is _Right right mediaMode session `shouldBe` Right Routed right archiveMode session `shouldBe` Right Always right location session `shouldBe` Right loc invalidCredentialsSpec :: Spec invalidCredentialsSpec = describe "A session created with invalid credentials" $ do it "should return an error" $ do let invalidOT = opentok "123456" "123456789123456789123456789" session <- createSession invalidOT sessionOpts session `shouldSatisfy` is _Left