CYPRESS store cy.request response in a variable












0















I have this one file that calls a login function



testing.js



var res = accounts.createSession(config.email_prod,config.password_prod,user_id)


on another file, I have this:



accounts.js



export function createSession(email,password,user_id){
cy.request({
method:'POST',
url:config.accounts_prod + '/token',
headers:{
'authorization': 'Basic testestestestest'
},
qs:{
'grant_type':'password',
'username':email,
'password':password
}
}).then((response)=>{
var X = response.body.access_token
cy.log("create session " + x)
login(response.body.access_token, user_id)
})
}

export function login(token,user_id){
var result = cy.request({
method:'POST',
url:config.ws_prod + '/login.pl',
headers:{
'authorization': token,
'Content-Type' : 'application/x-www-form-urlencoded'
},
body:'user_id='+user_id+'&device_id='+device_id+'&os_type='+os_type
})
return token
}


so I want to store token value and return it to res variable on testing.js file
but everytime I store token (in this example I store it inside X) and I try to print it, it always says undefined
but I can do cy.log(token) and it was fine on login() function, but that's all it can do, it cannot be store into a variable
is there another way for me to store token ?










share|improve this question



























    0















    I have this one file that calls a login function



    testing.js



    var res = accounts.createSession(config.email_prod,config.password_prod,user_id)


    on another file, I have this:



    accounts.js



    export function createSession(email,password,user_id){
    cy.request({
    method:'POST',
    url:config.accounts_prod + '/token',
    headers:{
    'authorization': 'Basic testestestestest'
    },
    qs:{
    'grant_type':'password',
    'username':email,
    'password':password
    }
    }).then((response)=>{
    var X = response.body.access_token
    cy.log("create session " + x)
    login(response.body.access_token, user_id)
    })
    }

    export function login(token,user_id){
    var result = cy.request({
    method:'POST',
    url:config.ws_prod + '/login.pl',
    headers:{
    'authorization': token,
    'Content-Type' : 'application/x-www-form-urlencoded'
    },
    body:'user_id='+user_id+'&device_id='+device_id+'&os_type='+os_type
    })
    return token
    }


    so I want to store token value and return it to res variable on testing.js file
    but everytime I store token (in this example I store it inside X) and I try to print it, it always says undefined
    but I can do cy.log(token) and it was fine on login() function, but that's all it can do, it cannot be store into a variable
    is there another way for me to store token ?










    share|improve this question

























      0












      0








      0








      I have this one file that calls a login function



      testing.js



      var res = accounts.createSession(config.email_prod,config.password_prod,user_id)


      on another file, I have this:



      accounts.js



      export function createSession(email,password,user_id){
      cy.request({
      method:'POST',
      url:config.accounts_prod + '/token',
      headers:{
      'authorization': 'Basic testestestestest'
      },
      qs:{
      'grant_type':'password',
      'username':email,
      'password':password
      }
      }).then((response)=>{
      var X = response.body.access_token
      cy.log("create session " + x)
      login(response.body.access_token, user_id)
      })
      }

      export function login(token,user_id){
      var result = cy.request({
      method:'POST',
      url:config.ws_prod + '/login.pl',
      headers:{
      'authorization': token,
      'Content-Type' : 'application/x-www-form-urlencoded'
      },
      body:'user_id='+user_id+'&device_id='+device_id+'&os_type='+os_type
      })
      return token
      }


      so I want to store token value and return it to res variable on testing.js file
      but everytime I store token (in this example I store it inside X) and I try to print it, it always says undefined
      but I can do cy.log(token) and it was fine on login() function, but that's all it can do, it cannot be store into a variable
      is there another way for me to store token ?










      share|improve this question














      I have this one file that calls a login function



      testing.js



      var res = accounts.createSession(config.email_prod,config.password_prod,user_id)


      on another file, I have this:



      accounts.js



      export function createSession(email,password,user_id){
      cy.request({
      method:'POST',
      url:config.accounts_prod + '/token',
      headers:{
      'authorization': 'Basic testestestestest'
      },
      qs:{
      'grant_type':'password',
      'username':email,
      'password':password
      }
      }).then((response)=>{
      var X = response.body.access_token
      cy.log("create session " + x)
      login(response.body.access_token, user_id)
      })
      }

      export function login(token,user_id){
      var result = cy.request({
      method:'POST',
      url:config.ws_prod + '/login.pl',
      headers:{
      'authorization': token,
      'Content-Type' : 'application/x-www-form-urlencoded'
      },
      body:'user_id='+user_id+'&device_id='+device_id+'&os_type='+os_type
      })
      return token
      }


      so I want to store token value and return it to res variable on testing.js file
      but everytime I store token (in this example I store it inside X) and I try to print it, it always says undefined
      but I can do cy.log(token) and it was fine on login() function, but that's all it can do, it cannot be store into a variable
      is there another way for me to store token ?







      javascript cypress






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 14 '18 at 3:59









      fannybfannyb

      63




      63
























          1 Answer
          1






          active

          oldest

          votes


















          0














          Maybe if i use a callback like parameter, then the second function will wait for the asynchronous task is over



             export function createSession(email,password,user_id,callback){
          cy.request({
          method:'POST',
          url:config.accounts_prod + '/token',
          headers:{
          'authorization': 'Basic testestestestest'
          },
          qs:{
          'grant_type':'password',
          'username':email,
          'password':password
          }
          }).then((response)=>{
          var X = response.body.access_token
          cy.log("create session " + x)
          callback(response.body.access_token, user_id);

          })
          }

          var login= function (token,user_id){
          var result = cy.request({
          method:'POST',
          url:config.ws_prod + '/login.pl',
          headers:{
          'authorization': token,
          'Content-Type' : 'application/x-www-form-urlencoded'
          },
          body:'user_id='+user_id+'&device_id='+device_id+'&os_type='+os_type
          })
          return token
          }


          //then call first fn



          createSession(email,password,user_id,login);


          Sorry for my english



          Hello From México



          I think this is a good answer, but i can't answer anymore .. I have a ban.



          Can you helpme?



          I need the point.






          share|improve this answer

























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53293004%2fcypress-store-cy-request-response-in-a-variable%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            Maybe if i use a callback like parameter, then the second function will wait for the asynchronous task is over



               export function createSession(email,password,user_id,callback){
            cy.request({
            method:'POST',
            url:config.accounts_prod + '/token',
            headers:{
            'authorization': 'Basic testestestestest'
            },
            qs:{
            'grant_type':'password',
            'username':email,
            'password':password
            }
            }).then((response)=>{
            var X = response.body.access_token
            cy.log("create session " + x)
            callback(response.body.access_token, user_id);

            })
            }

            var login= function (token,user_id){
            var result = cy.request({
            method:'POST',
            url:config.ws_prod + '/login.pl',
            headers:{
            'authorization': token,
            'Content-Type' : 'application/x-www-form-urlencoded'
            },
            body:'user_id='+user_id+'&device_id='+device_id+'&os_type='+os_type
            })
            return token
            }


            //then call first fn



            createSession(email,password,user_id,login);


            Sorry for my english



            Hello From México



            I think this is a good answer, but i can't answer anymore .. I have a ban.



            Can you helpme?



            I need the point.






            share|improve this answer






























              0














              Maybe if i use a callback like parameter, then the second function will wait for the asynchronous task is over



                 export function createSession(email,password,user_id,callback){
              cy.request({
              method:'POST',
              url:config.accounts_prod + '/token',
              headers:{
              'authorization': 'Basic testestestestest'
              },
              qs:{
              'grant_type':'password',
              'username':email,
              'password':password
              }
              }).then((response)=>{
              var X = response.body.access_token
              cy.log("create session " + x)
              callback(response.body.access_token, user_id);

              })
              }

              var login= function (token,user_id){
              var result = cy.request({
              method:'POST',
              url:config.ws_prod + '/login.pl',
              headers:{
              'authorization': token,
              'Content-Type' : 'application/x-www-form-urlencoded'
              },
              body:'user_id='+user_id+'&device_id='+device_id+'&os_type='+os_type
              })
              return token
              }


              //then call first fn



              createSession(email,password,user_id,login);


              Sorry for my english



              Hello From México



              I think this is a good answer, but i can't answer anymore .. I have a ban.



              Can you helpme?



              I need the point.






              share|improve this answer




























                0












                0








                0







                Maybe if i use a callback like parameter, then the second function will wait for the asynchronous task is over



                   export function createSession(email,password,user_id,callback){
                cy.request({
                method:'POST',
                url:config.accounts_prod + '/token',
                headers:{
                'authorization': 'Basic testestestestest'
                },
                qs:{
                'grant_type':'password',
                'username':email,
                'password':password
                }
                }).then((response)=>{
                var X = response.body.access_token
                cy.log("create session " + x)
                callback(response.body.access_token, user_id);

                })
                }

                var login= function (token,user_id){
                var result = cy.request({
                method:'POST',
                url:config.ws_prod + '/login.pl',
                headers:{
                'authorization': token,
                'Content-Type' : 'application/x-www-form-urlencoded'
                },
                body:'user_id='+user_id+'&device_id='+device_id+'&os_type='+os_type
                })
                return token
                }


                //then call first fn



                createSession(email,password,user_id,login);


                Sorry for my english



                Hello From México



                I think this is a good answer, but i can't answer anymore .. I have a ban.



                Can you helpme?



                I need the point.






                share|improve this answer















                Maybe if i use a callback like parameter, then the second function will wait for the asynchronous task is over



                   export function createSession(email,password,user_id,callback){
                cy.request({
                method:'POST',
                url:config.accounts_prod + '/token',
                headers:{
                'authorization': 'Basic testestestestest'
                },
                qs:{
                'grant_type':'password',
                'username':email,
                'password':password
                }
                }).then((response)=>{
                var X = response.body.access_token
                cy.log("create session " + x)
                callback(response.body.access_token, user_id);

                })
                }

                var login= function (token,user_id){
                var result = cy.request({
                method:'POST',
                url:config.ws_prod + '/login.pl',
                headers:{
                'authorization': token,
                'Content-Type' : 'application/x-www-form-urlencoded'
                },
                body:'user_id='+user_id+'&device_id='+device_id+'&os_type='+os_type
                })
                return token
                }


                //then call first fn



                createSession(email,password,user_id,login);


                Sorry for my english



                Hello From México



                I think this is a good answer, but i can't answer anymore .. I have a ban.



                Can you helpme?



                I need the point.







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Dec 29 '18 at 1:35

























                answered Nov 14 '18 at 4:08









                Daniel BadilloDaniel Badillo

                11




                11






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53293004%2fcypress-store-cy-request-response-in-a-variable%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    這個網誌中的熱門文章

                    Post-Redirect-Get with Spring WebFlux and Thymeleaf

                    Xamarin.form Move up view when keyboard appear

                    JBPM : POST request for execute process go wrong