Пытаемся перейти от ручного тестирования к автоматизации тестов API. Решил написать тесты на C# и установил следующие пакеты: Nunit, NUnit3TestAdapter, NewtonSoft.Json, Fluent Assertions и RestSharp. Единственная проблема — получить доступ с помощью токена Bearer, я не знаю как, может кто-нибудь с этим помочь?
Пытаемся перейти от ручного тестирования к автоматизации тестов API. Решил написать тесты на C# и установил следующие пакеты: Nunit, NUnit3TestAdapter, NewtonSoft.Json, Fluent Assertions и RestSharp. Единственная проблема — получить доступ с помощью токена Bearer, я не знаю как, может кто-нибудь с этим помочь? [code]using System; using System.Threading.Tasks; using Newtonsoft.Json.Linq; using NUnit.Framework; using RestSharp; using FluentAssertions;
[Test] public async Task Test_ApiAuthentication() { var token = await GetBearerTokenAsync(TokenUrl, ClientId, ClientSecret); token.Should().NotBeNullOrEmpty("Token should be retrieved successfully");
if (!string.IsNullOrEmpty(token)) { var responseContent = await MakeAuthenticatedRequestAsync(ApiUrl, token); responseContent.Should().NotBeNull("Response content should be received"); Console.WriteLine($"API Response: {responseContent}"); } }
[Test] public async Task TokenRetrieval() { var token = await GetBearerTokenAsync(TokenUrl, ClientId, ClientSecret); token.Should().NotBeNullOrEmpty("Token should be retrieved successfully"); }
private static async Task GetBearerTokenAsync(string tokenUrl, string clientId, string clientSecret) { var client = new RestClient(tokenUrl); var request = new RestRequest(); request.AddParameter("grant_type", "client_credentials"); request.AddParameter("client_id", clientId); request.AddParameter("client_secret", clientSecret); request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); request.Method = Method.Post;
var response = await client.ExecuteAsync(request);
if (response.IsSuccessful) { var json = JObject.Parse(response.Content); return json["access_token"]?.ToString(); } else { Console.WriteLine($"Error: {response.StatusCode} - {response.StatusDescription}"); return null; } }
private static async Task MakeAuthenticatedRequestAsync(string apiUrl, string token) { var client = new RestClient(apiUrl); var request = new RestRequest(); request.AddHeader("Authorization", $"Bearer {token}"); request.Method = Method.Get;
var response = await client.ExecuteAsync(request);