69 lines
1.8 KiB
C#

using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.Extensions.Hosting;
namespace Ordering.FunctionalTests;
public class OrderingScenarioBase
{
private class OrderingApplication : WebApplicationFactory<Program>
{
public TestServer CreateServer()
{
return Server;
}
protected override IHost CreateHost(IHostBuilder builder)
{
builder.ConfigureServices(services =>
{
services.AddSingleton<IStartupFilter, AuthStartupFilter>();
});
builder.ConfigureAppConfiguration(c =>
{
var directory = Path.GetDirectoryName(typeof(OrderingScenarioBase).Assembly.Location)!;
c.AddJsonFile(Path.Combine(directory, "appsettings.Ordering.json"), optional: false);
});
return base.CreateHost(builder);
}
}
public TestServer CreateServer()
{
var factory = new OrderingApplication();
return factory.CreateServer();
}
public static class Get
{
public static string Orders = "api/v1/orders";
public static string OrderBy(int id)
{
return $"api/v1/orders/{id}";
}
}
public static class Put
{
public static string CancelOrder = "api/v1/orders/cancel";
public static string ShipOrder = "api/v1/orders/ship";
public static string CompleteOrder = "api/v1/orders/complete";
}
private class AuthStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return app =>
{
app.UseMiddleware<AutoAuthorizeMiddleware>();
next(app);
};
}
}
}