Forum Discussion
Hi Sriraj, I was also ran into similar issue and one of the community member helped with groovy method. In my example I have only one Auth profile but I could have multiple in future.
Implementation:
I used this in event handler - TestRunListener.beforeRun - by doing this, script is checking at the beginning of a testcase if token is expired or not. if expired then retrieves from the server.
Script:
import com.eviware.soapui.impl.rest.actions.oauth.OltuOAuth2ClientFacade
import com.eviware.soapui.support.editor.inspectors.auth.TokenType
import com.eviware.soapui.impl.rest.OAuth2Profile.*
//Get Project
def project = testRunner.testCase.testSuite.getProject()
//Get oAuth Profile Name
def oAuthProfilelist = project.getOAuth2ProfileContainer().getOAuth2ProfileNameList()
def oAuthProfileName
if(oAuthProfilelist.size() == 1){
oAuthProfileName = oAuthProfilelist[0]
log.info "oAuth Profile name is: $oAuthProfileName"
}
//Get Token Status
def oAuthProfile = project.getAuthRepository().getEntry("$oAuthProfileName")
def TokenStatus = oAuthProfile.accessTokenStatus.toString()
log.info "Access Token Status is: $TokenStatus"
//Get Access Token from the server if expired
if (TokenStatus != 'RETRIEVED_FROM_SERVER'){
def oAuthClientFacade = new OltuOAuth2ClientFacade(TokenType.ACCESS)
oAuthClientFacade.requestAccessToken(oAuthProfile, true)
log.info "Access Token Status is "+ oAuthProfile.accessTokenStatus
}
since you have multiple profiles, you could iterate through them and update token.
Hope this helps!
Is this still working for you? I'm seeing that AuthRepository is missing from the API docs. Looks like a lot of this has been deprecated. Have you found a work-around? (I can't even use the getAuthRepository() method).
Thanks in advance,
-James
- New2API7 years agoFrequent Contributor
Hi James, I am still using the same script and it works perfectly. Currently, I am on ReadyAPI 2.2.
Also, I do see Auth Repository tab under Auth Manager section.
What's version of SoapUI you are running?
for OS version, there is a small change:
import com.eviware.soapui.impl.rest.actions.oauth.OltuOAuth2ClientFacade import com.eviware.soapui.impl.rest.OAuth2Profile.* //Get Project def project = testRunner.testCase.testSuite.getProject() //Get oAuth2 Profile Name def authContainer def oAuthProfilelist def oAuthProfile def oAuthProfileName def TokenStatus def oAuthClientFacade def i = 0 //Get oAuth profile name list authContainer = testRunner.testCase.testSuite.project.OAuth2ProfileContainer oAuthProfilelist = authContainer.getOAuth2ProfileList() oAuthProfilelist.each{ oAuthProfileName = oAuthProfilelist[i].name log.info "oAuth Profile name is: $oAuthProfileName" //Get Token Status oAuthProfile = authContainer.getProfileByName("$oAuthProfileName") TokenStatus = oAuthProfile.accessTokenStatus.toString() log.info "Access Token Status for $oAuthProfileName is: $TokenStatus" //Get Access Token from the server if expired if (TokenStatus != 'Retrieved from server'){ oAuthClientFacade = new OltuOAuth2ClientFacade().requestAccessToken(oAuthProfile) log.info "Access Token Status is "+ oAuthProfile.accessTokenStatus } i++ }
- jameseg37 years agoNew Contributor
Thank you so much, this is working great.
- VenkateshM7 years agoOccasional ContributorHi,
I am having same problem. I tried with the script provided in this thread but still I am getting error msg like token expired unable to refresh. How you resolved this problem?
Related Content
- 31 days ago
Recent Discussions
- 5 days ago
- 10 days ago