Sunday 4 August 2013

Send Email in Soap UI using Groovy

Hi Guys,

Here is the code to send email in SoapUI using groovy.

Requirement: Java Mail Jar file location
http://www.java2s.com/Code/JarDownload/java/java-mail-1.4.4.jar.zip

// Note: Generally in SoapUI no need of java mail jar file but if require then can download from above link and save at ext directory.

Sending email "Gmail" SMPT server:

import com.sun.mail.smtp.SMTPTransport;
import java.security.Security;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public static void Send(final String username, final String password, String recipientEmail, String ccEmail, String title, String message) throws AddressException, MessagingException {
        final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

        // Get a Properties object
        Properties props = System.getProperties();
        props.setProperty("mail.smtps.host", "smtp.gmail.com");
        props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
        props.setProperty("mail.smtp.socketFactory.fallback", "false");
        props.setProperty("mail.smtp.port", "465");
        props.setProperty("mail.smtp.socketFactory.port", "465");
        props.setProperty("mail.smtps.auth", "true");

        /*
        If set to false, the QUIT command is sent and the connection is immediately closed. If set
        to true (the default), causes the transport to wait for the response to the QUIT command.

        ref :   http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/package-summary.html
                http://forum.java.sun.com/thread.jspa?threadID=5205249
                smtpsend.java - demo program from javamail
        */


        props.put("mail.smtps.quitwait", "false");

        Session session = Session.getInstance(props, null);

        // -- Create a new message --
        final MimeMessage msg = new MimeMessage(session);

        // -- Set the FROM and TO fields --
        msg.setFrom(new InternetAddress(username + "@gmail.com"));
        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipientEmail, false));

        if (ccEmail.length() > 0) {
            msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccEmail, false));
        }

        msg.setSubject(title);
        msg.setText(message, "utf-8");
        msg.setSentDate(new Date());

        SMTPTransport t = (SMTPTransport)session.getTransport("smtps");

        t.connect("smtp.gmail.com", username, password);
        t.sendMessage(msg, msg.getAllRecipients());     
        t.close();
    }

 log.info Send(username, password, recipientEmail, ccEmail, title, message);

Sunday 19 May 2013

StartUp Groovy Scripts commands in SoapUI


// ***************** Project Commands***************************
// Define Project object
def project = testRunner.testCase.testSuite.project

// Get Project Location
log.info project.getPath()

// ***** Get Default Project Properties
1. Name
log.info project.name

2. Default Scripting Language
log.info project.getDefaultScriptLanguage()

In Similar fashion we can fetch other default values of project properties like ‘Description (getDescription)’, etc

// ***** Get Custom Project Properties
log.info project.getPropertyValue(“Property1”)

// ***** Change/Set default project property values
1. Name
log.info project.setName("Currency")

2. Change Default Script Language
log.info project.setScriptLibrary("Groovy")

In Similar fashion we can set other default values of project properties like ‘Description (setDescription)’, etc

// ***** Set Custom Project Properties
log.info project.setPropertyValue(“Property1”, “SampleValue”)

// *******************************************************************

// *********************** Test Suite Commands***************************
// Define Test Suite object
def sTestSuite = testRunner.testCase.testSuite

// ***** Get Default Test Suite Properties
## Name
log.info sTestSuite.name

// ***** Get Custom TestSuite Properties
log.info sTestSuite.getPropertyValue("SuiteProperty1")

// ***** Change default Test Suite property values
## Name
log.info sTestSuite.setName("Currency")

// ***** Set Custom Test Suite Properties
log.info sTestSuite.setPropertyValue("SuiteProperty1", "ChangeSampleValue")

 // *******************************************************************

// *********************** Test Case Commands*************************
// Define Test Case object
def sTestCase = testRunner.testCase

// ***** Get Default Test Case Properties
## Name
log.info sTestCase.name

// ***** Get Custom TestSuite Properties
log.info sTestCase.getPropertyValue("TestCaseProperty1")

// ***** Change default Test Case property values
## Name
log.info sTestCase.setName("TestCaseCurrency")

// ***** Set Custom Test Case Properties
log.info sTestCase.setPropertyValue("TestCaseProperty1", "ChangeSampleValue")

// *******************************************************************

// ***************** Global Property Commands**************************
// Define SoapUI Global object
def oGlobal = com.eviware.soapui.SoapUI.globalProperties

// ***** Get Global property
oGlobal.getPropertyValue("GlobalProperty1")

// ***** Set New Global Property
oGlobal.setPropertyValue("GlobalProperty2", "GlobalValue2")

SOAPUI Properties


SoapUI Properties
Properties are a central aspect of more advanced testing with soapUI. In regard to Functional Testing properties are used to parameterize the execution and functionality of your tests, for example:

·         Properties can be used to hold the endpoints of your services, making it easy to change the actual endpoints used during test execution (see example below)
·         Properties can be used to hold authentication credentials, making it easy to manage these in a central place or external file
·         Properties can be used to transfer and share session ids during test execution, so multiple teststeps or testcases can share the same sessions
·         etc


SOAP UI TYPE OF PROPERTIES


Default Property:
·         These are the set of properties which comes by default with every soapUI installation.
·         We can change the values of these properties (not in every case) & consume as when needed.

Custom/User Defined Property:
·         These are the set of properties which the end user defines as per his requirement.
·         It can be used a temporary storage for validating the end result of any test (like in assertion).

SOAP UI LEVELS OF PROPERTIES
# Global Properties: specify/define the properties associated with installed version of soapUI. These properties can be access across the project/test suites/ test cases and so on.

# Project Properties: specify the properties associated with the current project. This property can be used by all the subset (test suite, test case, test step, script) of the project.

# Test Suite Properties: specify the properties associated with the current test suite. This property can be used by all the subset (test case, test step, script) of the test suite.

# Test Cases Properties: specify the properties associated with the current test case. This property can be used by all the subset (test step, script) of the test cases.

# Test Step Properties: specify the properties associated with the current test step. This property can be used by all the subset (test step, property transfer, script) of the test steps

SnapShot

Saturday 18 May 2013

Enable and Disable Test Cases in SoapUI using Groovy

Hi,

If you require to get the list of of test cases of a test suite under SoapUI project, use the below code with in groovy step:


// **** Test case list
// Create testSuite object

def oTestSuite = testRunner.testCase.testSuite;

// Get the array of test cases
def iTotalTestCases = oTestSuite.getTestCaseList().name

// Fetch list of test case and their name
for(testCaseCounter in (0..(iTotalTestCases.size-1)))
{    
log.info iTotalTestCases[testCaseCounter]
}




// **** Below Code is on the basis of  index value
// Create testSuite object
def oTestSuite = testRunner.testCase.testSuite;

// Get the count of test cases in a testSuite
def iTotalTestCases = oTestSuite.getTestCases().size();

// List down the name of each test Case with in a test suite
for(testCaseCounter in (0..iTotalTestCases-1))
{  
def sTestCaseName = oTestSuite.getTestCaseAt(testCaseCounter).name
log.info sTestCaseName
}

SnapShot:



** Note: Result in sequential order as shown in above snapshot

## Disable Test Cases in SoapUI using groovy
// ***** Code to disable test step using its name:
def oTestSuite = testRunner.testCase.testSuite;
oTestSuite.getTestCaseByName("TestCase 1").setDisabled(true)

if require to disable all cases within a test suite in one go then use below code:


// Create testSuite object

def oTestSuite = testRunner.testCase.testSuite;

// Get the array of test cases
def iTotalTestCases = oTestSuite.getTestCaseList().name

// Fetch list of test case and their name
for(testCaseCounter in (0..(iTotalTestCases.size-1)))
{    
oTestSuite.getTestCaseByName(iTotalTestCases[testCaseCounter]).setDisabled(true)
}



## Enable test cases in SoapUI using groovy


// ***** Code to enable test step using its name:
def oTestSuite = testRunner.testCase.testSuite;
oTestSuite.getTestCaseByName("TestCase 1").setDisabled(false)


if require to enable all step in one go then use below code:

// Create testSuite object

def oTestSuite = testRunner.testCase.testSuite;

// Get the array of test cases
def iTotalTestCases = oTestSuite.getTestCaseList().name

// Fetch list of test case and their name
for(testCaseCounter in (0..(iTotalTestCases.size-1)))
{    
oTestSuite.getTestCaseByName(iTotalTestCases[testCaseCounter]).setDisabled(false)
}



Point to be remember:  Above code will work only when call with in groovy step of a test case because it is using SoapUI predefined variable i.e. "testRunner" which works only under Groovy Test Step of a Test Case.

Friday 17 May 2013

Enable and Disable test steps in SoapUI using Groovy

Hi,

If you require to get the list of of test steps in SoapUI then use the below code:

// Get the list of test steps
def oNameList = testRunner.testCase.getTestStepList().name

// Use loop to print name of every step in log
for(iNameCounter in (0..oNameList.size-1))
{
log.info oNameList[iNameCounter]
}

Example Image:













* Note: Result in sequential order as shown in above image

## Disable test steps in SoapUI using groovy

1 Get the list of test steps using the above code and use the below code:

// Code to disable test step using its name:
testRunner.testCase.getTestStepByName("TestStep1").setDisabled(true)

if require to disable all step in one go then use below code:

//Get the names of all test steps
def oNameList = testRunner.testCase.getTestStepList().name
for(iNameCounter in (0..oNameList.size-1))
{  
testRunner.testCase.getTestStepByName(oNameList[iNameCounter]).setDisabled(true)
}




## Enable test steps in SoapUI using groovy

1 Get the list of test steps using the above code and use the below code:

// Code to enable test step using its name:
testRunner.testCase.getTestStepByName("TestStep1").setDisabled(false)

if require to enable all step in one go then use below code:

//Get the names of all test steps
def oNameList = testRunner.testCase.getTestStepList().name
for(iNameCounter in (0..oNameList.size-1))
{  
testRunner.testCase.getTestStepByName(oNameList[iNameCounter]).setDisabled(false)
}


oNameList[iNameCounter]: It store the name of step.