| 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) |
|---|