Forum Discussion

Sriraj's avatar
8 years ago

Auto Token Generation for OAuth2.0

Hi ,


I have couple of application profiles something like in the attachment.


Each of these are API connection profiles for different applications calling the API via a Gateway. They use OAuth 2.0 with different client credentials.


In my E2E suite i use all of these profiles and i end up generating these token manually every time before i run my E2E suite .


Is there an option in ReadyAPI where it it generates these tokens automatically ? Say every 30mins 

14 Replies

  • New2API's avatar
    Frequent Contributor

    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.



    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.





    //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] "oAuth Profile name is: $oAuthProfileName"

    //Get Token Status
    def oAuthProfile = project.getAuthRepository().getEntry("$oAuthProfileName")
    def TokenStatus = oAuthProfile.accessTokenStatus.toString() "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) "Access Token Status is "+ oAuthProfile.accessTokenStatus


    since you have multiple profiles, you could iterate through them and update token.


    Hope this helps!

    • Sriraj's avatar

      New2API Ideally if your script works at test step level , It must work for me as well. Let me give it a try.

      • New2API's avatar
        Frequent Contributor

        Sriraj, give it a try. Currently it works like charm for me. Just one correction - this scripts runs just before a testcase as my event handler is TestRunListener.beforeRun. 



    • jameseg3's avatar
      New Contributor

      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, 



      • New2API's avatar
        Frequent 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:

        //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()
            	                 oAuthProfileName = oAuthProfilelist[i].name
             	   "oAuth Profile name is:  $oAuthProfileName"
                              //Get Token Status     
                              oAuthProfile = authContainer.getProfileByName("$oAuthProfileName")
                              TokenStatus = oAuthProfile.accessTokenStatus.toString()
                     "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)
                                                                 "Access Token Status is "+ oAuthProfile.accessTokenStatus



    • Preerab's avatar
      Occasional Contributor


      I have question on AUTO generating toke on expiration.

      Created discussion

      As suggestion I tried implementing 'TestRunListener.beforeRun' with given script and no luck.

      My token have pretty much good expiration, to test auto generation I screw up exisitng token and test them automation. 

      It works when I manually update token (Generate Token)

      READY API 2.6.0

      NOTE: AUTO REFRESH of my token is not set, so I need to create new toke when its expired.

      Any help is highly appreciated.

  • groovyguy's avatar
    Champion Level 1

    While I haven't done this myself, I have found usually if I need to do something similar I can usually find a way to access these parts in a groovy script test step using the ReadyAPI api. While that's not a direct answer, you might be able to explore that to at least have something you can put into an event / startup script.