Skip to content

Commit

Permalink
Added option to turn off connection string validation (#421)
Browse files Browse the repository at this point in the history
* test for turning off connection string validation

* turning off validation when specified
  • Loading branch information
tmasternak authored Jan 4, 2018
1 parent b648a8c commit a8b3787
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,15 @@
using AcceptanceTesting;
using NServiceBus.AcceptanceTests;
using NServiceBus.AcceptanceTests.EndpointTemplates;
using NServiceBus.Configuration.AdvanceExtensibility;
using NUnit.Framework;

public class When_using_v2_configuration_app_config_for_schema_override : NServiceBusAcceptanceTest
{
[Test]
public Task Should_fail_on_startup()
{
var appConfigFilename = "app.sqlv2.config";
var appConfigPath = Path.Combine(Directory.GetCurrentDirectory(), appConfigFilename);

var expectedErrorMessage = "Schema override in connection string is not supported anymore";

File.WriteAllText(appConfigPath,
@"<?xml version='1.0' encoding='utf-8'?>
<configuration>
<connectionStrings>
<clear />
<add name=""NServiceBus/Transport"" connectionString=""Server=localhost\sqlexpress;Database=nservicebus;Trusted_Connection=True;Queue Schema=nsb""/>
</connectionStrings>
</configuration>");
var appConfigPath = CreateV2ConfigurationFile();

using (AppConfig.Change(appConfigPath))
{
Expand All @@ -36,10 +25,50 @@ await Scenario.Define<Context>()
.Run();
}, "Endpoint startup should throw and exception");

Assert.That(exception.Message, Contains.Substring(expectedErrorMessage), "Endpoint should fail on startup due to unsupported v2 configuration.");
var expectedErrorMessage = "Schema override in connection string is not supported anymore";

return Task.FromResult(0);
Assert.That(exception.Message, Contains.Substring(expectedErrorMessage), "Endpoint should fail on startup due to unsupported v2 configuration.");
}

return Task.FromResult(0);
}

[Test]
public Task Should_work_when_connection_string_validation_is_disabled()
{
var appConfigPath = CreateV2ConfigurationFile();

using (AppConfig.Change(appConfigPath))
{
Assert.DoesNotThrowAsync(async () =>
{
await Scenario.Define<Context>()
.WithEndpoint<Endpoint>(c => c.CustomConfig(ec =>
{
ec.GetSettings().Set("SqlServer.DisableConnectionStringValidation", true);
}))
.Run();
}, "Endpoint startup should not throw with connection string validation turned off.");
}

return Task.FromResult(0);
}

static string CreateV2ConfigurationFile()
{
var appConfigFilename = "app.sqlv2.config";
var appConfigPath = Path.Combine(Directory.GetCurrentDirectory(), appConfigFilename);


File.WriteAllText(appConfigPath,
@"<?xml version='1.0' encoding='utf-8'?>
<configuration>
<connectionStrings>
<clear />
<add name=""NServiceBus/Transport"" connectionString=""Server=localhost\sqlexpress;Database=nservicebus;Trusted_Connection=True;Queue Schema=nsb""/>
</connectionStrings>
</configuration>");
return appConfigPath;
}

public class Context : ScenarioContext
Expand Down
2 changes: 2 additions & 0 deletions src/NServiceBus.SqlServer/Configuration/SettingsKeys.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,7 @@ class SettingsKeys

public const string SchemaPropertyKey = "Schema";
public const string CatalogPropertyKey = "Catalog";

public const string DisableConnectionStringValidation = "SqlServer.DisableConnectionStringValidation";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,11 @@ public override TransportSendInfrastructure ConfigureSendInfrastructure()
() => new LegacyMessageDispatcher(addressTranslator, connectionFactory),
() =>
{
if (settings.HasSetting(SettingsKeys.DisableConnectionStringValidation))
{
return Task.FromResult(StartupCheckResult.Success);
}
var result = UsingV2ConfigurationChecker.Check();
return Task.FromResult(result);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,10 @@ public override TransportSendInfrastructure ConfigureSendInfrastructure()
},
() =>
{
var result = UsingV2ConfigurationChecker.Check();
var result = settings.HasSetting(SettingsKeys.DisableConnectionStringValidation)
? StartupCheckResult.Success
: UsingV2ConfigurationChecker.Check();
if (result.Succeeded && delayedDeliverySettings != null)
{
result = DelayedDeliveryInfrastructure.CheckForInvalidSettings(settings);
Expand Down

0 comments on commit a8b3787

Please sign in to comment.