CreateResolver <TResult>(params TResult[] results)
            where TResult : class
        {
            var                        services   = new ServiceCollection();
            IMongoDatabase             database   = _resource.CreateDatabase();
            IMongoCollection <TResult> collection = database.GetCollection <TResult>("col");

            collection.InsertMany(results);

            services.AddSingleton <IMongoCollection <TResult> >(collection);

            return(services, ctx => ctx.Service <IMongoCollection <TResult> >().AsQueryable());
        }
        public async Task InitializeAsync()
        {
            MongoResource = new MongoResource();
            await MongoResource.InitializeAsync();

            Database = MongoResource.CreateDatabase();

            IWebHostBuilder hostBuilder = new WebHostBuilder()
                                          .ConfigureAppConfiguration(builder =>
            {
                builder.SetBasePath(Directory.GetCurrentDirectory());
                builder.AddJsonFile("appsettings.test.json", optional: true);
                builder.AddInMemoryCollection(new Dictionary <string, string>
                {
                    ["Identity:Database:ConnectionString"] =
                        MongoResource.ConnectionString,
                    ["Identity:Database:DatabaseName"] =
                        Database.DatabaseNamespace.DatabaseName
                });
            })
                                          .ConfigureTestServices(services =>
            {
            })
                                          .UseStartup <Startup>();

            var server = new TestServer(hostBuilder);

            Services = server.Services;

            IIdentityDbContext dbContext = server.Services.GetService <IIdentityDbContext>();

            var seeder = new DataSeeder(dbContext);
            await seeder.SeedIntialDataAsync(default);
        private static MongoDbContextData CreateContext(MongoResource mongoResource)
        {
            var mongoOptions = new MongoOptions
            {
                ConnectionString = mongoResource.ConnectionString,
                DatabaseName     = mongoResource.CreateDatabase().DatabaseNamespace.DatabaseName
            };
            var builder = new MongoDatabaseBuilder(mongoOptions);

            builder.RegisterImmutableConventionPack();
            return(builder.Build());
        }
Beispiel #4
0
        public async Task InitializeAsync()
        {
            MongoResource = new MongoResource();
            await MongoResource.InitializeAsync();

            Database = MongoResource.CreateDatabase();

            DbContext = new MediaStoreContext(
                new MongoOptions
            {
                ConnectionString = MongoResource.ConnectionString,
                DatabaseName     = Database.DatabaseNamespace.DatabaseName
            });

            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
                });
            })
                                          .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");

            await SeedIntialDataAsync();
        }
Beispiel #5
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));
        }