Skip to content

Commit

Permalink
fix: re-introduce 'None' enum member for az service bus topic sub (#218)
Browse files Browse the repository at this point in the history
  • Loading branch information
stijnmoreels committed Aug 31, 2021
1 parent be291f6 commit b3da25b
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/Arcus.Messaging.Pumps.ServiceBus/TopicSubscription.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,17 @@ namespace Arcus.Messaging.Pumps.ServiceBus
public enum TopicSubscription
{
/// <summary>
/// Creates a new topic subscription when the message pump starts.
/// Don't create any Azure Service Bus Topic subscription during the lifecycle of the <see cref="AzureServiceBusMessagePump"/>.
/// </summary>
None = 0,

/// <summary>
/// Creates a new Azure Service Bus Topic subscription when the message pump starts.
/// </summary>
CreateOnStart = 1,

/// <summary>
/// Deletes the new topic subscription when the message pump stops.
/// Deletes the new Azure Service Bus Topic subscription when the message pump stops.
/// </summary>
DeleteOnStop = 2
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Threading.Tasks;
using Arcus.Messaging.Abstractions.MessageHandling;
using Arcus.Messaging.Abstractions.ServiceBus;
using Arcus.Messaging.Pumps.ServiceBus;
using Arcus.Messaging.Tests.Core.Generators;
using Arcus.Messaging.Tests.Core.Messages.v1;
using Arcus.Messaging.Tests.Core.Messages.v2;
Expand All @@ -16,7 +17,9 @@
using Arcus.Security.Providers.AzureKeyVault.Authentication;
using Arcus.Security.Providers.AzureKeyVault.Configuration;
using Arcus.Testing.Logging;
using Azure;
using Azure.Messaging.ServiceBus;
using Azure.Messaging.ServiceBus.Administration;
using Microsoft.Azure.KeyVault;
using Microsoft.Azure.Management.ServiceBus.Models;
using Microsoft.Azure.ServiceBus;
Expand Down Expand Up @@ -112,6 +115,41 @@ await using (var service = await TestMessagePumpService.StartNewAsync(config, _l
await service.SimulateMessageProcessingAsync(connectionString);
}
}

[Theory]
[InlineData(TopicSubscription.None, false)]
[InlineData(TopicSubscription.CreateOnStart, true)]
[InlineData(TopicSubscription.DeleteOnStop, false)]
[InlineData(TopicSubscription.CreateOnStart | TopicSubscription.DeleteOnStop, true)]
public async Task ServiceBusTopicMessagePump_WithNoneTopicSubscription_DoesntCreateTopicSubscription(TopicSubscription topicSubscription, bool expected)
{
// Arrange
var config = TestConfig.Create();
string connectionString = config.GetServiceBusConnectionString(ServiceBusEntityType.Topic);
var options = new WorkerOptions();
var subscriptionName = $"Subscription-{Guid.NewGuid():N}";
options.AddEventGridPublisher(config)
.AddServiceBusTopicMessagePump(
subscriptionName,
configuration => connectionString,
opt => opt.TopicSubscription = topicSubscription)
.WithServiceBusMessageHandler<OrdersAzureServiceBusMessageHandler, Order>();

// Act
await using (var worker = await Worker.StartNewAsync(options))
{
var client = new ServiceBusAdministrationClient(connectionString);
var properties = ServiceBusConnectionStringProperties.Parse(connectionString);

Response<bool> subscriptionExistsResponse = await client.SubscriptionExistsAsync(properties.EntityPath, subscriptionName);
if (subscriptionExistsResponse.Value)
{
await client.DeleteSubscriptionAsync(properties.EntityPath, subscriptionName);
}

Assert.Equal(expected, subscriptionExistsResponse.Value);
}
}

[Fact]
public async Task ServiceBusTopicMessagePumpWithSubscriptionNameOver50_PublishServiceBusMessage_MessageSuccessfullyProcessed()
Expand Down

0 comments on commit b3da25b

Please sign in to comment.