diff --git a/sipservice/src/main/java/net/gotev/sipservice/CallerInfo.java b/sipservice/src/main/java/net/gotev/sipservice/CallerInfo.java index 73bca6af..6087af59 100644 --- a/sipservice/src/main/java/net/gotev/sipservice/CallerInfo.java +++ b/sipservice/src/main/java/net/gotev/sipservice/CallerInfo.java @@ -24,14 +24,14 @@ public CallerInfo(final CallInfo callInfo) { return; } - Pattern displayNameAndRemoteUriPattern = Pattern.compile("^\"([^\"]+).*?sip:(.*?)>$"); + Pattern displayNameAndRemoteUriPattern = Pattern.compile("^\"([^\"]+).*?sips?:(.*?)>$"); Matcher completeInfo = displayNameAndRemoteUriPattern.matcher(temp); if (completeInfo.matches()) { displayName = completeInfo.group(1); remoteUri = completeInfo.group(2); } else { - Pattern remoteUriPattern = Pattern.compile("^.*?sip:(.*?)>$"); + Pattern remoteUriPattern = Pattern.compile("^.*?sips?:(.*?)>$"); Matcher remoteUriInfo = remoteUriPattern.matcher(temp); if (remoteUriInfo.matches()) { displayName = remoteUri = remoteUriInfo.group(1); diff --git a/sipservice/src/test/java/net/gotev/sipservice/CallerInfoTest.java b/sipservice/src/test/java/net/gotev/sipservice/CallerInfoTest.java new file mode 100644 index 00000000..f77b116e --- /dev/null +++ b/sipservice/src/test/java/net/gotev/sipservice/CallerInfoTest.java @@ -0,0 +1,59 @@ +package net.gotev.sipservice; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.pjsip.pjsua2.CallInfo; + +public class CallerInfoTest { + + private static final class FakeCallInfo extends CallInfo { + private final String remoteUri; + + FakeCallInfo(String remoteUri) { + super(0, false); + this.remoteUri = remoteUri; + } + + @Override + public String getRemoteUri() { + return remoteUri; + } + } + + private static CallerInfo callerInfo(String remoteUri) { + return new CallerInfo(new FakeCallInfo(remoteUri)); + } + + @Test + public void parsesSipUriWithDisplayName() { + CallerInfo info = callerInfo("\"Alice\" "); + + assertEquals("Alice", info.getDisplayName()); + assertEquals("1001@pbx.example.com", info.getRemoteUri()); + } + + @Test + public void parsesSipsUriWithDisplayName() { + CallerInfo info = callerInfo("\"Alice\" "); + + assertEquals("Alice", info.getDisplayName()); + assertEquals("1001@pbx.example.com", info.getRemoteUri()); + } + + @Test + public void parsesSipUriWithoutDisplayName() { + CallerInfo info = callerInfo(""); + + assertEquals("1001@pbx.example.com", info.getDisplayName()); + assertEquals("1001@pbx.example.com", info.getRemoteUri()); + } + + @Test + public void parsesSipsUriWithoutDisplayName() { + CallerInfo info = callerInfo(""); + + assertEquals("1001@pbx.example.com", info.getDisplayName()); + assertEquals("1001@pbx.example.com", info.getRemoteUri()); + } +}