public void Constructor_BindsOptions() { // arrange var appsettings = new Dictionary <string, string>() { ["mongodb:client:options:someKey"] = "someValue", ["mongodb:client:options:someOtherKey"] = "someOtherValue", ["mongodb:client:options:stillAnotherKey"] = "stillAnotherValue", ["mongodb:client:options:yetOneMoreKey"] = "yetOneMoreValue" }; ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(appsettings); var config = configurationBuilder.Build(); // act var sconfig = new MongoDbConnectorOptions(config); // assert Assert.Equal("someValue", sconfig.Options["someKey"]); Assert.Equal("someOtherValue", sconfig.Options["someOtherKey"]); Assert.Equal("stillAnotherValue", sconfig.Options["stillAnotherKey"]); Assert.Equal("yetOneMoreValue", sconfig.Options["yetOneMoreKey"]); }
public void ConnectionString_Overridden_By_EnterpriseMongoInCloudFoundryConfig() { // arrange var appsettings = new Dictionary <string, string>() { ["mongodb:client:ConnectionString"] = "notEvenValidConnectionString-iHopeYouKnowBestWhatWorksForYou!" }; // add environment variables as Cloud Foundry would Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION); Environment.SetEnvironmentVariable("VCAP_SERVICES", MongoDbTestHelpers.SingleServer_Enterprise_VCAP); // add settings to config ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(appsettings); configurationBuilder.AddEnvironmentVariables(); configurationBuilder.AddCloudFoundry(); var config = configurationBuilder.Build(); // act var sconfig = new MongoDbConnectorOptions(config); // assert Assert.NotEqual(appsettings["mongodb:client:ConnectionString"], sconfig.ToString()); // NOTE: for this test, we don't expect VCAP_SERVICES to be parsed, // this test is only here to demonstrate that when a binding is present, // a pre-supplied connectionString is not returned }
/// <summary> /// Adds MongoDb classes (MongoClient, IMongoClient and MongoUrl) to your Autofac Container /// </summary> /// <param name="container">Your Autofac Container Builder</param> /// <param name="config">Application configuration</param> /// <param name="serviceName">Cloud Foundry service name binding</param> /// <returns>the RegistrationBuilder for (optional) additional configuration</returns> public static IRegistrationBuilder <object, SimpleActivatorData, SingleRegistrationStyle> RegisterMongoDbConnection(this ContainerBuilder container, IConfiguration config, string serviceName = null) { if (container == null) { throw new ArgumentNullException(nameof(container)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } MongoDbServiceInfo info = serviceName == null ? config.GetSingletonServiceInfo <MongoDbServiceInfo>() : config.GetRequiredServiceInfo <MongoDbServiceInfo>(serviceName); var mongoOptions = new MongoDbConnectorOptions(config); var clientFactory = new MongoDbConnectorFactory(info, mongoOptions, MongoDbTypeLocator.MongoClient); var urlFactory = new MongoDbConnectorFactory(info, mongoOptions, MongoDbTypeLocator.MongoUrl); container.Register(c => urlFactory.Create(null)).As(MongoDbTypeLocator.MongoUrl); container.Register(c => new MongoDbHealthContributor(clientFactory, c.ResolveOptional <ILogger <MongoDbHealthContributor> >())).As <IHealthContributor>(); return(container.Register(c => clientFactory.Create(null)).As(MongoDbTypeLocator.IMongoClient, MongoDbTypeLocator.MongoClient)); }
public void ConnectionString_Overridden_By_A9sinCloudFoundryConfig() { // arrange var appsettings = new Dictionary <string, string>() { ["mongodb:client:ConnectionString"] = "notEvenValidConnectionString-iHopeYouKnowBestWhatWorksForYou!" }; // add environment variables as Cloud Foundry would Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION); Environment.SetEnvironmentVariable("VCAP_SERVICES", MongoDbTestHelpers.SingleBinding_a9s_SingleServer_VCAP); // add settings to config ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(appsettings); configurationBuilder.AddEnvironmentVariables(); configurationBuilder.AddCloudFoundry(); var config = configurationBuilder.Build(); // act var sconfig = new MongoDbConnectorOptions(config); // assert Assert.NotEqual(appsettings["mongodb:client:ConnectionString"], sconfig.ToString()); }
public void Constructor_ThrowsIfConfigNull() { MongoDbConnectorOptions config = null; MongoDbServiceInfo si = null; var ex = Assert.Throws <ArgumentNullException>(() => new MongoDbConnectorFactory(si, config, MongoDbTypeLocator.MongoClient)); Assert.Contains(nameof(config), ex.Message); }
public void Is_Connected_Returns_Up_Status() { var mongoDbConfig = new MongoDbConnectorOptions(); var sInfo = new MongoDbServiceInfo("MyId", "mongodb://localhost:27017"); var logrFactory = new LoggerFactory(); var connFactory = new MongoDbConnectorFactory(sInfo, mongoDbConfig, mongoDbImplementationType); var h = new MongoDbHealthContributor(connFactory, logrFactory.CreateLogger <MongoDbHealthContributor>()); var status = h.Health(); Assert.Equal(HealthStatus.UP, status.Status); }
public void Not_Connected_Returns_Down_Status() { var mongoDbConfig = new MongoDbConnectorOptions(); var sInfo = new MongoDbServiceInfo("MyId", "mongodb://localhost:27018"); var logrFactory = new LoggerFactory(); var connFactory = new MongoDbConnectorFactory(sInfo, mongoDbConfig, mongoDbImplementationType); var h = new MongoDbHealthContributor(connFactory, logrFactory.CreateLogger <MongoDbHealthContributor>(), 1); var status = h.Health(); Assert.Equal(HealthStatus.DOWN, status.Status); Assert.Equal("Failed to open MongoDb connection!", status.Description); }
public void Create_ReturnsMongoDbConnection() { var config = new MongoDbConnectorOptions() { Server = "localhost", Port = 27016, Password = "******", Username = "******", }; var si = new MongoDbServiceInfo("MyId", "mongodb://localhost:27017"); var factory = new MongoDbConnectorFactory(si, config, MongoDbTypeLocator.MongoClient); var connection = factory.Create(null); Assert.NotNull(connection); }
public void ConnectionString_Returned_AsConfigured() { var appsettings = new Dictionary <string, string>() { ["mongodb:client:ConnectionString"] = "notEvenValidConnectionString-iHopeYouKnowBestWhatWorksForYou!" }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(appsettings); var config = configurationBuilder.Build(); var sconfig = new MongoDbConnectorOptions(config); Assert.Equal(appsettings["mongodb:client:ConnectionString"], sconfig.ToString()); }
public Connection Get(IConfiguration configuration, string serviceName) { var info = serviceName == null ? configuration.GetSingletonServiceInfo <MongoDbServiceInfo>() : configuration.GetRequiredServiceInfo <MongoDbServiceInfo>(serviceName); var mongoConfig = new MongoDbConnectorOptions(configuration); var configurer = new MongoDbProviderConfigurer(); return(new Connection { ConnectionString = configurer.Configure(info, mongoConfig), Name = "MongoDb" + serviceName?.Insert(0, "-") }); }
public void Configure_NoServiceInfo_ReturnsExpected() { MongoDbConnectorOptions config = new MongoDbConnectorOptions() { Server = "localhost", Port = 1234, Username = "******", Password = "******", Database = "database" }; MongoDbProviderConfigurer configurer = new MongoDbProviderConfigurer(); var opts = configurer.Configure(null, config); Assert.Equal("mongodb://*****:*****@localhost:1234/database", opts); }
public void Options_Included_InConnectionString() { var appsettings = new Dictionary <string, string>() { ["mongodb:client:options:someKey"] = "someValue", ["mongodb:client:options:someOtherKey"] = "someOtherValue" }; var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(appsettings); var config = configurationBuilder.Build(); var sconfig = new MongoDbConnectorOptions(config); Assert.Equal("mongodb://localhost:27017?someKey=someValue&someOtherKey=someOtherValue", sconfig.ToString()); }
public void UpdateConfiguration_WithNullMongoDbServiceInfo_ReturnsExpected() { var configurer = new MongoDbProviderConfigurer(); var config = new MongoDbConnectorOptions() { Server = "localhost", Port = 1234, Username = "******", Password = "******", Database = "database" }; configurer.UpdateConfiguration(null, config); Assert.Equal("localhost", config.Server); Assert.Equal(1234, config.Port); Assert.Equal("username", config.Username); Assert.Equal("password", config.Password); Assert.Equal("database", config.Database); Assert.Null(config.ConnectionString); }
public void UpdateConfiguration_WithMongoDbServiceInfo_ReturnsExpected() { MongoDbProviderConfigurer configurer = new MongoDbProviderConfigurer(); MongoDbConnectorOptions config = new MongoDbConnectorOptions() { Server = "localhost", Port = 1234, Username = "******", Password = "******", Database = "database" }; MongoDbServiceInfo si = new MongoDbServiceInfo("MyId", "mongodb://*****:*****@192.168.0.90:27017/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355"); configurer.UpdateConfiguration(si, config); Assert.Equal("192.168.0.90", config.Server); Assert.Equal(27017, config.Port); Assert.Equal("Dd6O1BPXUHdrmzbP", config.Username); Assert.Equal("7E1LxXnlH2hhlPVt", config.Password); Assert.Equal("cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355", config.Database); }
public void Constructor_BindsValues() { var appsettings = new Dictionary <string, string>() { ["mongodb:client:server"] = "localhost", ["mongodb:client:port"] = "1234", ["mongodb:client:password"] = "******", ["mongodb:client:username"] = "******" }; ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(appsettings); var config = configurationBuilder.Build(); var sconfig = new MongoDbConnectorOptions(config); Assert.Equal("localhost", sconfig.Server); Assert.Equal(1234, sconfig.Port); Assert.Equal("password", sconfig.Password); Assert.Equal("username", sconfig.Username); Assert.Null(sconfig.ConnectionString); }
public void Configure_ServiceInfoOveridesConfig_ReturnsExpected() { MongoDbConnectorOptions config = new MongoDbConnectorOptions() { Server = "localhost", Port = 1234, Username = "******", Password = "******", Database = "database" }; MongoDbProviderConfigurer configurer = new MongoDbProviderConfigurer(); MongoDbServiceInfo si = new MongoDbServiceInfo("MyId", "mongodb://*****:*****@192.168.0.90:27017/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355"); var opts = configurer.Configure(si, config); Assert.Equal("mongodb://*****:*****@192.168.0.90:27017/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355", opts); Assert.DoesNotContain("localhost", opts); Assert.DoesNotContain("1234", opts); Assert.DoesNotContain("username", opts); Assert.DoesNotContain("password", opts); Assert.DoesNotContain("database", opts); }