mesa-backlog/mstest/AD_UnitTestHttpClient.cs
2022-08-26 15:40:05 -07:00

68 lines
2.9 KiB
C#

using Mesa_Backlog.Library;
using Microsoft.Extensions.Configuration;
using Serilog;
using System.Net.Http.Headers;
using System.Reflection;
using System.Text;
using Http = System.Net.Http;
namespace Mesa_Backlog.MS_Test;
[TestClass]
public class AD_UnitTestHttpClient
{
private readonly ILogger _Logger;
private readonly AppSettings _AppSettings;
private readonly string _WorkingDirectory;
private readonly IConfigurationRoot _ConfigurationRoot;
private readonly Http.HttpClient _HttpClient;
public AD_UnitTestHttpClient()
{
ILogger logger;
AppSettings appSettings;
string workingDirectory;
IConfigurationRoot configurationRoot;
LoggerConfiguration loggerConfiguration = new();
Assembly assembly = Assembly.GetExecutingAssembly();
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder()
.AddEnvironmentVariables()
.AddJsonFile("appsettings.Development.json");
configurationRoot = configurationBuilder.Build();
appSettings = Library.Binder.AppSettings.Get(configurationRoot);
workingDirectory = IWorkingDirectory.GetWorkingDirectory(assembly.GetName().Name, appSettings.WorkingDirectoryName);
Environment.SetEnvironmentVariable(nameof(workingDirectory), workingDirectory);
_ = ConfigurationLoggerConfigurationExtensions.Configuration(loggerConfiguration.ReadFrom, configurationRoot);
Log.Logger = loggerConfiguration.CreateLogger();
logger = Log.ForContext<AD_UnitTestHttpClient>();
logger.Information("Complete");
_Logger = logger;
_AppSettings = appSettings;
_WorkingDirectory = workingDirectory;
_ConfigurationRoot = configurationRoot;
byte[] bytes = Encoding.ASCII.GetBytes($":{_AppSettings.Client.PAT}");
string base64 = Convert.ToBase64String(bytes);
_HttpClient = new() { BaseAddress = new(_AppSettings.Client.BaseAddress) };
_HttpClient.DefaultRequestHeaders.Authorization = new("Basic", base64);
MediaTypeWithQualityHeaderValue mediaTypeWithQualityHeaderValue = new("application/json");
_HttpClient.DefaultRequestHeaders.Accept.Add(mediaTypeWithQualityHeaderValue);
}
[TestMethod]
public void TestMethodHttpClient()
{
Library.WorkItems.Root workItem;
Assert.IsFalse(_WorkingDirectory is null);
Assert.IsFalse(_ConfigurationRoot is null);
Library.WIQL.WorkItem[] workItems = Library.HttpClient.GetWorkItems(_HttpClient, _AppSettings.Client.BasePage, _AppSettings.Client.API, _AppSettings.Client.Query);
_Logger.Information(string.Concat(workItems, " item(s)"));
for (int i = 0; i < workItems.Length; i++)
{
workItem = Library.HttpClient.GetWorkItem(_HttpClient, _AppSettings.Client.BasePage, _AppSettings.Client.API, workItems[i].Id);
if (workItem is not null)
break;
}
}
}