// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System.Net; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Squidex.Domain.Apps.Entities.Contents.Text; using Squidex.Domain.Apps.Entities.TestHelpers; namespace Squidex.MongoDb.Domain.Contents.Text; public sealed class AtlasTextIndexFixture : IAsyncLifetime { public AtlasTextIndex Index { get; } public AtlasTextIndexFixture() { var mongoClient = MongoClientFactory.Create(TestConfig.Configuration["atlas:configuration"]!); var mongoDatabase = mongoClient.GetDatabase(TestConfig.Configuration["atlas:database"]!); var options = TestConfig.Configuration.GetSection("atlas").Get()!; var services = new ServiceCollection() .AddSingleton(Options.Create(options)) .AddSingleton(mongoClient) .AddSingleton(mongoDatabase) .AddHttpClient("Atlas", options => { options.BaseAddress = new Uri("https://cloud.mongodb.com/"); }) .ConfigurePrimaryHttpMessageHandler(() => { return new HttpClientHandler { Credentials = new NetworkCredential(options.PublicKey, options.PrivateKey, "cloud.mongodb.com"), }; }).Services .BuildServiceProvider(); Index = services.GetRequiredService(); } public async ValueTask InitializeAsync() { await Index.InitializeAsync(default); } public ValueTask DisposeAsync() { return default; } }