RestSharp для тестирования Rest Api: невозможно авторизовать остальные API с помощью Oauth2.Не уверен, что нужно сделать - PullRequest
0 голосов
/ 05 марта 2019

Я недавно начал изучать автоматическое тестирование Rest Api с помощью RestSharp.Я был в состоянии выполнить базовый тест для некоторого API отдыха.Однако для того же теста в составе новой сборки разработчики добавили функцию авторизации, которая называется Oauth2.Я не уверен, как и где это реализовать.Я приложил очень простой тест на получение и некоторую информацию, которая может понадобиться вам, чтобы помочь мне.

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Windows.Input;
using System.Windows.Forms;
using System.Drawing;
using Microsoft.VisualStudio.TestTools.UITesting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UITest.Extension;
using Keyboard = Microsoft.VisualStudio.TestTools.UITesting.Keyboard;
using RestSharp;
using System.Net;
using RestSharp.Authenticators;

namespace RestApiTest
{
    [CodedUITest]
    public class TestApi
    {
        [TestMethod]
        public void TestGetApi()
        {
            //https://XYZtestsample.azurewebsites.net/ - previous link, without authorization it works fine when passed as Restclient argument 
           
           
           
           var client = new RestClient("http://XYZarsuitewswagger-XYZarsuitestaging.azurewebsites.net/"); //--- This one has authentication header and does not work.

            //HttpBasicAuthenticator obj = new HttpBasicAuthenticator("XYZ.XYZ@in.XYZ.com", "XYZ@2019");            

           
           
           var request = new RestRequest("/XYZARSuiteAPI/v1/BUProfiles", Method.GET);
           
           
           
           
           // request.AddHeader("XYZ.XYZ@in.XYZ.com", "XYZ@2019");

            
            
            
            request.RequestFormat = DataFormat.Json;         
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;

             //new OAuth2Authenticator("XYZ.XYZ@in.abb.com", "XYZ@2019");

            IRestResponse response = client.Execute(request);
            var content = response.Content;         
        }

Ниже приведена информация, которую я вижу в Rest Api

Информация об авторизации Rest Api

Rest ApiИнформация запроса

ОБНОВЛЕНИЕ: у меня есть опция авторизации, доступная в примере пользовательского интерфейса, чтобы проверить вывод, когда я авторизовал его, я получил ниже информации

curl -X GET "http://XYZarsuitewswagger -XYZarsuitestaging.azurewebsites.net / XYZARSuiteAPI / v1 / BUProfiles"-H "принимает: применение / JSON" -H" разрешение: Знаменосец eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ii1zeE1KTUxDSURXTVRQdlp5SjZ0eC1DRHh3MCIsImtpZCI6Ii1zeE1KTUxDSURXTVRQdlp5SjZ0eC1DRHh3MCJ9..rJ1VDhjE3NDMnW5pdv8N02OsKX3vKBO0bTxo2Lx_KZWq6eMi1DAvTXNd49tZhCJTr-PrCwbwsZsvf3fye_fNjL2VthlOA40UsvbPkou-F_b3B2kK3jzAdn8icbNEw5-3cxx8nAKiuDVZeRMTa3KVj0Kd384Eb6ZO5JBf4evoMCNMidrVAeKbxcP0B2tF8Aw1cgDWswNqghCUjb9foxxVIP-7MFeNFpuxGvLjtcQHIgY9VqMMpYBpE5DYLjqX0yXkGqBWnD4v-590wYtH0YPB-XOOtKZsy280PEHMock8jlLQdBNOp0w9SVw7XLfy5p0vp3ovHZqbb9IbSHQy-frV4g "

Спасибо.

1 Ответ

0 голосов
/ 07 марта 2019

Необходимо установить свойство Authenticator для объекта RestClient.Также важно добавить заголовок Accept для объекта RestRequest, не будучи уверенным, будет ли это json в вашем случае, но вы можете установить здесь любой допустимый тип содержимого.

Пример:

var client = new RestClient("<your_base_url>");
client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator("<your_access_token>", "Bearer");

var request = new RestRequest("<your_query>", Method.GET);
request.AddHeader("Accept", "application/json");

IRestResponse response = client.Execute(request);
...