def testResponse(self): r = sip.Response(200, "OK") r.addHeader("foo", "bar") r.addHeader("Content-Length", "4") r.bodyDataReceived("1234") self.assertEqual( r.toString(), "SIP/2.0 200 OK\r\nFoo: bar\r\nContent-Length: 4\r\n\r\n1234")
def testReceivedResponseForward(self): r = sip.Response(200) r.addHeader("via", sip.Via("127.0.0.1").toString()) r.addHeader("via", sip.Via("10.0.0.1", received="client.com").toString()) self.proxy.datagramReceived(r.toString(), ("1.1.1.1", 5060)) self.assertEquals(len(self.sent), 1) dest, m = self.sent[0] self.assertEquals((dest.host, dest.port), ("client.com", 5060))
def testResponseToUs(self): r = sip.Response(200) r.addHeader("via", sip.Via("127.0.0.1").toString()) l = [] self.proxy.gotResponse = lambda *a: l.append(a) self.proxy.datagramReceived(r.toString(), ("1.1.1.1", 5060)) self.assertEqual(len(l), 1) m, addr = l[0] self.assertEqual(len(m.headers.get("via", [])), 0) self.assertEqual(m.code, 200)
def testResponseForward(self): r = sip.Response(200) r.addHeader("via", sip.Via("127.0.0.1").toString()) r.addHeader("via", sip.Via("client.com", port=1234).toString()) self.proxy.datagramReceived(r.toString(), ("1.1.1.1", 5060)) self.assertEqual(len(self.sent), 1) dest, m = self.sent[0] self.assertEqual((dest.host, dest.port), ("client.com", 1234)) self.assertEqual(m.code, 200) self.assertEqual(m.headers["via"], ["SIP/2.0/UDP client.com:1234"])
def testResponseWrongVia(self): # first via must match proxy's address r = sip.Response(200) r.addHeader("via", sip.Via("foo.com").toString()) self.proxy.datagramReceived(r.toString(), ("1.1.1.1", 5060)) self.assertEqual(len(self.sent), 0)
def testStatusCode(self): r = sip.Response(200) self.assertEqual(r.toString(), "SIP/2.0 200 OK\r\n\r\n")
def responseFromRequest(self, code, request): """Create a response to a request message.""" response = sip.Response(code) for name in ("via", "to", "from", "call-id", "cseq"): response.headers[name] = request.headers.get(name, [])[:] return response