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?); } } }
/// <summary> /// Handles a request for the capabilities request /// </summary> internal async Task HandleCapabilitiesRequest( CapabilitiesRequest initializeParams, RequestContext <CapabilitiesResult> requestContext) { await requestContext.SendResult( new CapabilitiesResult { Capabilities = new DmpServerCapabilities { ProtocolVersion = ServiceHost.ProviderProtocolVersion, ProviderName = ServiceHost.ProviderName, ProviderDisplayName = ServiceHost.ProviderDescription, ConnectionProvider = ConnectionProviderOptionsHelper.BuildConnectionProviderOptions(), AdminServicesProvider = AdminServicesProviderOptionsHelper.BuildAdminServicesProviderOptions() } } ); }