rpf-0.2.0: Test.hs
{-# LANGUAGE OverloadedStrings #-}
module Test where
import Control.Applicative
import Data.Map as M
import Data.IP
import Data.IP.RouteTable as T
import Network.DomainAuth
import RPF.Parser
import RPF.Types
import RPF.IP
import Test.Framework (defaultMain, testGroup, Test)
import Test.Framework.Providers.HUnit
import Test.HUnit hiding (Test)
tests :: [Test]
tests = [
testGroup "Policy" [
testCase "policy1" test_policy1
-- , testCase "policy2" test_policy2
]
]
----------------------------------------------------------------
test_policy1 :: Assertion
test_policy1 = do
plcy <- parsePolicy <$> readFile "config/rpf.policy"
plcy @?= res
where
res = Policy [
Block B_Connect [ActionCond 3 (Just ((DT_IP,V_IP) :== (DT_IP,CV_Index 0))) A_Accept,ActionCond 4 Nothing A_Continue]
, Block B_MailFrom [ActionCond 9 (Just ((DT_Res,V_SPF) :== (DT_Res,CV_Result [DAPass]))) A_Accept,ActionCond 10 Nothing A_Continue]
, Block B_Header [ActionCond 15 (Just ((DT_Res,V_SID) :== (DT_Res,CV_Result [DAPass]))) A_Accept,ActionCond 16 (Just (((DT_Dom,V_MAILFROM) :== (DT_Dom,CV_Index 0)) :&& ((DT_Sig,V_SIGDK) :== (DT_Sig,CV_Sig False)))) A_Reject,ActionCond 17 Nothing A_Continue]
, Block B_Body [ActionCond 22 (Just ((DT_Res,V_DKIM) :== (DT_Res,CV_Result [DAPass]))) A_Accept,ActionCond 23 (Just ((DT_Res,V_DK) :== (DT_Res,CV_Result [DAPass]))) A_Accept,ActionCond 24 Nothing A_Continue]
]
[IPTable (T.fromList [(makeAddrRange (toIPv4 [127,0,0,1]) 32,True)]) T.empty]
[M.fromList [("yahoo.com",True)]]
----------------------------------------------------------------
main :: IO ()
main = defaultMain tests