Код: Выделить всё
using System;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using NUnit.Framework;
using RestSharp;
using FluentAssertions;
namespace AutoTest1.TestFixtures
{
[TestFixture]
public class ApiTests
{
private const string TokenUrl = "https://testapi.com/token";
private const string ClientId = "123456789";
private const string ClientSecret = "1000222";
[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);
if (response.IsSuccessful)
{
return response.Content;
}
else
{
Console.WriteLine($"Error: {response.StatusCode} - {response.StatusDescription}");
return null;
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... th-c-sharp