]> gitweb @ CieloNegro.org - haskell-dns.git/blobdiff - DNSUnitTest.hs
Response parsing
[haskell-dns.git] / DNSUnitTest.hs
index b388345d5f9174e441fceb08b8ddc3e9c3d99543..07d3adff52fdbe6a28ecf3ab62482a35c495b602 100644 (file)
@@ -2,6 +2,8 @@ import           Data.Binary
 import qualified Data.ByteString.Lazy as LBS
 import           Data.Word
 import           Network.DNS.Message
+import           Network.Socket
+import           System.IO.Unsafe
 import           Test.HUnit
 
 
@@ -30,7 +32,7 @@ testData = [ (parseMsg [ 0x22, 0x79, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00
                             }
               , msgQuestions   = [ Question {
                                      qName  = mkDomainName "mail.cielonegro.org."
-                                   , qType  = mkQueryType CNAME
+                                   , qType  = wrapQueryType CNAME
                                    , qClass = IN
                                    }
                                  ]
@@ -39,6 +41,65 @@ testData = [ (parseMsg [ 0x22, 0x79, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00
               , msgAdditionals = []
               }
              )
+           , (parseMsg [ 0x22, 0x79, 0x85, 0x00, 0x00, 0x01, 0x00, 0x01
+                       , 0x00, 0x01, 0x00, 0x01, 0x04, 0x6D, 0x61, 0x69
+                       , 0x6C, 0x0A, 0x63, 0x69, 0x65, 0x6C, 0x6F, 0x6E
+                       , 0x65, 0x67, 0x72, 0x6F, 0x03, 0x6F, 0x72, 0x67
+                       , 0x00, 0x00, 0x05, 0x00, 0x01, 0xC0, 0x0C, 0x00
+                       , 0x05, 0x00, 0x01, 0x00, 0x01, 0x51, 0x80, 0x00
+                       , 0x06, 0x03, 0x6E, 0x65, 0x6D, 0xC0, 0x11, 0xC0
+                       , 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0E
+                       , 0x10, 0x00, 0x02, 0xC0, 0x31, 0xC0, 0x31, 0x00
+                       , 0x01, 0x00, 0x01, 0x00, 0x00, 0x0E, 0x10, 0x00
+                       , 0x04, 0xDB, 0x5E, 0x82, 0x8B
+                       ]
+              ~?=
+              Message {
+                msgHeader = Header {
+                              hdMessageID             = 8825
+                            , hdMessageType           = Response
+                            , hdOpcode                = StandardQuery
+                            , hdIsAuthoritativeAnswer = True
+                            , hdIsTruncated           = False
+                            , hdIsRecursionDesired    = True
+                            , hdIsRecursionAvailable  = False
+                            , hdResponseCode          = NoError
+                            }
+              , msgQuestions   = [ Question {
+                                     qName  = mkDomainName "mail.cielonegro.org."
+                                   , qType  = wrapQueryType CNAME
+                                   , qClass = IN
+                                   }
+                                 ]
+              , msgAnswers     = [ wrapRecord $
+                                   ResourceRecord {
+                                     rrName  = mkDomainName "mail.cielonegro.org."
+                                   , rrType  = CNAME
+                                   , rrClass = IN
+                                   , rrTTL   = 86400
+                                   , rrData  = mkDomainName "nem.cielonegro.org."
+                                   }
+                                 ]
+              , msgAuthorities = [ wrapRecord $
+                                   ResourceRecord {
+                                     rrName  = mkDomainName "cielonegro.org."
+                                   , rrType  = NS
+                                   , rrClass = IN
+                                   , rrTTL   = 3600
+                                   , rrData  = mkDomainName "nem.cielonegro.org."
+                                   }
+                                 ]
+              , msgAdditionals = [ wrapRecord $
+                                   ResourceRecord {
+                                     rrName  = mkDomainName "nem.cielonegro.org."
+                                   , rrType  = A
+                                   , rrClass = IN
+                                   , rrTTL   = 3600
+                                   , rrData  = unsafePerformIO (inet_addr "219.94.130.139")
+                                   }
+                                 ]
+              }
+             )
            ]