The HTTP Redirection code

The HTTP Redirection script code is posted below.

You can copy the code from this page and paste it into the SOASTA CloudTest > Script Editor, or use the following link to download and import the XML for the HTTP Redirection Script. SOASTA CloudTest XML can be importated using the Import icon on the toolbar.

Refer to Script to learn how to add a script to a test clip and test composition.

// This script looks to see if the response code was 302
// if so, it resets the target of the next message
// to use the host name and service path specified by the Location header

// Get the Message that immediately precedes this Script.
var msg = $context.currentItem.previousItem;
var origText = msg.getResponse(msg.RESPONSE_TEXT);

//from the response, determine if this a 302 response
var pos = origText.indexOf("HTTP/1.1 302 Found");
if (pos == -1)
{
   $context.result.postMessage($context.result.LEVEL_INFO, "did not find 302");
}
else
{   
   //now get the value of the location header and then the protocol following
   var firstPos = origText.indexOf("Location: ");
   firstPos = origText.indexOf("http", firstPos + 1);
   
   var lastPos = origText.indexOf("\n", firstPos + 1);
      
   var location =  origText.substring(firstPos, lastPos);
   
   //now we need to separate this into host name and service path
   var doubleSlashPos = location.indexOf("//"); 
   firstSlashPos = location.indexOf("/", doubleSlashPos + 2);
   
   //extract out the host name and the service path from the location
   var hostName    = location.substring(doubleSlashPos + 2, firstSlashPos);
   var servicePath = location.substring(firstSlashPos);
    
   //set the host name and service path for the target of the next message
   $context.currentItem.nextItem.target.systemPropertyList.setPropertyValue("HostName", hostName);
   $context.currentItem.nextItem.target.systemPropertyList.setPropertyValue("ServicePath", servicePath);
}