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);
public IIdentityDbContext GetDbContext() { MongoResource resource = Containers .GetResource <MongoResource>("mongo"); return(new IdentityDbContext(new MongoOptions { ConnectionString = resource.ConnectionString, DatabaseName = "magic-identity" })); }
/// <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()); }
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()); }
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()); }
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 {})
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()); }
public SchemaMutationTests( MongoResource mongoResource, FileStorageResource fileStorageResource) : base(mongoResource, fileStorageResource) { }
public SchemaQueryTests(MongoResource mongoResource) : base(mongoResource) { }
public async Task DisposeAsync() { await MongoResource?.DisposeAsync(); }
public PublishSchemaDocumentHandlerTests( MongoResource mongoResource, FileStorageResource fileStorageResource) : base(mongoResource, fileStorageResource) { }
protected void Init(MongoResource resource) { _resource = resource; }
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 PublishDocumentServiceTests( MongoResource mongoResource, FileStorageResource fileStorageResource) : base(mongoResource, fileStorageResource) { }
public SchemaQueryTests(MongoResource mongoResource, FileStorageResource fileStorageResource) : base(mongoResource, fileStorageResource) { }
public EnvironmentMutationTests(MongoResource mongoResource, FileStorageResource fileStorageResource) : base(mongoResource, fileStorageResource) { }
public EnvironmentMutationTests(MongoResource mongoResource) : base(mongoResource) { }
public MongoProvider(MongoResource resource) { _resource = resource; }
public EnvironmentQueryTests(MongoResource mongoResource) : base(mongoResource) { }
public EnvironmentQueryTests(MongoResource mongoResource, FileStorageResource fileStorageResource) : base(mongoResource, fileStorageResource) { }
public SchemaMutationTests(MongoResource mongoResource) : base(mongoResource) { }