Example #1
0
        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();
            }
        }
Example #2
0
        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));
        }
Example #3
0
 public TodoApplicationTests(ComposeResource <TodoAppOptions> composeResource)
 {
     _composeResource = composeResource;
 }