Forum Discussion

shona123's avatar
shona123
New Contributor
9 years ago
Solved

groovy script to take session id from login test case and use it in other cases?

  • nmrao's avatar
    nmrao
    9 years ago

    '

    In the groovy script, the previous step response can be read using below statement. Assuming the step name is step1, rename as per your need. Below script gets the sessionId and store it at test suite level (assuming that sessionId might needed across the test suite, if you want it for all suites, then you can even store it at project level, up to you).

     

     

    def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )

    holder = groovyUtils.getXmlHolder( "step1#Response" )

    def sessionId = holder.getNodeValue( "//*:result/*:Session" )

    context.testCase.testSuite.setPropertyValue('SESSION_ID', sessionId)

     

    Next step is to use the stored sessionId in various places: Property Expansion

    In the other steps except groovy:

          ${#TestSuite#SESSION_ID}

    In the groovy step:

         context.expand('${#TestSuite#SESSION_ID})

4 Replies

  • nmrao's avatar
    nmrao
    Champion Level 3
    The question has to be more precise, what steps are being used, if possible with a sample request / response involved and which values needs to be extracted etc.,

    • shona123's avatar
      shona123
      New Contributor

      Hi,

      I need to extract the session id field from the soap response and use it in other soap requests. I need a groovy script which does this automatically

       

      <ns1:result>
      <ns1:Session>STVpJAutmzqKZ1PL5gaWQjqlAUgfKqodIm99pZkPz0kaXv_3coSUoGxYhpXpmUAUgd_t0Ub8hPa0MKjMvFFJ49qyDrGUWs3fFTBmA7Zq1hT6JCB_BoyD3ikS4NOT1e3aekZg6Cc41B5Id2VyZagnaR7xVAh7B9c9aSbn3tWOGOL_5pKql3PgneM_PIZYCfhtPIvREMxj2tp_83GLZD2CjzH_t_8kSMm9iOK8IQ2AMpVk1ZkjaKRk6WyxTqSIrshS</ns1:Session>
      </ns1:result>

       

      • nmrao's avatar
        nmrao
        Champion Level 3

        '

        In the groovy script, the previous step response can be read using below statement. Assuming the step name is step1, rename as per your need. Below script gets the sessionId and store it at test suite level (assuming that sessionId might needed across the test suite, if you want it for all suites, then you can even store it at project level, up to you).

         

         

        def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )

        holder = groovyUtils.getXmlHolder( "step1#Response" )

        def sessionId = holder.getNodeValue( "//*:result/*:Session" )

        context.testCase.testSuite.setPropertyValue('SESSION_ID', sessionId)

         

        Next step is to use the stored sessionId in various places: Property Expansion

        In the other steps except groovy:

              ${#TestSuite#SESSION_ID}

        In the groovy step:

             context.expand('${#TestSuite#SESSION_ID})