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(); 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; } } }