Barracuda-1.0.2: Tests/Data.hs
module Tests.Data where
import Data.ByteString as BS hiding (map, putStrLn)
import Data.Time
import System.FilePath
import Network.AdHoc.Channel
import Network.AdHoc.Signature
import Network.AdHoc.Message
import Network.AdHoc.UserID
import Network.Socket
import Network.GnuTLS
import System.IO.Unsafe
-- Declare all testdata here
-- User ids:
user_eq, user_wechner, user_igel, user_spuall :: UserID
user_eq = UserID "eq" "alan"
user_wechner = UserID "wechner" "mroot"
user_igel = UserID "igel" "garten"
user_spuall = UserID "spuall" "spuall" -- XXX: Just a guess :)
-- ChannelIDs
channel_sep07, channel_barracuda, channel_csstuds :: ChannelID
channel_sep07 = ChannelID "sep07" "sse.cs.tu-bs.de" -- :P
channel_barracuda = ChannelID "barracuda" "up.in.your.arse"
channel_csstuds = ChannelID "csstuds" "freenode.org"
-- ChannelNames
cname_sep07, cname_barracuda, cname_csstuds :: ChannelName
cname_sep07 = mkChannelName "SEP 07 Channel"
cname_barracuda = mkChannelName "Barracuda!"
cname_csstuds = mkChannelName "CS-Studs"
-- Times
date_jfk,date_malcomX,date_mlk :: UTCTime
date_jfk = UTCTime (fromGregorian 1963 11 22) (12*3600+30*60)
date_malcomX = UTCTime (fromGregorian 1965 2 21) 0
date_mlk = UTCTime (fromGregorian 1968 4 4) (18*3600+ 1*60)
-- Addresses
addr_cia, addr_fsf, addr_penisland :: HostAddress
addr_cia = unsafePerformIO $ inet_addr "198.81.129.100"
addr_fsf = unsafePerformIO $ inet_addr "199.232.41.5"
addr_penisland = unsafePerformIO $ inet_addr "38.113.185.223"
-- Socket Adresses
saddr_cia, saddr_fsf, saddr_penisland :: SockAddr
saddr_cia = SockAddrInet 8888 addr_cia
saddr_fsf = SockAddrInet 8888 addr_fsf
saddr_penisland = SockAddrInet 7777 addr_penisland
-- Messages
routed_innocent, routed_nottl, routed_nack :: Routed TargetContent ExternalSignature
routed_innocent = Routed 14 user_wechner "29"
(Message [user_igel,user_spuall] cname_sep07 channel_sep07
(UnencryptedMessage "what was the price on his head?" [])
date_malcomX
0)
Nothing
routed_nottl = Routed 0 user_spuall "1788" (GetCertificate user_eq) Nothing
routed_nack = Routed 5 user_igel "80"
(Nack (Routed 0 user_wechner "12" (Certificate [user_eq] user_spuall (pack [1,2,3])) Nothing))
Nothing
-- Certificates
loadCert :: String -> IO Certificate
loadCert file = do
str <- BS.readFile $ ".." </> "tests" </> "certificates" </> file
case importCertificate str X509FmtPem of
Right cert -> return cert
Left err -> let msg = "Failed to load certificate" ++ file ++ ": " ++ show err
in putStrLn msg >> fail msg
loadKey :: String -> IO PrivateKey
loadKey file = do
str <- BS.readFile $ ".." </> "tests" </> "certificates" </> file
case importPrivateKey str X509FmtPem of
Right key -> return key
Left err -> let msg = "Failed to load private key" ++ file ++ ": " ++ show err
in putStrLn msg >> fail msg
dummyCerts :: IO [Certificate]
dummyCerts = mapM loadCert (map (\n -> "Dummy"++show n++"-cert.pem") [1..10])
unsafeDummyCerts :: [Certificate]
unsafeDummyCerts = unsafePerformIO dummyCerts
dummyKeys :: IO [PrivateKey]
dummyKeys = mapM loadKey (map (\n -> "Dummy"++show n++"-key.pem") [1..10])
unsafeDummyKeys :: [PrivateKey]
unsafeDummyKeys = unsafePerformIO dummyKeys