/
When_instance_is_setup.cs
98 lines (82 loc) · 3.67 KB
/
When_instance_is_setup.cs
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
namespace ServiceControl.Audit.UnitTests.Infrastructure
{
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Audit.Infrastructure;
using Audit.Infrastructure.Hosting;
using Audit.Infrastructure.Hosting.Commands;
using Audit.Infrastructure.Settings;
using Microsoft.Extensions.DependencyInjection;
using NServiceBus;
using NServiceBus.Transport;
using NUnit.Framework;
using Persistence;
using Transports;
class When_instance_is_setup
{
[Test]
public async Task Should_provision_queues()
{
var instanceInputQueueName = "SomeInstanceQueue";
var settings = new Settings(instanceInputQueueName, typeof(FakeTransport).AssemblyQualifiedName, typeof(FakePersistenceConfiguration).AssemblyQualifiedName)
{
ForwardAuditMessages = true,
};
var setupCommand = new SetupCommand();
await setupCommand.Execute(new HostArguments(Array.Empty<string>()), settings);
CollectionAssert.AreEquivalent(new[]
{
instanceInputQueueName,
$"{instanceInputQueueName}.Errors",
settings.AuditQueue,
settings.AuditLogQueue
}, FakeTransport.QueuesCreated);
}
}
class FakeTransport : ITransportCustomization
{
public static IList<string> QueuesCreated;
public void CustomizePrimaryEndpoint(EndpointConfiguration endpointConfiguration,
TransportSettings transportSettings) => throw new NotImplementedException();
public void CustomizeAuditEndpoint(EndpointConfiguration endpointConfiguration,
TransportSettings transportSettings) => throw new NotImplementedException();
public void CustomizeMonitoringEndpoint(EndpointConfiguration endpointConfiguration,
TransportSettings transportSettings) => throw new NotImplementedException();
public IProvideQueueLength CreateQueueLengthProvider() => throw new NotImplementedException();
public Task ProvisionQueues(TransportSettings transportSettings,
IEnumerable<string> additionalQueues)
{
QueuesCreated = new List<string>(additionalQueues)
{
transportSettings.EndpointName,
transportSettings.ErrorQueue
};
return Task.CompletedTask;
}
public Task<TransportInfrastructure> CreateTransportInfrastructure(string name, TransportSettings transportSettings, OnMessage onMessage = null,
OnError onError = null, Func<string, Exception, Task> onCriticalError = null,
TransportTransactionMode preferredTransactionMode = TransportTransactionMode.ReceiveOnly) =>
throw new NotImplementedException();
}
class FakePersistenceConfiguration : IPersistenceConfiguration
{
public string Name => "FakePersister";
public IEnumerable<string> ConfigurationKeys => [];
public IPersistence Create(PersistenceSettings settings) => new FakePersistence();
class FakePersistence : IPersistence
{
public IPersistenceLifecycle Configure(IServiceCollection serviceCollection) =>
throw new NotImplementedException();
public IPersistenceInstaller CreateInstaller() => new FakePersistenceInstaller();
class FakePersistenceInstaller : IPersistenceInstaller
{
public Task Install(CancellationToken cancellationToken = default)
{
return Task.CompletedTask;
}
}
}
}
}