mirror of
https://github.com/kazu-yamamoto/dns.git
synced 2024-10-06 10:40:07 +03:00
Using Hspec.
This commit is contained in:
parent
10dbaaa4cc
commit
5b0ac4390c
74
Test.hs
74
Test.hs
@ -1,74 +0,0 @@
|
||||
{-# LANGUAGE OverloadedStrings, TemplateHaskell #-}
|
||||
|
||||
module Test where
|
||||
|
||||
import qualified Data.ByteString.Char8 as BS
|
||||
import Data.List
|
||||
import Network.DNS as DNS
|
||||
import Test.Framework.Providers.HUnit
|
||||
import Test.Framework.TH.Prime
|
||||
import Test.HUnit
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
main :: IO ()
|
||||
main = $(defaultMainGenerator)
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
(?=) :: (Eq a, Show a) => IO a -> a -> IO ()
|
||||
a ?= b = a >>= (@?= b)
|
||||
|
||||
case_lookupA :: Assertion
|
||||
case_lookupA = do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver ->
|
||||
DNS.lookupA resolver "www.mew.org" ?= Just ["202.232.15.101"]
|
||||
|
||||
(??=) :: (Ord a, Show a) => IO (Maybe [a]) -> [a] -> Assertion
|
||||
a ??= bs = do
|
||||
mas <- a
|
||||
case mas of
|
||||
Nothing -> False @? "should be Nothing"
|
||||
Just as -> sort as @?= sort bs
|
||||
|
||||
case_lookupAAAA :: Assertion
|
||||
case_lookupAAAA = do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver -> do
|
||||
DNS.lookupAAAA resolver "mew.org" ?= Nothing
|
||||
DNS.lookupAAAA resolver "www.mew.org" ?= Just ["2001:240:11e:c00::101"]
|
||||
|
||||
case_lookupTXT :: Assertion
|
||||
case_lookupTXT = do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver ->
|
||||
DNS.lookupTXT resolver "mew.org" ?= Just ["v=spf1 +mx -all"]
|
||||
|
||||
case_lookupAviaMX :: Assertion
|
||||
case_lookupAviaMX = do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver ->
|
||||
DNS.lookupAviaMX resolver "mixi.jp" ??= ["202.32.29.4", "202.32.29.5"]
|
||||
|
||||
case_lookupAviaCNAME :: Assertion
|
||||
case_lookupAviaCNAME = do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver ->
|
||||
DNS.lookupA resolver "ghs.google.com" ??= ["72.14.203.121"]
|
||||
|
||||
case_lookupPTR :: Assertion
|
||||
case_lookupPTR = do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver ->
|
||||
DNS.lookupPTR resolver rev ?= Just ["www-v4.iij.ad.jp."]
|
||||
where
|
||||
target = "210.130.137.80"
|
||||
rev = BS.intercalate "." (reverse (BS.split '.' target))
|
||||
`BS.append` ".in-addr.arpa"
|
||||
|
||||
case_lookupSRV :: Assertion
|
||||
case_lookupSRV = do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver ->
|
||||
DNS.lookupSRV resolver "_sip._tcp.cisco.com" ?= Just [(1,0,5060,"vcsgw.cisco.com.")]
|
20
dns.cabal
20
dns.cabal
@ -7,10 +7,11 @@ License-File: LICENSE
|
||||
Synopsis: DNS library in Haskell
|
||||
Description: DNS library for clients and servers.
|
||||
Category: Network
|
||||
Cabal-Version: >= 1.6
|
||||
Cabal-Version: >= 1.10
|
||||
Build-Type: Simple
|
||||
Extra-Source-Files: Test.hs, TestProtocol.hs
|
||||
library
|
||||
|
||||
Library
|
||||
Default-Language: Haskell2010
|
||||
GHC-Options: -Wall
|
||||
Exposed-Modules: Network.DNS
|
||||
Network.DNS.Lookup
|
||||
@ -49,6 +50,19 @@ library
|
||||
, network-bytestring
|
||||
, network-conduit
|
||||
, random
|
||||
|
||||
Test-Suite spec
|
||||
Type: exitcode-stdio-1.0
|
||||
Default-Language: Haskell2010
|
||||
Hs-Source-Dirs: test
|
||||
Ghc-Options: -Wall
|
||||
Main-Is: Spec.hs
|
||||
Other-Modules: LookupSpec
|
||||
Build-Depends: base
|
||||
, bytestring
|
||||
, dns
|
||||
, hspec
|
||||
|
||||
Source-Repository head
|
||||
Type: git
|
||||
Location: git://github.com/kazu-yamamoto/dns.git
|
||||
|
57
test/LookupSpec.hs
Normal file
57
test/LookupSpec.hs
Normal file
@ -0,0 +1,57 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module LookupSpec where
|
||||
|
||||
import Control.Applicative
|
||||
import qualified Data.ByteString.Char8 as BS
|
||||
import Data.List
|
||||
import Network.DNS as DNS
|
||||
import Test.Hspec
|
||||
|
||||
spec :: Spec
|
||||
spec = do
|
||||
describe "lookupA" $ do
|
||||
it "gets IPv4 addresses" $ do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver ->
|
||||
DNS.lookupA resolver "www.mew.org" `shouldReturn` Just ["202.232.15.101"]
|
||||
|
||||
it "gets IPv4 addresses via CNAME" $ do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver ->
|
||||
DNS.lookupA resolver "ghs.google.com" `shouldReturn` Just ["72.14.203.121"]
|
||||
|
||||
describe "lookupAAAA" $ do
|
||||
it "gets IPv6 addresses" $ do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver -> do
|
||||
DNS.lookupAAAA resolver "mew.org" `shouldReturn` Nothing
|
||||
DNS.lookupAAAA resolver "www.mew.org" `shouldReturn` Just ["2001:240:11e:c00::101"]
|
||||
|
||||
describe "lookupTXT" $ do
|
||||
it "gets TXT" $ do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver ->
|
||||
DNS.lookupTXT resolver "mew.org" `shouldReturn` Just ["v=spf1 +mx -all"]
|
||||
|
||||
describe "lookupAviaMX" $ do
|
||||
it "gets IPv4 addresses via MX" $ do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver -> do
|
||||
as <- DNS.lookupAviaMX resolver "mixi.jp"
|
||||
sort <$> as `shouldBe` Just ["202.32.29.4", "202.32.29.5"]
|
||||
|
||||
describe "lookupPTR" $ do
|
||||
it "gets PTR" $ do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver -> do
|
||||
let target = "210.130.137.80"
|
||||
rev = BS.intercalate "." (reverse (BS.split '.' target))
|
||||
`BS.append` ".in-addr.arpa"
|
||||
DNS.lookupPTR resolver rev `shouldReturn` Just ["www-v4.iij.ad.jp."]
|
||||
|
||||
describe "lookupSRV" $ do
|
||||
it "gets SRV" $ do
|
||||
rs <- makeResolvSeed defaultResolvConf
|
||||
withResolver rs $ \resolver ->
|
||||
DNS.lookupSRV resolver "_sip._tcp.cisco.com" `shouldReturn` Just [(1,0,5060,"vcsgw.cisco.com.")]
|
1
test/Spec.hs
Normal file
1
test/Spec.hs
Normal file
@ -0,0 +1 @@
|
||||
{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
|
Loading…
Reference in New Issue
Block a user