1 | #!/usr/bin/env python |
---|
2 | from twisted.trial import unittest |
---|
3 | from twisted.protocols import sip |
---|
4 | from twisted.internet import defer, reactor |
---|
5 | |
---|
6 | BSP_IP = "172.16.1.33" |
---|
7 | BSP_PORT = "5060" |
---|
8 | |
---|
9 | class Client(sip.Base): |
---|
10 | def __init__(self): |
---|
11 | sip.Base.__init__(self) |
---|
12 | self.received = [] |
---|
13 | def handle_response(self,response,addr): |
---|
14 | self.received.append(response) |
---|
15 | |
---|
16 | class sipTest(unittest.TestCase): |
---|
17 | |
---|
18 | def setUp(self): |
---|
19 | self.proxy = sip.RegisterProxy(host=BSP_IP) |
---|
20 | self.registry = sip.InMemoryRegistry("bell.example.com") |
---|
21 | self.proxy.registry = self.proxy.locator = self.registry |
---|
22 | self.serverPort = reactor.listenUDP(0, self.proxy, interface=BSP_IP) |
---|
23 | self.client = Client() |
---|
24 | self.clientPort = reactor.listenUDP(0, self.client, interface=BSP_IP) |
---|
25 | self.serverAddress = self.serverPort.getHost().host |
---|
26 | |
---|
27 | def tearDown(self): |
---|
28 | self.clientPort.stopListening() |
---|
29 | self.serverPort.stopListening() |
---|
30 | for d, uri in self.registry.users.values(): |
---|
31 | d.cancel() |
---|
32 | #reactor.iterate() |
---|
33 | #reactor.iterate() |
---|
34 | |
---|
35 | def testRegister(): |
---|
36 | print self.clientPort.getHost() |
---|
37 | p = self.clientPort.getHost()[-1] |
---|
38 | r = sip.Request("REGISTER", "sip:bell.example.com") |
---|
39 | r.addHeader("to", "sip:joe@bell.example.com") |
---|
40 | r.addHeader("contact", "sip:joe@127.0.0.1:%d" % p) |
---|
41 | r.addHeader("via", sip.Via(BSP_IP, port=p).toString()) |
---|
42 | self.client.sendMessage(sip.URL(host=BSP_IP, port=self.serverAddress[1]), |
---|
43 | r) |
---|
44 | while not len(self.client.received): |
---|
45 | reactor.iterate() |
---|
46 | self.assertEquals(len(self.client.received), 1) |
---|
47 | r = self.client.received[0] |
---|
48 | print r |
---|
49 | self.assertEquals(r.code, 200) |
---|