public void ConnectionDetailsOptionsShouldBeDefinedInConnectionProviderOptions() { ConnectionDetails details = new ConnectionDetails(); ConnectionProviderOptions optionMetadata = ConnectionProviderOptionsHelper.BuildConnectionProviderOptions(); var index = 0; var expectedForStrings = "Value for strings"; var expectedForInt = 345; details.ApplicationIntent = expectedForStrings + index++; details.ApplicationName = expectedForStrings + index++; details.AttachDbFilename = expectedForStrings + index++; details.AuthenticationType = expectedForStrings + index++; details.CurrentLanguage = expectedForStrings + index++; details.DatabaseName = expectedForStrings + index++; details.FailoverPartner = expectedForStrings + index++; details.Password = expectedForStrings + index++; details.ServerName = expectedForStrings + index++; details.TypeSystemVersion = expectedForStrings + index++; details.UserName = expectedForStrings + index++; details.WorkstationId = expectedForStrings + index++; details.ConnectRetryInterval = expectedForInt + index++; details.ConnectRetryCount = expectedForInt + index++; details.ConnectTimeout = expectedForInt + index++; details.LoadBalanceTimeout = expectedForInt + index++; details.MaxPoolSize = expectedForInt + index++; details.MinPoolSize = expectedForInt + index++; details.PacketSize = expectedForInt + index++; details.Encrypt = (index++ % 2 == 0); details.MultipleActiveResultSets = (index++ % 2 == 0); details.MultiSubnetFailover = (index++ % 2 == 0); details.PersistSecurityInfo = (index++ % 2 == 0); details.Pooling = (index++ % 2 == 0); details.Replication = (index++ % 2 == 0); details.TrustServerCertificate = (index++ % 2 == 0); if (optionMetadata.Options.Count() != details.Options.Count) { var optionsNotInMetadata = details.Options.Where(o => !optionMetadata.Options.Any(m => m.Name == o.Key)); var optionNames = optionsNotInMetadata.Any() ? optionsNotInMetadata.Select(s => s.Key).Aggregate((i, j) => i + "," + j) : null; Assert.True(string.IsNullOrEmpty(optionNames), "Options not in metadata: " + optionNames); } foreach (var option in details.Options) { var metadata = optionMetadata.Options.FirstOrDefault(x => x.Name == option.Key); Assert.NotNull(metadata); if (metadata.ValueType == ConnectionOption.ValueTypeString) { Assert.True(option.Value is string); } else if (metadata.ValueType == ConnectionOption.ValueTypeBoolean) { Assert.True(option.Value is bool?); } else if (metadata.ValueType == ConnectionOption.ValueTypeNumber) { Assert.True(option.Value is int?); } } }
public void WithoutCredentials() { var connectionString = "Server=myServerAddress;Database=myDataBase;User Id=xxxx;Password=xxxx"; var options = new ConnectionProviderOptions { ConnectionString = connectionString, Username = "", Password = "" }; var mock = new Mock <IOptions <ConnectionProviderOptions> >(); mock.Setup(x => x.Value).Returns(options); var connectionProvider = new MySqlConnectionProvider(mock.Object, _encryptionHelper); var connection = connectionProvider.Create(); // connection string should be unchanged Assert.Equal(connection.ConnectionString, connectionString); }
public void WithEncryptedCredentials() { var connectionString = "Server=myServerAddress;Database=myDataBase;User Id=xxxx;Password=xxxx"; var options = new ConnectionProviderOptions { ConnectionString = connectionString, Username = "******", Password = "******" }; var mock = new Mock <IOptions <ConnectionProviderOptions> >(); mock.Setup(x => x.Value).Returns(options); var connectionProvider = new MySqlConnectionProvider(mock.Object, _encryptionHelper); var connection = connectionProvider.Create(); var expected = "Server=myServerAddress;Database=myDataBase;User Id=testUsername;Password=testPassword"; // connection string should have username/password substituded in Assert.Equal(connection.ConnectionString, expected); }
public void WithUnencryptedCredentials() { var connectionString = "Host=myServerName;Port=5432;Database=myDataBase;Username=xxxx;Password=xxxx"; var options = new ConnectionProviderOptions { ConnectionString = connectionString, Username = "******", Password = "******" }; var mock = new Mock <IOptions <ConnectionProviderOptions> >(); mock.Setup(x => x.Value).Returns(options); var connectionProvider = new PostgreSqlConnectionProvider(mock.Object, _encryptionHelper); var connection = connectionProvider.Create(); var expected = "Host=myServerName;Port=5432;Database=myDataBase;Username=testUsername;Password=testPassword"; // connection string should have username/password substituded in Assert.Equal(connection.ConnectionString, expected); }