ldap-client-0.2.0: test/Ldap/Client/BindSpec.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}
module Ldap.Client.BindSpec (spec) where
#if __GLASGOW_HASKELL__ < 710
import Data.Monoid (mempty)
#endif
import Test.Hspec
import qualified Ldap.Asn1.Type as Ldap.Type
import Ldap.Client as Ldap
import SpecHelper (locally)
spec :: Spec
spec = do
it "binds as ‘admin’" $ do
res <- locally $ \l ->
Ldap.bind l (Dn "cn=admin") (Password "secret")
res `shouldBe` Right ()
it "tries to bind as ‘admin’ with the wrong password, unsuccessfully" $ do
res <- locally $ \l ->
Ldap.bind l (Dn "cn=admin") (Password "public")
res `shouldBe` Left
(Ldap.ResponseError
(Ldap.ResponseErrorCode
(Ldap.Type.BindRequest 3
(Ldap.Type.LdapDn (Ldap.Type.LdapString "cn=admin"))
(Ldap.Type.Simple "public"))
Ldap.InvalidCredentials
(Dn "cn=admin")
"InvalidCredentialsError"))
it "binds as ‘pikachu’" $ do
res <- locally $ \l -> do
Ldap.bind l (Dn "cn=admin") (Password "secret")
[Ldap.SearchEntry udn _]
<- Ldap.search l (Dn "o=localhost") mempty (Attr "cn" := "pikachu") []
Ldap.bind l udn (Password "i-choose-you")
res `shouldBe` Right ()