Автоматизация тестов API с помощью C#C#

Место общения программистов C#
Ответить
Anonymous
 Автоматизация тестов API с помощью C#

Сообщение Anonymous »

Пытаемся перейти от ручного тестирования к автоматизации тестов API. Решил написать тесты на C# и установил следующие пакеты: Nunit, NUnit3TestAdapter, NewtonSoft.Json, Fluent Assertions и RestSharp. Единственная проблема — получить доступ с помощью токена Bearer, я не знаю как, может кто-нибудь с этим помочь?

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»