hsyslog-udp-0.2.0: test/System/Posix/Syslog/UDPSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module System.Posix.Syslog.UDPSpec (spec) where
import Data.Time.Clock (UTCTime)
import Data.Time.Format (defaultTimeLocale, parseTimeM)
import System.Posix.Syslog.UDP
import Test.Hspec
spec :: Spec
spec = do
let upTo x = [minBound..x]
noMask = [minBound..maxBound]
describe "maskedPriVal" $ do
it "returns a Just if priorities remain after masking" $
let result = maskedPriVal (upTo Debug) Local4 Notice
in result `shouldBe` Just (PriVal 165)
it "returns Nothing if all priorities are masked" $
let result = maskedPriVal (upTo Info) User Debug
in result `shouldBe` Nothing
describe "rfc5424Packet" $ do
let (Just priVal) = maskedPriVal noMask User Debug
it "uses the NILVALUE for Nothing values" $
let
time = Nothing :: Maybe UTCTime
result = rfc5424Packet priVal time Nothing Nothing Nothing Nothing Nothing "test log message"
expected = "<15>1 - - - - - - test log message"
in
result `shouldBe` expected
it "uses the NILVALUE for empty bytestring values" $
let
time = Nothing :: Maybe UTCTime
result = rfc5424Packet priVal time (Just $ HostName "") (Just $ AppName "") (Just $ ProcessID "") (Just $ MessageID "") Nothing "test log message"
expected = "<15>1 - - - - - - test log message"
in
result `shouldBe` expected
it "uses the correct values otherwise" $
let
time = Nothing :: Maybe UTCTime
result = rfc5424Packet priVal time (Just $ HostName "host_name") (Just $ AppName "app_name") (Just $ ProcessID "proc_id") (Just $ MessageID "msg_id") Nothing "test log message"
expected = "<15>1 - host_name app_name proc_id msg_id - test log message"
in
result `shouldBe` expected
it "correctly formats the time" $
let
time = parseTimeM True defaultTimeLocale "%FT%X%QZ" "2003-10-11T22:14:15.003Z" :: Maybe UTCTime
result = rfc5424Packet priVal time Nothing Nothing Nothing Nothing Nothing "test log message"
expected = "<15>1 2003-10-11T22:14:15.003Z - - - - - test log message"
in
result `shouldBe` expected
describe "rfc3164Packet" $ do
let
(Just priVal) = maskedPriVal noMask User Debug
(Just time) = parseTimeM True defaultTimeLocale "%FT%X%QZ" "2003-10-11T22:14:15.003Z" :: Maybe UTCTime
it "correctly formats the message" $
let
result = rfc3164Packet priVal time (HostName "host_name") (AppName "app_name") (ProcessID "12345") "test log message"
expected = "<15>Oct 11 22:14:15 host_name app_name[12345]: test log message"
in
result `shouldBe` expected
describe "rsyslogPacket" $ do
let
(Just priVal) = maskedPriVal noMask User Debug
(Just time) = parseTimeM True defaultTimeLocale "%FT%X%QZ" "2003-10-11T22:14:15.003Z" :: Maybe UTCTime
it "correctly formats the message" $
let
result = rsyslogPacket priVal time (HostName "host_name") (AppName "app_name") (ProcessID "12345") "test log message"
expected = "<15>2003-10-11T22:14:15.003Z host_name app_name[12345]: test log message"
in
result `shouldBe` expected