using Mesa_Backlog.Library; using Microsoft.Extensions.Configuration; using Microsoft.VisualStudio.Services.Common; using Microsoft.VisualStudio.Services.WebApi; using Serilog; using System.Diagnostics; using System.Reflection; using WebApi = Microsoft.TeamFoundation.WorkItemTracking.WebApi; namespace Mesa_Backlog.MS_Test; [TestClass] public class AE_UnitTestWorkItemTrackingHttpClient { private readonly ILogger _Logger; private readonly AppSettings _AppSettings; private readonly string _WorkingDirectory; private readonly IsEnvironment _IsEnvironment; private readonly IConfigurationRoot _ConfigurationRoot; private readonly WebApi.WorkItemTrackingHttpClient _WorkItemTrackingHttpClient; public AE_UnitTestWorkItemTrackingHttpClient() { ILogger logger; AppSettings appSettings; string workingDirectory; IConfigurationRoot configurationRoot; LoggerConfiguration loggerConfiguration = new(); Assembly assembly = Assembly.GetExecutingAssembly(); bool debuggerWasAttachedAtLineZero = Debugger.IsAttached || assembly.Location.Contains(@"\bin\Debug"); IsEnvironment isEnvironment = new(processesCount: null, nullASPNetCoreEnvironmentIsDevelopment: debuggerWasAttachedAtLineZero, nullASPNetCoreEnvironmentIsProduction: !debuggerWasAttachedAtLineZero); IConfigurationBuilder configurationBuilder = new ConfigurationBuilder() .AddEnvironmentVariables() .AddJsonFile(isEnvironment.AppSettingsFileName); 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; _IsEnvironment = isEnvironment; _WorkingDirectory = workingDirectory; _ConfigurationRoot = configurationRoot; VssBasicCredential credential = new("", appSettings.Client.PAT); VssConnection connection = new(new(string.Concat(appSettings.Client.BaseAddress, appSettings.Client.BasePage)), credential); _WorkItemTrackingHttpClient = connection.GetClient(); } [TestMethod] public void TestMethodWorkItemTrackingHttpClient() { Assert.IsFalse(_WorkingDirectory is null); Assert.IsFalse(_ConfigurationRoot is null); string json = "{\r\n \"Req \": \"642\",\r\n \"Submitted\": \"7/19/2022 12:00:00 AM\",\r\n \"Requestor\": \"Susan H\",\r\n \"Assigned To \": \"Jonathan\",\r\n \"Second Resource\": \"\",\r\n \"Title\": \"Reactor Log Form -\\u003E Reactor Item tracking validation is not catching everything. Allowing invalid reactor items to be tracked. Not requiring that a react item be created before being logged\",\r\n \"Epi Line\": \"\",\r\n \"Area\": \"\",\r\n \"System(s)\": \"OI\",\r\n \"Pri Sort\": \"0\",\r\n \"Priority\": \"BugFix\",\r\n \"Status\": \"Open\",\r\n \"Definition\": \"\",\r\n \"Updates\": \"7/21/22 - data entry/validation issue. Will be done in conjunction with Equip Maint web UI\\u003Cbr /\\u003E7/19/22 - Added by JRO\",\r\n \"Est Effort _(days)\": \"1\",\r\n \"Commit Date \": \"\",\r\n \"Re-Commit Date \": \"\",\r\n \"UAT as of \": \"\",\r\n \"CMPDate\": null,\r\n \"F20\": \"\",\r\n \"F21\": \"\",\r\n \"F22\": \"\",\r\n \"F23\": \"\",\r\n \"F24\": \"\",\r\n \"F25\": \"\",\r\n \"F26\": \"\",\r\n \"F27\": \"\",\r\n \"F28\": \"\",\r\n \"F29\": \"\",\r\n \"F30\": \"\",\r\n \"F31\": \"\",\r\n \"F32\": \"\",\r\n \"F33\": \"\"\r\n }"; FIBacklogMesa? fIBacklogMesa = System.Text.Json.JsonSerializer.Deserialize(json); Assert.IsNotNull(fIBacklogMesa); _Logger.Information(fIBacklogMesa.ToString()); Task workItemTask = WorkItemTrackingHttpClient.CreateWorkItem(_IsEnvironment.Development, _WorkItemTrackingHttpClient, _AppSettings.Client.Project, fIBacklogMesa); workItemTask.Wait(); if (workItemTask.Result is null) throw new NullReferenceException(nameof(workItemTask.Result)); } }