Forum Discussion

Equinix_Inc_Sup's avatar
Equinix_Inc_Sup
Occasional Contributor
14 years ago

Inserting the constant tags in between the request

I got the following Request:
<a>
<a1>
<a11>123</a11>
</a1>
<c1>
</c1>
</a>

Now I want to append the following tags(Which does not come from the privious response) after <a11>123</a11>.
Folllowing is the content to append in between the xml request(once it is appended it has to be there in the request physically,not in memory or in variable).
<b11>abc</b11>
<b12>def<b12>.

Can you please let me know the way to do it.I tried with xml holder but I failed.If you can give me working example that will be great.
  • Equinix_Inc_Sup's avatar
    Equinix_Inc_Sup
    Occasional Contributor
    import groovy.xml.dom.DOMCategory
    import groovy.xml.QName
    def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
    holder=groovyUtils.getXmlHolder( testRunner.testCase.testSteps["PersistPermissionsForUser"].testRequest.requestContent );

    //Reading it from disabled test step and changing and writing it to another enabled test step.

    node = holder.getDomNode(" //ns4:PersistPermissionsRequest[1]/ns4:UserWithAssetPermissions[1]/ns5:PermissionMarkedAssetNode[1]/ns5:ChildNode[1]/ns5:ChildNode[2]/ns5:ChildNode[1]")
    holder.namespaces["ns5"] = "http://www.equinix.com/gse/service/schema/usermanagement/entity/v2_2"
    holder.namespaces["ns4"] = "http://www.equinix.com/gse/service/schema/permission/message/v2_2"

    def ds= "<ns5:Code>MANAGE_USER_PERMISSIONS_ON_ASSETS</ns5:Code> <ns5:Description>This is a client admin who has the right to manage all users under the party</ns5:Description>"
    use( DOMCategory)
    {
    node.appendNode(new QName( "http://www.equinix.com/gse/service/schema/permission/entity/v2_2", "ns5:Permission"), ds )
    }
    holder.put("//ns4:PersistPermissionsRequest[1]/ns4:UserWithAssetPermissions[1]/ns5:PermissionMarkedAssetNode[1]/ns5:ChildNode[1]/ns5:ChildNode[2]/ns5:ChildNode[1]",node)
    holder.updateProperty()

    log.info("Holder detailGGGGGGGGGGG"+holder.xml)
    def secondRequest = testRunner.testCase.getTestStepByName("PersistPermissionsForUserReal")
    def property = secondRequest.getProperty("Request")
    property.setValue(holder.prettyXml)
  • Equinix_Inc_Sup's avatar
    Equinix_Inc_Sup
    Occasional Contributor
    Above one added the tags only at the end of the Node.Not after the mentioned node.YOu can do that by the following way.

    import groovy.xml.dom.DOMCategory
    import groovy.xml.QName
    def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)

    holder=groovyUtils.getXmlHolder( testRunner.testCase.testSteps["PersistPermissionsForUser"].testRequest.requestContent );

    node = holder.getDomNode("//ns4:PersistPermissionsRequest[1]/ns4:UserWithAssetPermissions[1]/ns5:PermissionMarkedAssetNode[1]/ns5:ChildNode[2]")

    node3 = holder.getDomNode("//ns4:PersistPermissionsRequest[1]/ns4:UserWithAssetPermissions[1]/ns5:PermissionMarkedAssetNode[1]/ns5:ChildNode[2]/ns5:ChildNode[1]")

    holder.namespaces["ns5"] = "http://www.equinix.com/gse/service/schema/usermanagement/entity/v2_2"
    holder.namespaces["ns4"] = "http://www.equinix.com/gse/service/schema/permission/message/v2_2"

    def ps= "PLACE_SMART_HANDS"
    def ds= "This is a client admin who has the right to manage finace details"

    use( DOMCategory)
    {

    def permission = node.appendNode(new QName( "http://www.equinix.com/gse/service/schema/permission/entity/v2_2", "ns5:Permission"), )
    permission.appendNode(new QName( "http://www.equinix.com/gse/service/schema/permission/entity/v2_2", "ns5:Code"), ps )
    permission.appendNode(new QName( "http://www.equinix.com/gse/service/schema/permission/entity/v2_2", "ns5:Description"), ds )

    node.insertBefore(permission, node3)
    }
    holder.put("//ns4:PersistPermissionsRequest[1]/ns4:UserWithAssetPermissions[1]/ns5:PermissionMarkedAssetNode[1]/ns5:ChildNode[3]/ns5:ChildNode[1]/ns5:ChildNode[1]/ns5:ChildNode[1]",node)
    holder.updateProperty()


    log.info("Holder detailGGGGGGGGGGG"+ holder.xml)
    def secondRequest = testRunner.testCase.getTestStepByName("PersistPermissionsForUserReal")
    def property = secondRequest.getProperty("Request")
    property.setValue(holder.prettyXml)