packages feed

hsaml2-0.1.2: test/Bindings/HTTPRedirect.hs

module Bindings.HTTPRedirect (tests) where

import qualified Data.ByteString.Char8 as BSC
import Data.Time (UTCTime(..), fromGregorian)
import qualified Test.HUnit as U
import Data.ByteString.Char8 (unpack)
import Network.HTTP.Types.URI (renderQuery)

import SAML2.XML
import SAML2.Core.Versioning
import SAML2.Core.Identifiers
import SAML2.Core.Assertions
import SAML2.Core.Protocols
import SAML2.Bindings.HTTPRedirect

import XML
import XML.Keys

tests :: U.Test
tests = U.test
  [ U.TestCase $ do 
      let baseURI = "https://ServiceProvider.com/SAML/SLO/Browser"
          request = 
            (RequestLogoutRequest $ LogoutRequest
              (RequestAbstractType $ ProtocolType
                "d2b7c388cec36fa7c39c28fd298644a8"
                SAML20
                (UTCTime (fromGregorian 2004 1 21) (19*60*60+49))
                (Just $ uri baseURI)
                (Identified ConsentUnspecified)
                (Just $ Issuer $ simpleNameID NameIDFormatEntity "https://IdentityProvider.com/SAML")
                Nothing
                []
                (Just $ BSC.pack "0043bfc1bc45110dae17004005b13a2b"))
              Nothing
              Nothing
              (NotEncrypted $ IdentifierName $ simpleNameID NameIDFormatPersistent "005a06e0-ad82-110d-a556-004005b13a2b")
              ["1"])
      query <- unpack . renderQuery True <$> encodeQuery (Just privkey1) request
      decodedRequest <- decodeURI pubkey1 (uri $ baseURI ++ query)
      U.assertEqual "request" request decodedRequest
  , U.TestCase $ do
      let baseURI = "https://IdentityProvider.com/SAML" 
          resp = (LogoutResponse $ StatusResponseType
                          (ProtocolType
                            "b0730d21b628110d8b7e004005b13a2b"
                            SAML20
                            (UTCTime (fromGregorian 2004 1 21) (19*60*60+49))
                            (Just $ uri baseURI)
                            (Identified ConsentUnspecified)
                            (Just $ Issuer $ simpleNameID NameIDFormatEntity "https://ServiceProvider.com/SAML")
                            Nothing
                            []
                            (Just $ BSC.pack "0043bfc1bc45110dae17004005b13a2b"))
                          (Just "d2b7c388cec36fa7c39c28fd298644a8")
                          successStatus)
      query <- unpack . renderQuery True <$> encodeQuery (Just privkey1) resp
      decodedResponse <- decodeURI pubkey1 (uri $ baseURI ++ query)
      U.assertEqual "response" resp decodedResponse
  ]