-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAzureServiceBusEndToEndTestBase.cs
More file actions
32 lines (27 loc) · 1.51 KB
/
AzureServiceBusEndToEndTestBase.cs
File metadata and controls
32 lines (27 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using Testcontainers.ServiceBus;
namespace BuslyCLI.Console.Tests.EndToEnd.AzureServiceBus;
public class AzureServiceBusEndToEndTestBase : SingletonTestFixtureBase<ServiceBusContainer>
{
protected ServiceBusContainer ServiceBusContainer => Container;
// GetConnectionString() uses UriBuilder which appends a trailing slash to the endpoint
// (e.g. "sb://localhost:12345/"). NServiceBus's InjectEmulatorAdminPort does a string replace
// looking for "Endpoint=sb://localhost:12345;" (no trailing slash), so it never matches and
// the admin client ends up using the AMQP port instead of port 5300.
// This method builds the connection string without the trailing slash so port injection works correctly.
protected string GetNServiceBusConnectionString()
{
var amqpPort = Container.GetMappedPublicPort(ServiceBusBuilder.ServiceBusPort);
return $"Endpoint=sb://{Container.Hostname}:{amqpPort};SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;";
}
protected override ServiceBusContainer CreateContainer()
{
return new ServiceBusBuilder("mcr.microsoft.com/azure-messaging/servicebus-emulator:latest")
.WithAcceptLicenseAgreement(true)
.WithPortBinding(ServiceBusBuilder.ServiceBusHttpPort, ServiceBusBuilder.ServiceBusHttpPort)
.Build();
}
protected override async Task StartContainerAsync(ServiceBusContainer container)
{
await container.StartAsync();
}
}