public async Task InitializeAsync() { Configuration = BuildConfiguration(); Options = Configuration .GetSection("IdentityTests") .Get <IdentityTestOptions>(); var services = new ServiceCollection(); services.AddMagnet() .UseHttp(Options.Magnet.Url) .WithClientName( $"{Options.Magnet.Name}-{Environment.MachineName}"); ServiceProvider = services.BuildServiceProvider(); _magnetClient = ServiceProvider.GetService <MagnetClient>(); Containers = new ComposeResource <IdentityAppOptions>(); await Containers.InitializeAsync(); GenericContainerResource <IdentityHostOptions> host = Containers .GetResource <GenericContainerResource <IdentityHostOptions> >("host"); if (Options.Driver.Mode == SeleniumDriverMode.Remote) { GenericContainerResource <SelemiumFirefoxServerOptions> selenium = Containers .GetResource <GenericContainerResource <SelemiumFirefoxServerOptions> >("selenium"); SeleniumHubUrl = selenium.GetContainerUri().ToString(); HostUrl = host.GetInternalContainerUri().ToString(); } else { HostUrl = host.GetContainerUri().ToString(); } }
public async Task InitializeAsync() { Containers = new ComposeResource <MagicApiAppOptions>(); await Containers.InitializeAsync(); MongoResource = Containers.GetResource <MongoResource>("mongo"); IdentityHost = Containers .GetResource <GenericContainerResource <IdentityHostOptions> >("identity"); Database = MongoResource.CreateDatabase(); DbContext = new MediaStoreContext( new MongoOptions { ConnectionString = MongoResource.ConnectionString, DatabaseName = Database.DatabaseNamespace.DatabaseName }); string identityUrl = IdentityHost.GetContainerUri().ToString(); IWebHostBuilder hostBuilder = new WebHostBuilder() .ConfigureAppConfiguration(builder => { builder.SetBasePath(Directory.GetCurrentDirectory()); builder.AddJsonFile("appsettings.test.json", optional: true); builder.AddInMemoryCollection(new Dictionary <string, string> { ["MagicMedia:Database:ConnectionString"] = MongoResource.ConnectionString, ["MagicMedia:Database:DatabaseName"] = Database.DatabaseNamespace.DatabaseName, ["MagicMedia:Security:Authority"] = identityUrl }); }) .ConfigureTestServices(services => { services.AddSingleton(_httpClientFactory); services.AddMagicMediaTest(); services.RemoveAll <IOperationExecutorFactory>(); services.AddSingleton <IOperationExecutorFactory>(sp => new HttpOperationExecutorFactory( "MagicMediaTest", sp.GetRequiredService <InMemoryHttpClientFactory>().CreateClient, PipelineFactory(sp), sp)); }) .UseStartup <Startup>(); var server = new TestServer(hostBuilder); Services = server.Services; HttpClient = server.CreateClient(); GraphQLClient = Services.GetService <IMagicMediaTest>(); _httpClientFactory.HttpClient = server.CreateClient(); _httpClientFactory.HttpClient.BaseAddress = new Uri("http://localhost/graphql"); _httpClientFactory.TokenResolver = GetTokenAsync; await SeedIntialDataAsync(); //TODO. Improve readycheck for IdentityServer container await Task.Delay(TimeSpan.FromSeconds(1)); }
public TodoApplicationTests(ComposeResource <TodoAppOptions> composeResource) { _composeResource = composeResource; }