From 998ff1bc619a98aad779fd34da6369763c2b5640 Mon Sep 17 00:00:00 2001 From: danielmarbach Date: Fri, 20 Nov 2020 15:25:23 +0100 Subject: [PATCH] Add better coverage for the various "tables should not be created" scenarios --- ...le_doesnt_exist_and_installers_disabled.cs | 93 +++++++++++++++++++ ...oesnt_exist_and_table_creation_disabled.cs | 16 +++- 2 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 src/SharedAcceptanceTests.All/When_saga_table_doesnt_exist_and_installers_disabled.cs diff --git a/src/SharedAcceptanceTests.All/When_saga_table_doesnt_exist_and_installers_disabled.cs b/src/SharedAcceptanceTests.All/When_saga_table_doesnt_exist_and_installers_disabled.cs new file mode 100644 index 00000000..f86ab9d7 --- /dev/null +++ b/src/SharedAcceptanceTests.All/When_saga_table_doesnt_exist_and_installers_disabled.cs @@ -0,0 +1,93 @@ +namespace NServiceBus.AcceptanceTests +{ + using System; + using System.Linq; + using System.Threading.Tasks; + using NServiceBus; + using AcceptanceTesting; + using Configuration.AdvancedExtensibility; + using NServiceBus.AcceptanceTesting.Support; + using Testing; + using EndpointTemplates; + using NUnit.Framework; + + public partial class When_saga_table_doesnt_exist_and_installers_disabled : NServiceBusAcceptanceTest + { + private const string TableThatDoesntExist = "doesnotexist"; + + [SetUp] + public Task Setup() + { + return SetupFixture.TableClient.GetTableReference(TableThatDoesntExist).DeleteIfExistsAsync(); + } + + [Test] + public void Should_throw_not_supported() + { + var exception = Assert.ThrowsAsync(async () => + await Scenario.Define() + .WithEndpoint(b => b.When(session => session.SendLocal(new StartSagaMessage + { + SomeId = Guid.NewGuid() + }))) + .Done(c => c.FailedMessages.Any()) + .Run()); + + Assert.AreEqual(1, exception.ScenarioContext.FailedMessages.Count); + StringAssert.Contains( + ConnectionStringHelper.IsPremiumEndpoint(SetupFixture.TableClient) + ? "The specified resource does not exist." + : "Element 0 in the batch returned an unexpected response code.", + exception.FailedMessage.Exception.Message); + } + + public class Context : ScenarioContext + { + } + + public class EndpointWithInstallersOff : EndpointConfigurationBuilder + { + public EndpointWithInstallersOff() + { + EndpointSetup(c => + { + // so that we don't have to create a new endpoint template + c.GetSettings().Set("Installers.Enable", false); + + var sagaPersistence = c.UsePersistence(); + sagaPersistence.DefaultTable(TableThatDoesntExist); + + var subscriptionStorage = c.UsePersistence(); + }); + } + + public class SomeSaga : Saga, IAmStartedByMessages + { + public Task Handle(StartSagaMessage message, IMessageHandlerContext context) + { + Data.SomeId = message.SomeId; + return Task.CompletedTask; + } + + protected override void ConfigureHowToFindSaga(SagaPropertyMapper mapper) + { + mapper.ConfigureMapping(m => m.SomeId) + .ToSaga(s => s.SomeId); + } + } + + public class SomeSagaData : IContainSagaData + { + public Guid Id { get; set; } + public string Originator { get; set; } + public string OriginalMessageId { get; set; } + public Guid SomeId { get; set; } + } + } + + public class StartSagaMessage : ICommand + { + public Guid SomeId { get; set; } + } + } +} \ No newline at end of file diff --git a/src/SharedAcceptanceTests.All/When_saga_table_doesnt_exist_and_table_creation_disabled.cs b/src/SharedAcceptanceTests.All/When_saga_table_doesnt_exist_and_table_creation_disabled.cs index 103ea093..78af7117 100644 --- a/src/SharedAcceptanceTests.All/When_saga_table_doesnt_exist_and_table_creation_disabled.cs +++ b/src/SharedAcceptanceTests.All/When_saga_table_doesnt_exist_and_table_creation_disabled.cs @@ -12,12 +12,20 @@ namespace NServiceBus.AcceptanceTests public partial class When_saga_table_doesnt_exist_and_table_creation_disabled : NServiceBusAcceptanceTest { + private const string TableThatDoesntExist = "doesnotexist"; + + [SetUp] + public Task Setup() + { + return SetupFixture.TableClient.GetTableReference(TableThatDoesntExist).DeleteIfExistsAsync(); + } + [Test] public void Should_throw_not_supported() { var exception = Assert.ThrowsAsync(async () => await Scenario.Define() - .WithEndpoint(b => b.When(session => session.SendLocal(new StartSagaMessage + .WithEndpoint(b => b.When(session => session.SendLocal(new StartSagaMessage { SomeId = Guid.NewGuid() }))) @@ -36,14 +44,14 @@ public class Context : ScenarioContext { } - public class EndpointWithSchemaCreationOff : EndpointConfigurationBuilder + public class EndpointWithTableCreationDisabled : EndpointConfigurationBuilder { - public EndpointWithSchemaCreationOff() + public EndpointWithTableCreationDisabled() { EndpointSetup(c => { var sagaPersistence = c.UsePersistence(); - sagaPersistence.DefaultTable("doesnotexist"); + sagaPersistence.DefaultTable(TableThatDoesntExist); sagaPersistence.DisableTableCreation(); var subscriptionStorage = c.UsePersistence();