/// <summary> /// Starts an actual web server that can process callbacks /// </summary> public static IHost Start(string url, CancellationToken cancellationToken, ICallbackReceived callbackReceived) { var host = CreateHostBuilder(new string[0], url, callbackReceived).Build(); _ = host.RunAsync(cancellationToken); return(host); }
static IWebHostBuilder CreateWebHostBuilder(string url, ICallbackReceived callbackReceived, bool logWebServerDetails = false) { var webBuilder = new WebHostBuilder(); ConfigureWebHostBuilder(webBuilder, url, callbackReceived, logWebServerDetails); return(webBuilder); }
static void ConfigureWebHostBuilder(IWebHostBuilder webBuilder, string url, ICallbackReceived callbackReceived, bool logWebServerDetails = false) { var uri = new Uri(url); var hostAndPort = uri.Scheme + "://" + uri.Host + ":" + uri.Port; webBuilder.UseStartup <StressTestStartup>(); webBuilder.UseUrls(hostAndPort); webBuilder.UseSetting("callback::url", url); webBuilder.ConfigureServices((s) => { s.AddSingleton(callbackReceived); }); webBuilder.ConfigureAppConfiguration(cb => { cb.AddJsonStream(new MemoryStream(Encoding.UTF8.GetBytes(logWebServerDetails ? DebugConfig : NoMSLogConfig))); }); }
public CallbackController(ICallbackReceived callbackReceived) { this.callbackReceived = callbackReceived ?? throw new ArgumentException(nameof(callbackReceived)); }
static IHostBuilder CreateHostBuilder(string[] args, string url, ICallbackReceived callbackReceived, bool logWebServerDetails = false) { return(Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => ConfigureWebHostBuilder(webBuilder, url, callbackReceived, logWebServerDetails))); }
/// <summary> /// Returns a TestServer that mocks HttpClient and can be used in unit tests /// </summary> public static TestServer GetTestServer(string url, ICallbackReceived callbackReceived) { var hostBuilder = CreateWebHostBuilder(url, callbackReceived); return(new TestServer(hostBuilder)); }