{-# LANGUAGE OverloadedStrings #-} module Ldap.Client.CompareSpec (spec) where import Test.Hspec import qualified Ldap.Asn1.Type as Ldap.Type import Ldap.Client as Ldap import SpecHelper (locally, charmander, charizard) spec :: Spec spec = do it "compares and wins" $ do res <- locally $ \l -> do res <- Ldap.compare l charizard (Attr "type") "fire" res `shouldBe` True res `shouldBe` Right () it "compares and loses" $ do res <- locally $ \l -> do res <- Ldap.compare l charmander (Attr "type") "flying" res `shouldBe` False res `shouldBe` Right () it "tries to compare non-existing object, unsuccessfully" $ do res <- locally $ \l -> do res <- Ldap.compare l (Dn "cn=nope") (Attr "type") "flying" res `shouldBe` False res `shouldBe` Left (Ldap.ResponseError (Ldap.ResponseErrorCode (Ldap.Type.CompareRequest (Ldap.Type.LdapDn (Ldap.Type.LdapString "cn=nope")) (Ldap.Type.AttributeValueAssertion (Ldap.Type.AttributeDescription (Ldap.Type.LdapString "type")) (Ldap.Type.AssertionValue "flying"))) Ldap.NoSuchObject (Dn "") "No tree found for: cn=nope"))