public async Task ExecuteAsyncTest_WebController() { var appSettings = _serviceScopeFactory.CreateScope().ServiceProvider .GetService <AppSettings>(); appSettings !.ApplicationType = AppSettings.StarskyAppType.WebController; var service = new PackageTelemetryBackgroundService(_serviceScopeFactory); CancellationTokenSource source = new CancellationTokenSource(); CancellationToken token = source.Token; source.Cancel(); // <- cancel before start MethodInfo dynMethod = service.GetType().GetMethod("ExecuteAsync", BindingFlags.NonPublic | BindingFlags.Instance); if (dynMethod == null) { throw new Exception("missing ExecuteAsync"); } await dynMethod.InvokeAsync(service, new object[] { token }); var httpProvider = _serviceScopeFactory.CreateScope().ServiceProvider .GetService <IHttpProvider>(); var fakeHttpProvider = httpProvider as FakeIHttpProvider; Assert.IsTrue(fakeHttpProvider?.UrlCalled.Any(p => p.Contains(PackageTelemetry.PackageTelemetryUrl))); }
public void ExecuteAsyncTest_NotWhenDisabled() { var appSettings = _serviceScopeFactory.CreateScope().ServiceProvider .GetService <AppSettings>(); appSettings !.ApplicationType = AppSettings.StarskyAppType.Admin; var httpProvider1 = _serviceScopeFactory.CreateScope().ServiceProvider .GetService <IHttpProvider>(); var fakeHttpProvider1 = httpProvider1 as FakeIHttpProvider; fakeHttpProvider1 !.UrlCalled = new List <string>(); var service = new PackageTelemetryBackgroundService(_serviceScopeFactory); CancellationTokenSource source = new CancellationTokenSource(); CancellationToken token = source.Token; source.Cancel(); // <- cancel before start MethodInfo dynMethod = service.GetType().GetMethod("ExecuteAsync", BindingFlags.NonPublic | BindingFlags.Instance); if (dynMethod == null) { throw new Exception("missing ExecuteAsync"); } dynMethod.Invoke(service, new object[] { token }); var httpProvider = _serviceScopeFactory.CreateScope().ServiceProvider .GetService <IHttpProvider>(); var fakeHttpProvider = httpProvider as FakeIHttpProvider; Assert.IsFalse(fakeHttpProvider?.UrlCalled.Contains(PackageTelemetry.PackageTelemetryUrl)); }