예제 #1
0
    public void ConfigureApplicationMiddleware_Test()
    {
        // Given
        var config = new ConfigurationBuilder().Build();
        var option = new BlazorWasmPrerenderingOptions
        {
            MiddlewarePackages = new[] {
                new MiddlewarePackageReference {
                    PackageIdentity = "Toolbelt.Blazor.HeadElement.ServerPrerendering", Assembly = "", Version = "1.5.1"
                }
            }
        };
        var services = new ServiceCollection()
                       .AddSingleton(config as IConfiguration)
                       .AddSingleton(option)
                       .AddSingleton(new CustomAssemblyLoader())
                       .AddSingleton(new Uri("http://127.0.0.1:5000"))
                       .AddSingleton(new HostEnvironment("http://127.0.0.1:5000", "Prerendering") as IWebAssemblyHostEnvironment)
                       .AddSingleton <Startup>()
                       .BuildServiceProvider();
        var startUp = services.GetRequiredService <Startup>();

        Expression <Func <IApplicationBuilder, IApplicationBuilder> > useMethod =
            app => app.Use(It.IsAny <Func <RequestDelegate, RequestDelegate> >());
        var appBuilderMock = new Mock <IApplicationBuilder>();

        appBuilderMock.Setup(useMethod).Returns(appBuilderMock.Object);
        appBuilderMock.SetupProperty(app => app.ApplicationServices, services);

        // When
        startUp.ConfigureApplicationMiddleware(appBuilderMock.Object);

        // Then
        appBuilderMock.Verify(useMethod, Times.Once);
    }
예제 #2
0
 public Startup(IConfiguration configuration, Uri baseAddress, IWebAssemblyHostEnvironment hostEnvironment, BlazorWasmPrerenderingOptions prerenderingOptions)
 {
     this.Configuration       = configuration;
     this.BaseAddress         = baseAddress;
     this.HostEnvironment     = hostEnvironment;
     this.PrerenderingOptions = prerenderingOptions;
 }
예제 #3
0
        public static async Task <IWebHost> StartWebHostAsync(CustomAssemblyLoader assemblyLoader, string?environment, BlazorWasmPrerenderingOptions prerenderingOptions)
        {
            const string baseAddress     = "http://127.0.0.1:5050";
            var          hostEnvironment = new HostEnvironment(baseAddress, environment ?? "Prerendering");

            var appsettingsPath            = Path.Combine(prerenderingOptions.WebRootPath, "appsettings.json");
            var appsettingsEnvironmentPath = Path.Combine(prerenderingOptions.WebRootPath, $"appsettings.{hostEnvironment.Environment}.json");
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile(appsettingsPath, optional: true)
                                .AddJsonFile(appsettingsEnvironmentPath, optional: true)
                                .Build();

            var hostBuilder = new WebHostBuilder()
                              .UseConfiguration(configuration)
                              .UseKestrel()
                              .UseUrls(baseAddress)
                              .UseWebRoot(prerenderingOptions.WebRootPath)
                              .ConfigureServices(services => services
                                                 .AddSingleton(assemblyLoader)
                                                 .AddSingleton(hostEnvironment as IWebAssemblyHostEnvironment))
                              .UseStartup(context => new Startup(context.Configuration, new Uri(baseAddress), hostEnvironment, prerenderingOptions));
            var webHost = hostBuilder.Build();
            await webHost.StartAsync();

            return(webHost);
        }