Forum Discussion

SoapuiTeay's avatar
SoapuiTeay
Occasional Contributor
4 years ago

Automating the process to get access token

I am working on a soap automation project on which I need access token.
We have to click on "Auth" tab

2. Click on "Get Access Token"

3. Click on "Get Access Token" again

4. Wait for SoapUI Browser to open to manually enter in the data and click "Login to Application "

From there we now can run all the Requests solution for the Automation section in the "Get Access Token" section > Automation... Button where you can put a page 1 or page 2 script. (none of the online examples worked for Salesforce)

or

or

b. A Groovy way to do the above

or

c. To Generalize - we don't want to have to manually do the above 1-4 steps
Please suggest me how to automate the above 1-4 steps.
  • aaronpliu's avatar
    aaronpliu
    Frequent Contributor

    SoapuiTeay 

    If you have separate /token for oauth2, then you are able to create a scripts to dynamically get access_token.

     

    FYI

    import groovy.json.JsonSlurper
    
    def data = new JsonSlurper().parseText(response) // get response of token
    // set access token
    def authProfileName = "LoginToken"
    def project = testRunner.testCase.testSuite.project
    def profile = project.getOAuth2ProfileContainer()
    
    if (! (authProfileName in profile.getOAuth2ProfileList().name)) {
    	profile.addNewOAuth2Profile(authProfileName) // add new oauth2
    }
    def auth = profile.getProfileByName(authProfileName)
    auth.setAccessToken(data.access_token)  // set token
    project.setAuthProfile(authProfileName) // applied in project level

     

    Then you can select "LoginToken" for your request in test step or changed it in Auth manager

     

    Thanks,

    /Aaron

    • SoapuiTeay's avatar
      SoapuiTeay
      Occasional Contributor
      Thanks Aaron. But it opens a web login page in soapui. I need to provide the credentials. Right now I am providing manually. I tried to automate using js but it didn't work. Do you have any other workarounds for this?
      • aaronpliu's avatar
        aaronpliu
        Frequent Contributor

        SoapuiTeay 

        Looks like you need to get token from web page.

        So you are able to create a common test case with http request to simulate web page action to capture required login information.

        Then using above-mentioned scripts to create an auth profile and each REST step to reference it.

         

        If you have direct method or API (i.e. /token) to retrieve access token with credential, then no need to capture login credential like web page.

        Not sure which type of authentication you use? 

         

         

        Thanks,

        /Aaron

  • Hi,

    Can we directly leverage the Salesforce API instead? If we could ping the service and request authentication through an API call, I think it would provide more room for automation.  

    • SoapuiTeay's avatar
      SoapuiTeay
      Occasional Contributor
      It opens a web login page and we need to enter the credentials. So far I am entering the data manually. Could not automate this step. Do you have any idea on this?
      • aihnatsiuk's avatar
        aihnatsiuk
        Occasional Contributor

        I created the script for it. You need to know the email, password, login button element locators. Now the system automatically opens the login page> fill in all the info and click the login button when the token expired