Revision: 15904
Author: [email protected]
Date: Mon Dec 20 13:43:10 2010
Log: Update Issue 2173

Adding non regression test
http://code.google.com/p/mobicents/source/detail?r=15904

Modified:
/trunk/servers/sip-servlets/sip-servlets-test-suite/applications/shootist-sip-servlet-auth/src/main/java/org/mobicents/servlet/sip/testsuite/ShootistSipServletAuth.java /trunk/servers/sip-servlets/sip-servlets-test-suite/testsuite/src/test/java/org/mobicents/servlet/sip/testsuite/TestSipListener.java /trunk/servers/sip-servlets/sip-servlets-test-suite/testsuite/src/test/java/org/mobicents/servlet/sip/testsuite/security/ShootistSipServletAuthTest.java

=======================================
--- /trunk/servers/sip-servlets/sip-servlets-test-suite/applications/shootist-sip-servlet-auth/src/main/java/org/mobicents/servlet/sip/testsuite/ShootistSipServletAuth.java Fri Nov 26 06:48:23 2010 +++ /trunk/servers/sip-servlets/sip-servlets-test-suite/applications/shootist-sip-servlet-auth/src/main/java/org/mobicents/servlet/sip/testsuite/ShootistSipServletAuth.java Mon Dec 20 13:43:10 2010
@@ -36,6 +36,7 @@
 import javax.sip.ListeningPoint;

 import org.apache.log4j.Logger;
+import org.mobicents.javax.servlet.sip.SipServletRequestExt;

 public class ShootistSipServletAuth
                extends SipServlet
@@ -65,14 +66,21 @@
                        // Avoid re-sending if the auth repeatedly fails.
if(!"true".equals(getServletContext().getAttribute("FirstResponseRecieved")))
                        {
+                               String fromString = 
response.getFrom().getURI().toString();
+
                                getServletContext().setAttribute("FirstResponseRecieved", 
"true");
                                AuthInfo authInfo = sipFactory.createAuthInfo();
authInfo.addAuthInfo(response.getStatus(), "sip-servlets-realm", "user", "pass"); SipServletRequest challengeRequest = response.getSession().createRequest(
                                                
response.getRequest().getMethod());
-                               challengeRequest.addAuthHeader(response, 
authInfo);
+                               boolean cacheCredentials = false;
+                               if(fromString.contains("cache-credentials")) {
+                                       cacheCredentials = true;
+                               }
+                               logger.info("cache Credentials : " + 
cacheCredentials);
+ ((SipServletRequestExt)challengeRequest).addAuthHeader(response, authInfo, cacheCredentials);
                                challengeRequest.send();
-                               String fromString = 
response.getFrom().getURI().toString();
+
                                if(fromString.contains("cancelChallenge")) {
                                        if(fromString.contains("Before1xx")) {
                                                try {
=======================================
--- /trunk/servers/sip-servlets/sip-servlets-test-suite/testsuite/src/test/java/org/mobicents/servlet/sip/testsuite/TestSipListener.java Fri Dec 17 07:07:41 2010 +++ /trunk/servers/sip-servlets/sip-servlets-test-suite/testsuite/src/test/java/org/mobicents/servlet/sip/testsuite/TestSipListener.java Mon Dec 20 13:43:10 2010
@@ -19,6 +19,7 @@
 import gov.nist.javax.sip.DialogExt;
 import gov.nist.javax.sip.address.SipUri;
 import gov.nist.javax.sip.header.HeaderFactoryExt;
+import gov.nist.javax.sip.header.ParameterNames;
 import gov.nist.javax.sip.header.SIPETag;
 import gov.nist.javax.sip.header.SIPHeaderNames;
 import gov.nist.javax.sip.header.WWWAuthenticate;
@@ -52,6 +53,7 @@
 import javax.sip.address.SipURI;
 import javax.sip.address.TelURL;
 import javax.sip.address.URI;
+import javax.sip.header.AuthenticationInfoHeader;
 import javax.sip.header.AuthorizationHeader;
 import javax.sip.header.CSeqHeader;
 import javax.sip.header.CallIdHeader;
@@ -75,7 +77,6 @@
 import javax.sip.header.SubscriptionStateHeader;
 import javax.sip.header.ToHeader;
 import javax.sip.header.ViaHeader;
-import javax.sip.message.Message;
 import javax.sip.message.Request;
 import javax.sip.message.Response;

@@ -298,6 +299,8 @@
        private boolean disableSequenceNumberValidation = false;

        private boolean sendCancelOn1xx = false;
+
+       private boolean testNextNonce =false;

        class MyEventSource implements Runnable {
                private TestSipListener notifier;
@@ -955,6 +958,12 @@

                        Response okResponse = 
protocolObjects.messageFactory.createResponse(
                                        Response.OK, request);
+                       if(testNextNonce) {
+ AuthenticationInfoHeader authenticationInfoHeader = protocolObjects.headerFactory.createAuthenticationInfoHeader("");
+                               
authenticationInfoHeader.setNextNonce(dsam.generateNonce());
+                               
authenticationInfoHeader.removeParameter(ParameterNames.RESPONSE_AUTH);
+                               okResponse.addHeader(authenticationInfoHeader);
+                       }
                        ToHeader toHeader = (ToHeader) 
okResponse.getHeader(ToHeader.NAME);
                        if (toHeader.getTag() == null) {
                                toHeader.setTag(Integer.toString(new 
Random().nextInt(10000000)));
@@ -1137,6 +1146,12 @@
ViaHeader viaHeader = (ViaHeader)getFinalResponse().getHeader(ViaHeader.NAME);
                                        viaHeader.setParameter("testAckViaParam", 
"true");
                                }
+                               if(testNextNonce) {
+ AuthenticationInfoHeader authenticationInfoHeader = protocolObjects.headerFactory.createAuthenticationInfoHeader("");
+                                       
authenticationInfoHeader.setNextNonce(dsam.generateNonce());
+ authenticationInfoHeader.removeParameter(ParameterNames.RESPONSE_AUTH);
+                                       
getFinalResponse().addHeader(authenticationInfoHeader);
+                               }
ToHeader toHeader = (ToHeader) getFinalResponse().getHeader(ToHeader.NAME);
                                if(toHeader.getTag() == null) {
                                        toHeader.setTag(TO_TAG); // Application 
is supposed to set.
@@ -1602,7 +1617,9 @@
                                        ((WWWAuthenticate) (response
                                                        
.getHeader(SIPHeaderNames.WWW_AUTHENTICATE))),
                                        "user",
-                                       "pass");
+                                       "pass",
+                                       ((WWWAuthenticate) (response
+                                                       
.getHeader(SIPHeaderNames.WWW_AUTHENTICATE))).getNonce());

                        requestauth.addHeader(authorization);
                } catch (ParseException pa) {
@@ -2859,5 +2876,9 @@
        public boolean isUseToURIasRequestUri() {
                return useToURIasRequestUri;
        }
+
+       public void setTestNextNonce(boolean b) {
+               this.testNextNonce  = b;
+       }

 }
=======================================
--- /trunk/servers/sip-servlets/sip-servlets-test-suite/testsuite/src/test/java/org/mobicents/servlet/sip/testsuite/security/ShootistSipServletAuthTest.java Fri Nov 26 06:48:23 2010 +++ /trunk/servers/sip-servlets/sip-servlets-test-suite/testsuite/src/test/java/org/mobicents/servlet/sip/testsuite/security/ShootistSipServletAuthTest.java Mon Dec 20 13:43:10 2010
@@ -145,6 +145,34 @@
                }
assertEquals("The stale auth header should not be taken into account", 1, proxyAuthHeaderNumber);
        }
+
+       /*
+        * Non regression test for Issue 2173
+        * http://code.google.com/p/mobicents/issues/detail?id=2173
+ * Handle Header [Authentication-Info: nextnonce="xyz"] in sip authorization responses
+        */
+       public void testShootistReinviteNextNonce() throws Exception {
+//             receiver.sendInvite();
+               receiverProtocolObjects =new ProtocolObjects(
+ "sender-app-send-reinvite-cache-credentials", "gov.nist", TRANSPORT, AUTODIALOG, null, null, null);
+
+ receiver = new TestSipListener(5080, 5070, receiverProtocolObjects, false);
+               receiver.setChallengeRequests(true);
+               receiver.setTestNextNonce(true);
+               SipProvider senderProvider = receiver.createProvider();
+
+               senderProvider.addSipListener(receiver);
+
+               receiverProtocolObjects.start();
+
+               tomcat.startTomcat();
+               Map<String, String> params = new HashMap<String, String>();
+               params.put("from", 
"sender-app-send-reinvite-cache-credentials");
+               params.put("nbSubsequentReq","4");
+               params.put("METHOD", "REGISTER");
+               deployApplication(params);
+               Thread.sleep(TIMEOUT);
+       }

        /*
         * Non regression test for Issue 1836

Reply via email to