package org.mobicents.servlet.sip.testsuite.address;
import javax.servlet.sip.SipURI;
import javax.servlet.sip.URI;
import org.mobicents.servlet.sip.SipFactories;
import org.mobicents.servlet.sip.message.SipFactoryImpl;
/**
* Tests from RFC3261 ยง19.1.4 URI Comparison
*/
public class SipURITest extends junit.framework.TestCase {
static String[][] equal = {
{"sip:%61lice@atlanta.com;transport=TCP", "sip:alice@AtlanTa.CoM;Transport=tcp"},
{"sip:carol@chicago.com", "sip:carol@chicago.com;newparam=5"},
{"sip:carol@chicago.com", "sip:carol@chicago.com;lr"},
{"sip:carol@chicago.com;security=on", "sip:carol@chicago.com;newparam=5"},
{"sip:alice@atlanta.com?subject=project%20x&priority=urgent", "sip:alice@atlanta.com?priority=urgent&subject=project%20x"},
{"sip:carol@chicago.com", "sip:carol@chicago.com;security=on"},
{"sip:carol@chicago.com;security=on", "sip:carol@chicago.com"},
{"sip:[0:0:0:0:0:0:0:1%1]:5070;transport=udp", "sip:[0:0:0:0:0:0:0:1%1]:5070;transport=udp"}
};
static String[][] different = {
{"sip:alice@atlanta.com", "sip:ALICE@atlanta.com"},
{"sip:bob@biloxi.com", "sip:bob@biloxi.com:5060"},
{"sip:bob@biloxi.com", "sip:bob@biloxi.com;transport=tcp"},
{"sip:carol@chicago.com;newparam=6", "sip:carol@chicago.com;newparam=5"},
{"sip:carol@chicago.com", "sip:carol@chicago.com?Subject=next%20meeting"},
{"sip:carol@chicago.com?Subject=next%20meeting", "sip:carol@chicago.com?Subject=another%20meeting"},
{"sip:carol@chicago.com;security=off", "sip:carol@chicago.com;security=on"}
};
private SipFactoryImpl sipFactory;
public void setUp() {
SipFactories.initialize("gov.nist", true);
sipFactory = new SipFactoryImpl(null);
}
private SipURI sipUri(String uri) throws Exception {
return (SipURI) sipFactory.createURI(uri);
}
public void testEqual() throws Exception {
for (int i = 0; i < equal.length; i++) {
SipURI uri1 = sipUri(equal[i][0]);
SipURI uri2 = sipUri(equal[i][1]);
assertTrue(uri1 + " is different as " + uri2, uri1.equals(uri2));
assertTrue(uri2 + " is different as " + uri1, uri2.equals(uri1));
}
}
public void testDifferent() throws Exception {
for (int i = 0; i < different.length; i++) {
SipURI uri1 = sipUri(different[i][0]);
SipURI uri2 = sipUri(different[i][1]);
assertFalse(uri1 + " is the same as " + uri2, uri1.equals(uri2));
assertFalse(uri2 + " is the same as " + uri1, uri2.equals(uri1));
}
}
public void testEscaping() throws Exception {
SipURI uri1 = sipUri("sip:%61lice@atlanta.com;transport=TCP");
assertTrue(uri1.getUser() + " is different as alice" , uri1.getUser().equals("alice"));
assertTrue(uri1.toString() + " is different as sip:alice@atlanta.com;transport=TCP" , uri1.toString().equals("sip:alice@atlanta.com;transport=TCP"));
uri1 = sipUri("sip:alice@example.com;transport=tcp?Subject=SIP%20Servlets");
assertTrue(uri1.getHeader("Subject") + " is different as SIP Servlets" , uri1.getHeader("Subject").equals("SIP Servlets"));
assertTrue(uri1.toString() + " is different as sip:alice@example.com;transport=tcp?Subject=SIP Servlets" , uri1.toString().equals("sip:alice@example.com;transport=tcp?Subject=SIP Servlets"));
// uri1 = sipUri("sip:annc@ms.example.net;play=file://fs.example.net//clips/my-intro.dvi;content-type=video/mpeg%3bencode%3d314M-25/625-50");
// SipURI uri2 = sipUri("sip:annc@ms.example.net;play=file://fs.example.net//clips/my-intro.dvi;content-type=video/mpeg;encode=314M-25/625-50");
// assertTrue(uri1.getParameter("content-type") + " is different as video/mpeg;encode=314M-25/625-50" , uri1.getParameter("content-type").equals("video/mpeg;encode=314M-25/625-50"));
// assertTrue(uri1.toString() + " is different as sip:annc@ms.example.net;play=file://fs.example.net//clips/my-intro.dvi;content-type=video/mpeg%3bencode%3d314M-25/625-50" , uri1.equals(uri2));
}
public void testNullUser() throws Exception {
SipURI uri1 = sipUri("sip:atlanta.com;transport=TCP?Subject=SIP%20Servlets");
assertNotNull(uri1);
assertNull(uri1.getUser());
assertNotNull(uri1.getHost());
assertEquals("TCP", uri1.getTransportParam());
assertTrue(uri1.getHeader("Subject") + " is different as SIP Servlets" , uri1.getHeader("Subject").equals("SIP Servlets"));
}
public void testParams() throws Exception {
URI uri = sipFactory.createURI("sip:127.0.0.1:5080");
uri.setParameter("Key", "val");
String s = uri.toString();
assertEquals("sip:127.0.0.1:5080;Key=val", s);
}
}