~certify-web-dev/twisted/certify-trunk

« back to all changes in this revision

Viewing changes to twisted/test/test_names.py

  • Committer: Bazaar Package Importer
  • Author(s): Moshe Zadka
  • Date: 2002-03-08 07:14:16 UTC
  • Revision ID: james.westby@ubuntu.com-20020308071416-oxvuw76tpcpi5v1q
Tags: upstream-0.15.5
ImportĀ upstreamĀ versionĀ 0.15.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
# Twisted, the Framework of Your Internet
 
3
# Copyright (C) 2001 Matthew W. Lefkowitz
 
4
#
 
5
# This library is free software; you can redistribute it and/or
 
6
# modify it under the terms of version 2.1 of the GNU Lesser General Public
 
7
# License as published by the Free Software Foundation.
 
8
#
 
9
# This library is distributed in the hope that it will be useful,
 
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
12
# Lesser General Public License for more details.
 
13
#
 
14
# You should have received a copy of the GNU Lesser General Public
 
15
# License along with this library; if not, write to the Free Software
 
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
17
 
 
18
 
 
19
"""
 
20
Test cases for twisted.names.
 
21
"""
 
22
 
 
23
from pyunit import unittest
 
24
 
 
25
from twisted.names import dns
 
26
from twisted.internet import main, udp
 
27
from twisted.protocols import protocol
 
28
 
 
29
 
 
30
class DNSFactory(protocol.ServerFactory):
 
31
 
 
32
    protocol = dns.DNS
 
33
    
 
34
    def __init__(self):
 
35
        self.boss = dns.DNSServerBoss()
 
36
    
 
37
    
 
38
class ServerDNSTestCase(unittest.TestCase):
 
39
    """Test cases for DNS server and client."""
 
40
    
 
41
    def setUp(self):
 
42
        # hack until moshez lets me set the port for queries
 
43
        dns.DNS_PORT = 2053
 
44
    
 
45
    def tearDown(self):
 
46
        dns.DNS_PORT = 53
 
47
    
 
48
    def testServer(self):
 
49
        factory = DNSFactory()
 
50
        factory.boss.addDomain("example.foo", dns.SimpleDomain("example.foo", "1.1.1.1"))
 
51
        p = udp.Port(2053, factory)
 
52
        p.startListening()
 
53
        main.iterate()
 
54
        main.iterate()
 
55
        
 
56
        resolver = dns.Resolver(["localhost"])
 
57
        d = resolver.resolve("example.foo")
 
58
        d.addCallback(self.tS_result).addErrback(self.tS_error)
 
59
        d.arm()
 
60
        
 
61
        while not hasattr(self, "gotAnswer"):
 
62
            main.iterate()
 
63
        del self.gotAnswer
 
64
        p.loseConnection()
 
65
        main.iterate()
 
66
    
 
67
    def tS_result(self, result):
 
68
        self.assertEquals(result, "1.1.1.1")
 
69
        self.gotAnswer = 1
 
70
    
 
71
    def tS_error(self, error):
 
72
        raise RuntimeError, error
 
73
 
 
74
 
 
75
class LookupDNSTestCase(unittest.TestCase):
 
76
    
 
77
    def setUp(self):
 
78
        self.results = []
 
79
        self.resolver = dns.Resolver(["207.19.98.16"])
 
80
    
 
81
    def _testLookup(self, domain, type, result):
 
82
        d = self.resolver.resolve(domain, type)
 
83
        d.addCallback(self._result).addErrback(self._error)
 
84
        d.arm()
 
85
        while len(self.results) == 0:
 
86
            main.iterate()
 
87
        self.assertEquals(self.results[0], result)
 
88
        
 
89
    def _result(self, result):
 
90
        self.results.append(result)
 
91
    
 
92
    def _error(self, error):
 
93
        raise RuntimeError, error
 
94
 
 
95
    def testA(self):
 
96
        self._testLookup("zoteca.com", 1, "209.163.251.206")
 
97
    
 
98
    def testMX(self):
 
99
        self._testLookup("zoteca.com", 15, ['israel2.maxnm.com', 'www.maxnm.com'])
 
100
 
 
101