Как отправить авторизацию из нескольких частей, используя gem api rest-client - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь использовать гем rest-client для выполнения вызовов API в целях автоматизации тестирования. Это требует, чтобы я сначала прошел аутентификацию с первоначальным запросом. Затем следующие запросы должны содержать возвращенный токен из первого запроса и адрес электронной почты пользователя. В настоящее время я застрял на том, как правильно отправить второй запрос, выполните это в пост-запросе на создание объекта.

Первый запрос на получение токена, который работает нормально и возвращает мне токен, который мне нужен:

request = '{
            "user": {
                "password" : "abcdefg",
                "email" : "example@email.com"
                }
            }'

response = RestClient.post "https://moviesite.com/sign_in", 
            request, {
                accept: "application/json", 
                content_type: "application/json"
            }

Я сохраняю значение токена следующим образом:

results = JSON.parse(response)
            puts results
            token_value = results['token']
            puts token_value

Второй запрос, когда я пытаюсь использовать токен для выполнения действия над объектом:

request2 = '{
            "movie": {
                "title": "new movie",
                "status": "release"
                }
            }'

response2 = RestClient.post "https://moviesite.com/movies", 
            request2, {
                accept: "application/json", 
                content_type: "application/json",
                :Authorization => "Token token=#{token_value}, email='example@email.com'"
            }

first request executes just fine and returns the token, i then try to insert the token in the second request but when the second request executes im getting an exception which makes me wonder if i correctly put it together.


Traceback (most recent call last):
        9: from APITest.rb:46:in `<main>'
        8: from /Users/user/.rvm/gems/ruby-2.6.3/gems/rest-client-2.1.0/lib/restclient.rb:70:in `post'
        7: from /Users/user/.rvm/gems/ruby-2.6.3/gems/rest-client-2.1.0/lib/restclient/request.rb:63:in `execute'
        6: from /Users/user/.rvm/gems/ruby-2.6.3/gems/rest-client-2.1.0/lib/restclient/request.rb:163:in `execute'
        5: from /Users/user/.rvm/gems/ruby-2.6.3/gems/rest-client-2.1.0/lib/restclient/request.rb:727:in `transmit'
        4: from /Users/user/.rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/net/http.rb:920:in `start'
        3: from /Users/user/.rvm/gems/ruby-2.6.3/gems/rest-client-2.1.0/lib/restclient/request.rb:743:in `block in transmit'
        2: from /Users/user/.rvm/gems/ruby-2.6.3/gems/rest-client-2.1.0/lib/restclient/request.rb:836:in `process_result'
        1: from /Users/user/.rvm/gems/ruby-2.6.3/gems/rest-client-2.1.0/lib/restclient/abstract_response.rb:129:in `return!'
/Users/user/.rvm/gems/ruby-2.6.3/gems/rest-client-2.1.0/lib/restclient/abstract_response.rb:249:in `exception_with_response': 404 Not Found (RestClient::NotFound)
...