Update definition with active environment
SOLVED- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Update definition with active environment
I am trying to update interface definition of my soap services with this script :
import static com.eviware.soapui.impl.wsdl.actions.iface.UpdateInterfaceAction.recreateRequests
import static com.eviware.soapui.impl.wsdl.actions.iface.UpdateInterfaceAction.recreateTestRequests
import com.eviware.soapui.model.ModelItem
import com.eviware.soapui.impl.wsdl.WsdlRequest
import com.eviware.soapui.model.iface.Request
import com.eviware.soapui.impl.wsdl.WsdlInterface
import com.eviware.soapui.model.iface.Operation
import com.eviware.soapui.impl.wsdl.WsdlOperation
import com.eviware.soapui.impl.wsdl.actions.*
def project = testRunner.testCase.testSuite.project
def ifaceList = project.getInterfaceList()
//Mise a jour de toutes les interfaces
ifaceList.each{
iface->
def url = iface.definition
log.info iface.getClass()
def oldName = iface.getName()
log.info "Début mise à jour de l'interface : " + iface.getName() + " avec url : " + url
try {
iface.updateDefinition( url, false)
}catch(exception){
log.error exception.description
}
log.info "Interface mise à jour"
iface.setName(oldName)
List<ModelItem> updated = new ArrayList<ModelItem>()
updated.addAll(recreateRequests(iface, true, false, true, false))
}
It works fine except that this doesn't take into account the environment i choose. It keeps updating with the same endpoint url and doesn't override it with my environment endpoint.
How can i modify this script to do an updateDefinition based on the environment ?
Solved! Go to Solution.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @ancm,
I guess this behavior (selecting an active environment) depends on how exactly you run a test. There are several ways of specifying the environment: on the ReadyAPI control bar or in the script. You can try adding the environment name in the script:
// Replace the project and environment names with those you need def proj = testRunner.testCase.project.workspace.getProjectByName("Sample Project") proj.setActiveEnvironment("Test Environment")
Tanya Yatskovskaya
SmartBear Community and Education Manager
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Nothing changes with this piece of code
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hmmm. Community, we need your help.
@nmrao, @groovyguy, @avidCoder ?
Tanya Yatskovskaya
SmartBear Community and Education Manager
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
How about using Project level custom properties if something you got stuck with and like to proceed?
Regards,
Rao.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In fact the whole purpose of this script is to perform an update definition of the service according to the chosen environment before running all tests.
The problem is that the url i get with "def url = iface.definition" is the one specified during the import of the soap project not the one corresponding to the environment.
I think What i need is to change the definition URL according to the environment i choose before doing an update
I dont know if this is even possible to do it programmatically
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I believe that, wsdl definition will be same irrespective of environment except the url. Isn't it?
Regards,
Rao.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes it is
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Nobody seems to have a solution i guess the product cannot do it
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @ancm,
I've checked your code. When you define the following in your code:
def url = iface.definition
you get the WSDL URL. Please see the screenshot:
As @nmrao said this URL doesn't depend on an environment. This URL is defined on a service level.
If you need to update the definition based on the currently selected environment, you need to change the "url" value in your code before doing this:
iface.updateDefinition( url, false)
Now, you're using the same URL.
You can get the Endpoint of the active environment with this code:
project.getActiveEnvironment().getSoapServiceByName("Test_serviceSoap").getEndpoint().getConfig().getStringValue()
Note: don't forget to change the Test_serviceSoap value in the script to your actual Service name:
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
