using DynamicData; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.Extensions.Logging; using zTSMServices; namespace ZymonicServices.Tests; // TODO Update this to match current implementations public class ZymonicServicesShould { public Dictionary testSettings { get; set; } = new Dictionary { {"baseUri", "https://md5.zednax.com/zymonicmp"}, {"systemName", "ztsm"}, {"username", "alexm"}, {"password", "testing9999"}, {"client_id", "75fcc6794cdcc977d0d5afaa784421ee"}, {"client_secret", "testing123"}, {"scope", "general_api"} }; private readonly ZymonicSettings _settings; private readonly ZymonicDbContext _testDbContext; private readonly ZymonicAA _authService; private List results = new List(); private IZymonicLogger _logger; private IZymonicDbContextFactory _dbfactory; public ZymonicServicesShould() { var testDbName = Guid.NewGuid().ToString(); _dbfactory = new ZymonicDbContextFactory(new DbContextOptionsBuilder().UseInMemoryDatabase(testDbName).ConfigureWarnings(x => x.Ignore(InMemoryEventId.TransactionIgnoredWarning)).Options); _settings = new ZymonicSettings(_dbfactory, testSettings["baseUri"], testSettings["systemName"]); _settings.Setting("ClientId", testSettings["client_id"]); _settings.Setting("ClientSecret", testSettings["client_secret"]); _settings.Setting("Scope", testSettings["scope"]); using ILoggerFactory factory = LoggerFactory.Create(builder => builder.AddConsole()); _logger = (IZymonicLogger)new ZymonicLogger(factory.CreateLogger()); _authService = new ZymonicAA(_settings, _logger); } [Fact] public void GetSystemName() { Assert.Equal(testSettings["systemName"], _settings.SystemName()); } [Fact] public void GetBaseUri() { Assert.Equal(testSettings["baseUri"], _settings.BaseUri()); } [Fact] public async void CheckLoginSucceeds() { Assert.True(await _authService.Login(testSettings["username"], testSettings["password"])); } [Fact] public async void GetCbosFilterData() { Assert.True(await _authService.Login(testSettings["username"], testSettings["password"])); CbosFilStockLookup cfl = new CbosFilStockLookup(_logger, _dbfactory, _settings, _authService); IObservable> resultObservable = cfl.Connect(); await cfl.Search(); results = cfl.GetAll(); Assert.True(results.Count > 0, $"Only {results.Count} results returned."); } private static ZymonicDbContext CreateInMemoryContext(string dbName) { var dbContext = (ZymonicDbContext)dbFactory.CreateDbContext(); return dbContext; } }