Exemplo n.º 1
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().AddNewtonsoftJson();
            services.AddResponseCompression();
            services.AddDbContext <DataContext>(options =>
            {
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
            }, ServiceLifetime.Singleton);

            services.AddSingleton <ICosmosService, CosmosService>();
            services.AddSingleton(provider =>
            {
                var cosmosService = provider.GetRequiredService <ICosmosService>();

                var client   = new CosmonautClientHolder();
                var accounts = cosmosService.GetAllCosmosAccounts().GetAwaiter().GetResult();

                foreach (var account in accounts)
                {
                    var cosmonautClient = new CosmonautClient(account.Endpoint, account.MasterKey,
                                                              new ConnectionPolicy {
                        ConnectionMode = ConnectionMode.Direct, ConnectionProtocol = Protocol.Tcp
                    });
                    client.AddClient(cosmonautClient);
                }

                return(client);
            });
        }
Exemplo n.º 2
0
        private static CosmonautClient SetupCosmonautClient()
        {
            var documentClient = MockHelpers.GetMockDocumentClient();
            var cosmonautClient = new CosmonautClient(documentClient.Object);
            var databaseResource = new Database {
                Id = "databaseName"
            }.ToResourceResponse(HttpStatusCode.OK);

            documentClient.Setup(x =>
                                 x.ReadDatabaseAsync(UriFactory.CreateDatabaseUri("databaseName"), It.IsAny <RequestOptions>()))
            .ReturnsAsync(databaseResource);
            return(cosmonautClient);
        }
Exemplo n.º 3
0
        public CosmosStore <CosmonautModel> CreateStore()
        {
            var endpoint = new Uri(@"https://localhost:8081/");
            var key      = "[AUTH KEY]";
            var policy   = new ConnectionPolicy
            {
                ConnectionMode     = ConnectionMode.Direct,
                ConnectionProtocol = Protocol.Tcp
            };
            var documentClient = new DocumentClient(endpoint, key, SerializerSettings, policy);

            var cosmonautClient = new CosmonautClient(documentClient);

            return(new CosmosStore <CosmonautModel>(cosmonautClient, "Cosmonaut"));
        }
        public void AddClient(string serviceEndpoint, string key)
        {
            var cosmosAccountEndpoint = serviceEndpoint.TrimEnd('/');

            if (CosmonautClients.ContainsKey(cosmosAccountEndpoint))
            {
                return;
            }

            var cosmosClient = new CosmonautClient(cosmosAccountEndpoint, key, new ConnectionPolicy {
                ConnectionProtocol = Protocol.Tcp, ConnectionMode = ConnectionMode.Direct
            });

            CosmonautClients.Add(cosmosAccountEndpoint, cosmosClient);
        }
Exemplo n.º 5
0
        public DatabaseFixture()
        {
            var cosmonautClient = new CosmonautClient(EmulatorUri, EmulatorKey);
            var database        = cosmonautClient.GetDatabaseAsync(DatabaseId).GetAwaiter().GetResult();

            if (database != null)
            {
                cosmonautClient.DeleteDatabaseAsync(DatabaseId);
            }
            var cosmosSettings    = new CosmosStoreSettings(DatabaseId, EmulatorUri, EmulatorKey);
            var serviceCollection = new ServiceCollection()
                                    .AddCosmosStore <FlatForRentAnnouncementEntity>(cosmosSettings, _flatForRentAnnouncementRepositoryTestCollectionName)
                                    .AddCosmosStore <RoomForRentAnnouncementEntity>(cosmosSettings, _roomForRentAnnouncementRepositoryTestCollectionName);
            var serviceProvider = serviceCollection.BuildServiceProvider();

            FlatForRentAnnouncementCosmosStore = serviceProvider.GetService <ICosmosStore <FlatForRentAnnouncementEntity> >();
            RoomForRentAnnouncementCosmosStore = serviceProvider.GetService <ICosmosStore <RoomForRentAnnouncementEntity> >();
        }
Exemplo n.º 6
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureTestServices(services =>
            {
                var cosmonautClient = new CosmonautClient(EmulatorUri, EmulatorKey);
                var database        = cosmonautClient.GetDatabaseAsync(DatabaseId).GetAwaiter().GetResult();
                if (database != null)
                {
                    cosmonautClient.DeleteDatabaseAsync(DatabaseId);
                }

                var descriptors = services
                                  .Where(x =>
                                         x.ServiceType == typeof(ICosmosStore <FlatForRentAnnouncementEntity>) ||
                                         x.ServiceType == typeof(ICosmosStore <RoomForRentAnnouncementEntity>) ||
                                         x.ServiceType == typeof(IHttpClientService))
                                  .ToList();
                if (descriptors.Any())
                {
                    foreach (var descriptor in descriptors)
                    {
                        services.Remove(descriptor);
                    }
                }

                var cosmosSettings = new CosmosStoreSettings(DatabaseId, EmulatorUri, EmulatorKey, settings =>
                {
                    settings.JsonSerializerSettings = new JsonSerializerSettings
                    {
                        DateFormatHandling = DateFormatHandling.IsoDateFormat,
                        Formatting         = Formatting.Indented,
                        Converters         = { new StringEnumConverter(), new IsoDateTimeConverter() }
                    };
                });
                services.AddCosmosStore <FlatForRentAnnouncementEntity>(cosmosSettings);
                services.AddCosmosStore <RoomForRentAnnouncementEntity>(cosmosSettings);
                services.AddScoped <IHttpClientService, HttpClientServiceStub>();

                var sp = services.BuildServiceProvider();
                FlatForRentAnnouncementEntityCosmosStore = sp.GetRequiredService <ICosmosStore <FlatForRentAnnouncementEntity> >();
                RoomForRentAnnouncementEntityCosmosStore = sp.GetRequiredService <ICosmosStore <RoomForRentAnnouncementEntity> >();
            });
        }
Exemplo n.º 7
0
        public async Task <IActionResult> CheckAccountStatus([FromBody] CosmosStatusRequest request)
        {
            try
            {
                var pingClient = new CosmonautClient(request.AccountUri, request.AccountKey);
                await pingClient.DocumentClient.GetDatabaseAccountAsync();

                var cosmosAccount = await _cosmosService.GetCosmosAccount(request.AccountUri);

                if (cosmosAccount != null)
                {
                    return(Ok(new StatusResponse("It looks like this account already exists.")));
                }

                await _cosmosService.AddCosmosAccount(request.AccountUri, request.AccountKey);

                _clientHolder.AddClient(request.AccountUri, request.AccountKey);
                return(Ok(new StatusResponse(true)));
            }
            catch
            {
                return(Ok(new StatusResponse("It looks like the Uri or the Master Key are invalid.")));
            }
        }
Exemplo n.º 8
0
        static async Task Main(string[] args)
        {
            //Uncomment to enable Serilog logging
            //SerilogEventListener.Instance.Initialize();

            var connectionPolicy = new ConnectionPolicy
            {
                ConnectionProtocol = Protocol.Tcp,
                ConnectionMode     = ConnectionMode.Direct
            };

            var cosmosSettings = new CosmosStoreSettings("localtest",
                                                         "https://localhost:8081",
                                                         "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
                                                         , connectionPolicy
                                                         , defaultCollectionThroughput: 5000);

            var cosmonautClient = new CosmonautClient("https://localhost:8081",
                                                      "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==");

            var serviceCollection = new ServiceCollection();

            serviceCollection.AddCosmosStore <Book>("localtest", "https://localhost:8081",
                                                    "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
                                                    settings =>
            {
                settings.ConnectionPolicy            = connectionPolicy;
                settings.DefaultCollectionThroughput = 5000;
            });

            serviceCollection.AddCosmosStore <Car>(cosmosSettings);

            var provider = serviceCollection.BuildServiceProvider();

            var booksStore = provider.GetService <ICosmosStore <Book> >();
            var carStore   = provider.GetService <ICosmosStore <Car> >();

            System.Console.WriteLine($"Started");

            var scaleableDb = await cosmonautClient.GetDatabaseAsync("scaleabledb");

            if (scaleableDb == null)
            {
                scaleableDb = await cosmonautClient.CreateDatabaseAsync(new Database { Id = "scaleabledb" },
                                                                        new RequestOptions { OfferThroughput = 10000 });
            }

            var dbOffer = await cosmonautClient.GetOfferForDatabaseAsync("scaleabledb");

            var dbOfferV2 = await cosmonautClient.GetOfferV2ForDatabaseAsync("scaleabledb");

            var newOffer      = new OfferV2(dbOffer, 20000);
            var offerResponse = await cosmonautClient.UpdateOfferAsync(newOffer);

            var database = await cosmonautClient.GetDatabaseAsync("localtest");

            System.Console.WriteLine($"Retrieved database with id {database.Id}");

            var collection = await cosmonautClient.GetCollectionAsync("localtest", "shared");

            System.Console.WriteLine($"Retrieved collection with id {collection.Id}");

            var offer = await cosmonautClient.GetOfferForCollectionAsync("localtest", "shared");

            System.Console.WriteLine($"Retrieved offer with id {offer.Id}");

            var offerV2 = await cosmonautClient.GetOfferV2ForCollectionAsync("localtest", "shared");

            System.Console.WriteLine($"Retrieved offerV2 with id {offerV2.Id}");

            var databases = await cosmonautClient.QueryDatabasesAsync();

            System.Console.WriteLine($"Retrieved all {databases.Count()} databased in the account.");

            var booksRemoved = await booksStore.RemoveAsync(x => true);

            System.Console.WriteLine($"Removed {booksRemoved.SuccessfulEntities.Count} books from the database.");

            var carsRemoved = await carStore.RemoveAsync(x => true);

            System.Console.WriteLine($"Removed {carsRemoved.SuccessfulEntities.Count} cars from the database.");

            var books = new List <Book>();

            for (int i = 0; i < 25; i++)
            {
                books.Add(new Book
                {
                    Id   = Guid.NewGuid().ToString(),
                    Name = "Test " + i,
                    AnotherRandomProp = "Random " + i
                });
            }

            var cars = new List <Car>();

            for (int i = 0; i < 25; i++)
            {
                cars.Add(new Car
                {
                    Id   = Guid.NewGuid().ToString(),
                    Name = "Car " + i,
                });
            }

            var watch = new Stopwatch();

            watch.Start();

            var addedCars = await carStore.AddRangeAsync(cars);

            var addedBooks = await booksStore.AddRangeAsync(books);

            System.Console.WriteLine($"Added {addedCars.SuccessfulEntities.Count + addedBooks.SuccessfulEntities.Count} documents in {watch.ElapsedMilliseconds}ms");
            watch.Restart();
            //await Task.Delay(3000);

            var aCarId = addedCars.SuccessfulEntities.First().Entity.Id;

            var firstAddedCar = await carStore.Query().FirstOrDefaultAsync();

            var allTheCars = await carStore.QueryMultipleAsync <Car>("select * from c");

            var carPageOne = await carStore.Query("select * from c order by c.Name asc").WithPagination(1, 5).ToPagedListAsync();

            var carPageTwo = await carStore.Query("select * from c order by c.Name asc").WithPagination(carPageOne.NextPageToken, 5).ToPagedListAsync();

            var carPageThree = await carPageTwo.GetNextPageAsync();

            var carPageFour = await carPageThree.GetNextPageAsync();

            var addedRetrieved = await booksStore.Query().OrderBy(x => x.Name).ToListAsync();

            var firstPage = await booksStore.Query().WithPagination(1, 10).OrderBy(x => x.Name).ToPagedListAsync();

            var secondPage = await firstPage.GetNextPageAsync();

            var thirdPage = await secondPage.GetNextPageAsync();

            var fourthPage = await secondPage.GetNextPageAsync();

            //var thirdPage = await booksStore.Query().WithPagination(secondPage.NextPageToken, 10).OrderBy(x => x.Name).ToPagedListAsync();
            //var fourthPage = await booksStore.Query().WithPagination(4, 10).OrderBy(x => x.Name).ToListAsync();

            var sqlPaged = await cosmonautClient.Query <Book>("localtest", "shared",
                                                              "select * from c where c.CosmosEntityName = 'books' order by c.Name", null, new FeedOptions { EnableCrossPartitionQuery = true })
                           .WithPagination(2, 10).ToListAsync();

            System.Console.WriteLine($"Retrieved {addedRetrieved.Count} documents in {watch.ElapsedMilliseconds}ms");
            watch.Restart();
            foreach (var addedre in addedRetrieved)
            {
                addedre.AnotherRandomProp += " Nick";
            }

            var updated = await booksStore.UpsertRangeAsync(addedRetrieved, x => new RequestOptions {
                AccessCondition = new AccessCondition
                {
                    Type      = AccessConditionType.IfMatch,
                    Condition = x.Etag
                }
            });

            System.Console.WriteLine($"Updated {updated.SuccessfulEntities.Count} documents in {watch.ElapsedMilliseconds}ms");
            watch.Restart();

            var removed = await booksStore.RemoveRangeAsync(addedRetrieved);

            System.Console.WriteLine($"Removed {removed.SuccessfulEntities.Count} documents in {watch.ElapsedMilliseconds}ms");
            watch.Reset();
            watch.Stop();

            System.Console.ReadKey();
        }
Exemplo n.º 9
0
        /// <summary>
        /// Add services to the container.
        /// </summary>
        /// <param name="services">Service Collection.</param>
        public void ConfigureServices(IServiceCollection services)
        {
            var oktaSettings = services.ConfigureSettings <OktaSettings>(Configuration, "Okta");

            var cosmosDbSettings = services.ConfigureSettings <CosmosDbSettings>(Configuration, "CosmosDB");

            var locationMigrationSettings =
                services.ConfigureSettings <LocationMigrationSettings>(Configuration, "LocationMigrationSettings");


            if (locationMigrationSettings == null)
            {
                throw new ArgumentNullException(@"there is no location migration settings
example:
  LocationMigrationSettings: {
  Version: 1
  }
            ");
            }

            services.ConfigureSettings <AuthorizationSettings>(Configuration, "Authorization");

            services.ConfigureSettings <RequestChargeSettings>(Configuration, "RequestCharge");

            var urgencySettings = services.ConfigureSettings <UrgencySettings>(Configuration, "UrgencySettings");

            ConfigureOktaClient(services);

            services.AddSingleton <ITokenService, OktaTokenService>();

            services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
            {
                builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader();
            }));

            services.AddScoped <RequestChargeService>();

            // Database connections.
            services.AddSingleton <IDocumentClientFactory, DocumentClientFactory>();
            services.AddScoped <IDatabaseAccess, DatabaseAccess>();

            ConfigureQueries(services, cosmosDbSettings);

            Mapper.Initialize(config => { config.AddMedicalExaminerProfiles(); });
            Mapper.AssertConfigurationIsValid();
            services.AddAutoMapper();

            ConfigureAuthentication(services, oktaSettings, cosmosDbSettings);

            ConfigureAuthorization(services);

            services.AddMvcCore()
            .AddVersionedApiExplorer(options =>
            {
                // The format of the version added to the route URL
                options.GroupNameFormat = "'v'VVV";

                // Tells swagger to replace the version in the controller route
                options.SubstituteApiVersionInUrl = true;
            });

            services.AddMvc(options =>
            {
                options.UseExaminationContextModelBindingProvider();
                options.Filters.Add <GlobalExceptionFilter>();
                options.Filters.Add <ControllerActionFilter>();
            }).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            services.AddExaminationValidation();
            services.AddApiVersioning(config => { config.ReportApiVersions = true; });

            // Register the Swagger generator, defining 1 or more Swagger documents
            services.AddSwaggerGen(options =>
            {
                // c.SwaggerDoc("v1", new Info { Title = "Medical Examiner Data API", Version = "v1" });

                // note: need a temporary service provider here because one has not been created yet
                var provider = services.BuildServiceProvider()
                               .GetRequiredService <IApiVersionDescriptionProvider>();

                // add a swagger document for each discovered API version
                foreach (var description in provider.ApiVersionDescriptions)
                {
                    options.SwaggerDoc(description.GroupName,
                                       CreateInfoForApiVersion(description, ApiTitle, ApiDescription));
                }

                // add a custom operation filter which sets default values
                options.OperationFilter <SwaggerDefaultValues>();

                // Make all enums appear as strings
                options.DescribeAllEnumsAsStrings();

                // Locate the XML file being generated by ASP.NET.
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);

                // Swagger to use those XML comments.
                options.IncludeXmlComments(xmlPath);

                // Make swagger do authentication
                var security = new Dictionary <string, IEnumerable <string> >
                {
                    { "Bearer", Array.Empty <string>() },
                };

                options.AddSecurityDefinition("Okta", new OAuth2Scheme
                {
                    Type             = "oauth2",
                    Flow             = "implicit",
                    AuthorizationUrl = oktaSettings.AuthorizationUrl,
                    Scopes           = new Dictionary <string, string>
                    {
                        { "profile", "Profile" },
                        { "openid", "OpenID" },
                    },
                });

                options.AddSecurityDefinition("Bearer",
                                              new ApiKeyScheme
                {
                    Description =
                        "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
                    Name = "Authorization",
                    In   = "header",
                    Type = "apiKey"
                });

                options.AddSecurityRequirement(security);
            });

            services.AddScoped <ControllerActionFilter>();

            // Can be any service, we just need the database id and uri.
            var serviceProvider        = services.BuildServiceProvider();
            var userConnectionSettings = serviceProvider.GetRequiredService <IUserConnectionSettings>();
            var documentClientFactory  = serviceProvider.GetRequiredService <IDocumentClientFactory>();
            var documentClient         = documentClientFactory.CreateClient(userConnectionSettings, cosmosDbSettings.BypassSsl);
            var cosmonautClient        = new CosmonautClient(documentClient);

            const string examinationsCollection = "Examinations";

            services.AddCosmosStore <Examination>(cosmonautClient, cosmosDbSettings.DatabaseId, examinationsCollection);
            services.AddCosmosStore <AuditEntry <Examination> >(cosmonautClient, cosmosDbSettings.DatabaseId, examinationsCollection.AuditCollection());
        }
Exemplo n.º 10
0
        static async Task Main(string[] args)
        {
            var connectionPolicy = new ConnectionPolicy
            {
                ConnectionProtocol = Protocol.Tcp,
                ConnectionMode     = ConnectionMode.Direct
            };

            var cosmosSettings = new CosmosStoreSettings("localtest",
                                                         "https://*****:*****@id", new { id = aCarId });

            var allTheCars = await carStore.QueryMultipleAsync <Car>("select * from c");

            var addedRetrieved = await booksStore.Query().ToListAsync();

            System.Console.WriteLine($"Retrieved {addedRetrieved.Count} documents in {watch.ElapsedMilliseconds}ms");
            watch.Restart();
            foreach (var addedre in addedRetrieved)
            {
                addedre.AnotherRandomProp += " Nick";
            }

            var updated = await booksStore.UpsertRangeAsync(addedRetrieved);

            System.Console.WriteLine($"Updated {updated.SuccessfulEntities.Count} documents in {watch.ElapsedMilliseconds}ms");
            watch.Restart();

            var removed = await booksStore.RemoveRangeAsync(addedRetrieved);

            System.Console.WriteLine($"Removed {removed.SuccessfulEntities.Count} documents in {watch.ElapsedMilliseconds}ms");
            watch.Reset();
            watch.Stop();

            System.Console.ReadKey();
        }
        protected override void ConfigureServices(IServiceCollection services)
        {
            services.AddMemoryCache();
            var builder = services.AddIdentityServer();

            services.AddSingleton <IAsyncExceptionFilter, DemystifyExceptionFilter>();
            services.AddSingleton <DatabaseInitializer <UnitTest_CacheItemCosmosStore> >(sp =>
            {
                return(new DatabaseInitializer <UnitTest_CacheItemCosmosStore>()
                {
                    action = () =>
                    {
                        lock (this)
                        {
                            if (!Initialized)
                            {
                                var client = sp.GetRequiredService <ICosmonautClient>();

                                var collection = client.GetCollectionAsync(UnitTest_CacheItemCosmosStore.DatabaseId,
                                                                           UnitTest_CacheItemCosmosStore.CollectionName).GetAwaiter().GetResult();
                                collection.DefaultTimeToLive = 7700000;
                                var response = client.UpdateCollectionAsync(UnitTest_CacheItemCosmosStore.DatabaseId,
                                                                            UnitTest_CacheItemCosmosStore.CollectionName, collection)
                                               .GetAwaiter()
                                               .GetResult();

                                Initialized = true;
                            }
                        }
                    }
                });
            });
            services.AddSingleton <DatabaseInitializer <UnitTest_PersistedGrantStore> >(sp =>
            {
                return(new DatabaseInitializer <UnitTest_PersistedGrantStore>()
                {
                    action = () =>
                    {
                        lock (this)
                        {
                            if (!Initialized)
                            {
                                var client = sp.GetRequiredService <ICosmonautClient>();

                                var collection = client.GetCollectionAsync(UnitTest_PersistedGrantStore.DatabaseId,
                                                                           UnitTest_PersistedGrantStore.CollectionName).GetAwaiter().GetResult();
                                collection.DefaultTimeToLive = 7700000;
                                var response = client.UpdateCollectionAsync(UnitTest_PersistedGrantStore.DatabaseId,
                                                                            UnitTest_PersistedGrantStore.CollectionName, collection)
                                               .GetAwaiter()
                                               .GetResult();

                                Initialized = true;
                            }
                        }
                    }
                });
            });
            services.AddSingleton <DatabaseInitializer <UnitTest_ResourceStore> >(sp =>
            {
                return(new DatabaseInitializer <UnitTest_ResourceStore>()
                {
                    action = () =>
                    {
                        lock (this)
                        {
                            if (!Initialized)
                            {
                                var client = sp.GetRequiredService <ICosmonautClient>();

                                var collectionApiResource = client.GetCollectionAsync(UnitTest_ResourceStore.DatabaseId,
                                                                                      UnitTest_ResourceStore.CollectionNameApiResources).GetAwaiter().GetResult();
                                var collectionIdentityResource = client.GetCollectionAsync(UnitTest_ResourceStore.DatabaseId,
                                                                                           UnitTest_ResourceStore.CollectionNameIdentityResources).GetAwaiter().GetResult();

                                Initialized = true;
                            }
                        }
                    }
                });
            });
            services.AddTransient <ICosmonautClient>(sp =>
            {
                var client = new CosmonautClient(_emulatorUri, _emulatorKey, _connectionPolicy);
                return(client);
            });

            //   _cosmonautClient = new CosmonautClient(_emulatorUri, _emulatorKey, _connectionPolicy);
            var cosmosStoreSettings = new CosmosStoreSettings(
                UnitTest_PersistedGrantStore.DatabaseId,
                _emulatorUri,
                _emulatorKey,
                s =>
            {
                s.ConnectionPolicy = _connectionPolicy;
                s.IndexingPolicy   = new IndexingPolicy(
                    new RangeIndex(DataType.Number, -1),
                    new RangeIndex(DataType.String, -1));
            });
            var cosmosStoreSettingsCache = new CosmosStoreSettings(
                UnitTest_CacheItemCosmosStore.DatabaseId,
                _emulatorUri,
                _emulatorKey,
                s =>
            {
                s.ConnectionPolicy = _connectionPolicy;
                s.IndexingPolicy   = new IndexingPolicy(
                    new RangeIndex(DataType.Number, -1),
                    new RangeIndex(DataType.String, -1));
            });
            var cosmosStoreSettingsResources = new CosmosStoreSettings(
                UnitTest_ResourceStore.DatabaseId,
                _emulatorUri,
                _emulatorKey,
                s =>
            {
                s.ConnectionPolicy = _connectionPolicy;
                s.IndexingPolicy   = new IndexingPolicy(
                    new RangeIndex(DataType.Number, -1),
                    new RangeIndex(DataType.String, -1));
            });

            builder.AddOperationalStore(cosmosStoreSettings, UnitTest_PersistedGrantStore.CollectionName);
            builder.AddCosmonautIdentityServerCacheStore(cosmosStoreSettingsCache, UnitTest_CacheItemCosmosStore.CollectionName);
            builder.AddCosmonautResourceStore(
                cosmosStoreSettingsResources,
                UnitTest_ResourceStore.CollectionNameApiResources,
                UnitTest_ResourceStore.CollectionNameIdentityResources);
        }