Esempio n. 1
0
        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);
Esempio n. 2
0
        public IIdentityDbContext GetDbContext()
        {
            MongoResource resource = Containers
                                     .GetResource <MongoResource>("mongo");

            return(new IdentityDbContext(new MongoOptions
            {
                ConnectionString = resource.ConnectionString,
                DatabaseName = "magic-identity"
            }));
        }
Esempio n. 3
0
        /// <summary>
        ///     获得资源定义
        /// </summary>
        /// <returns></returns>
        private MongoResource GetRoleResource()
        {
            var res = new MongoResource
            {
                Type           = (MongoResource.ResourceType)Enum.Parse(typeof(MongoResource.ResourceType), cmbResourceType.Text),
                DataBaseName   = cmbDatabase.SelectedIndex == 0 ? string.Empty : cmbDatabase.Text,
                CollectionName = cmbCollection.SelectedIndex == 0 ? string.Empty : cmbCollection.Text
            };

            return(res);
        }
        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());
        }
Esempio n. 5
0
        private Func <IResolverContext, IExecutable <TResult> > BuildResolver <TResult>(
            MongoResource mongoResource,
            params TResult[] results)
            where TResult : class
        {
            IMongoCollection <TResult> collection =
                mongoResource.CreateCollection <TResult>("data_" + Guid.NewGuid().ToString("N"));

            collection.InsertMany(results);

            return(ctx => collection.AsExecutable());
        }
Esempio n. 6
0
        protected IRequestExecutor CreateSchema <TEntity, T>(
            TEntity[] entities,
            MongoResource mongoResource,
            bool withPaging = false)
            where TEntity : class
            where T : FilterInputType <TEntity>
        {
            Func <IResolverContext, IExecutable <TEntity> > resolver = BuildResolver(
                mongoResource,
                entities);

            return(new ServiceCollection()
                   .AddGraphQL()
                   .AddObjectIdConverters()
                   .AddFiltering(x => x.BindRuntimeType <TEntity, T>().AddMongoDbDefaults())
                   .AddQueryType(
                       c => c
                       .Name("Query")
                       .Field("root")
                       .Resolve(resolver)
                       .Use(
                           next => async context =>
            {
                await next(context);
                if (context.Result is IExecutable executable)
                {
                    context.ContextData["query"] = executable.Print();
                }
            })
                       .UseFiltering <T>())
                   .UseRequest(
                       next => async context =>
            {
                await next(context);
                if (context.Result is IReadOnlyQueryResult result &&
                    context.ContextData.TryGetValue("query", out var queryString))
                {
                    context.Result =
                        QueryResultBuilder
                        .FromResult(result)
                        .SetContextData("query", queryString)
                        .Create();
                }
            })
                   .UseDefaultPipeline()
                   .Services
                   .BuildServiceProvider()
                   .GetRequiredService <IRequestExecutorResolver>()
                   .GetRequestExecutorAsync()
                   .GetAwaiter()
                   .GetResult());
        }
Esempio n. 7
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();
        }
        public IRequestExecutor CreateSchema <TEntity>(
            TEntity[] entities,
            MongoResource mongoResource,
            bool usePaging                  = false,
            bool useOffsetPaging            = false,
            ObjectType <TEntity>?objectType = null)
            where TEntity : class
        {
            Func <IResolverContext, IExecutable <TEntity> > resolver = BuildResolver(
                mongoResource,
                entities);

            var builder = new ServiceCollection().AddGraphQL();

            if (objectType is {})
Esempio n. 9
0
        private Func <IResolverContext, IExecutable <TResult> > BuildResolver <TResult>(
            MongoResource mongoResource,
            params TResult[] results)
            where TResult : class
        {
            if (FileName is null)
            {
                throw new InvalidOperationException();
            }

            IMongoCollection <TResult> collection =
                mongoResource.CreateCollection <TResult>("data_" + Guid.NewGuid().ToString("N"));

            collection.InsertMany(results);

            return(ctx => collection.AsExecutable());
        }
Esempio n. 10
0
 public SchemaMutationTests(
     MongoResource mongoResource,
     FileStorageResource fileStorageResource)
     : base(mongoResource, fileStorageResource)
 {
 }
 public SchemaQueryTests(MongoResource mongoResource)
     : base(mongoResource)
 {
 }
Esempio n. 12
0
 public async Task DisposeAsync()
 {
     await MongoResource?.DisposeAsync();
 }
Esempio n. 13
0
 public PublishSchemaDocumentHandlerTests(
     MongoResource mongoResource,
     FileStorageResource fileStorageResource)
     : base(mongoResource, fileStorageResource)
 {
 }
Esempio n. 14
0
 protected void Init(MongoResource resource)
 {
     _resource = resource;
 }
Esempio n. 15
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));
        }
Esempio n. 16
0
 public PublishDocumentServiceTests(
     MongoResource mongoResource,
     FileStorageResource fileStorageResource)
     : base(mongoResource, fileStorageResource)
 {
 }
Esempio n. 17
0
 public SchemaQueryTests(MongoResource mongoResource, FileStorageResource fileStorageResource)
     : base(mongoResource, fileStorageResource)
 {
 }
 public EnvironmentMutationTests(MongoResource mongoResource, FileStorageResource fileStorageResource)
     : base(mongoResource, fileStorageResource)
 {
 }
Esempio n. 19
0
 public EnvironmentMutationTests(MongoResource mongoResource)
     : base(mongoResource)
 {
 }
Esempio n. 20
0
 public MongoProvider(MongoResource resource)
 {
     _resource = resource;
 }
Esempio n. 21
0
 public EnvironmentQueryTests(MongoResource mongoResource)
     : base(mongoResource)
 {
 }
Esempio n. 22
0
 public EnvironmentQueryTests(MongoResource mongoResource, FileStorageResource fileStorageResource)
     : base(mongoResource, fileStorageResource)
 {
 }
Esempio n. 23
0
 public SchemaMutationTests(MongoResource mongoResource)
     : base(mongoResource)
 {
 }