/
RegistrationTests.cs
166 lines (132 loc) · 6.53 KB
/
RegistrationTests.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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
using Amazon;
using Amazon.Runtime;
namespace HealthChecks.Aws.Sns.Tests.DependencyInjection;
public class aws_sns_registration_should
{
[Fact]
public void add_health_check_with_topics_when_properly_configured()
{
var services = new ServiceCollection();
services.AddHealthChecks()
.AddSnsTopicsAndSubscriptions(setup =>
{
setup.Credentials = new BasicAWSCredentials("access-key", "secret-key");
setup.AddTopicAndSubscriptions("topic1");
});
using var serviceProvider = services.BuildServiceProvider();
var options = serviceProvider.GetRequiredService<IOptions<HealthCheckServiceOptions>>();
var registration = options.Value.Registrations.First();
var check = registration.Factory(serviceProvider);
registration.Name.ShouldBe("aws sns subs");
check.ShouldBeOfType<SnsTopicAndSubscriptionHealthCheck>();
}
[Fact]
public void add_health_check_with_topics_and_subscriptions_when_properly_configured()
{
var services = new ServiceCollection();
services.AddHealthChecks()
.AddSnsTopicsAndSubscriptions(setup =>
{
setup.Credentials = new BasicAWSCredentials("access-key", "secret-key");
setup.AddTopicAndSubscriptions("topic1", ["subscription1-arn", "subscription2-arn"]);
});
using var serviceProvider = services.BuildServiceProvider();
var options = serviceProvider.GetRequiredService<IOptions<HealthCheckServiceOptions>>();
var registration = options.Value.Registrations.First();
var check = registration.Factory(serviceProvider);
registration.Name.ShouldBe("aws sns subs");
check.ShouldBeOfType<SnsTopicAndSubscriptionHealthCheck>();
}
[Fact]
public void add_health_check_with_topics_assumerole_when_properly_configured()
{
var services = new ServiceCollection();
services.AddHealthChecks()
.AddSnsTopicsAndSubscriptions(setup =>
{
setup.Credentials = new AssumeRoleAWSCredentials(null, "role-arn", "session-name");
setup.AddTopicAndSubscriptions("topic1");
});
using var serviceProvider = services.BuildServiceProvider();
var options = serviceProvider.GetRequiredService<IOptions<HealthCheckServiceOptions>>();
var registration = options.Value.Registrations.First();
var check = registration.Factory(serviceProvider);
registration.Name.ShouldBe("aws sns subs");
check.ShouldBeOfType<SnsTopicAndSubscriptionHealthCheck>();
}
[Fact]
public void add_health_check_with_topics_and_subscriptions_assumerole_when_properly_configured()
{
var services = new ServiceCollection();
services.AddHealthChecks()
.AddSnsTopicsAndSubscriptions(setup =>
{
setup.Credentials = new AssumeRoleAWSCredentials(null, "role-arn", "session-name");
setup.AddTopicAndSubscriptions("topic1", ["subscription1-arn", "subscription2-arn"]);
});
using var serviceProvider = services.BuildServiceProvider();
var options = serviceProvider.GetRequiredService<IOptions<HealthCheckServiceOptions>>();
var registration = options.Value.Registrations.First();
var check = registration.Factory(serviceProvider);
registration.Name.ShouldBe("aws sns subs");
check.ShouldBeOfType<SnsTopicAndSubscriptionHealthCheck>();
}
[Fact]
public void add_named_health_with_topics_and_subscriptions_check_when_properly_configured()
{
var services = new ServiceCollection();
services.AddHealthChecks()
.AddSnsTopicsAndSubscriptions(setup => setup.Credentials = new BasicAWSCredentials("access-key", "secret-key"), name: "awssnssubs");
using var serviceProvider = services.BuildServiceProvider();
var options = serviceProvider.GetRequiredService<IOptions<HealthCheckServiceOptions>>();
var registration = options.Value.Registrations.First();
var check = registration.Factory(serviceProvider);
registration.Name.ShouldBe("awssnssubs");
check.ShouldBeOfType<SnsTopicAndSubscriptionHealthCheck>();
}
[Fact]
public void add_health_check_with_topics_and_subscriptions_when_no_credentials_provided()
{
var services = new ServiceCollection();
var setupCalled = false;
services.AddHealthChecks()
.AddSnsTopicsAndSubscriptions(_ => setupCalled = true, name: "awssnssubs");
using var serviceProvider = services.BuildServiceProvider();
var options = serviceProvider.GetRequiredService<IOptions<HealthCheckServiceOptions>>();
var registration = options.Value.Registrations.First();
var check = registration.Factory(serviceProvider);
registration.Name.ShouldBe("awssnssubs");
check.ShouldBeOfType<SnsTopicAndSubscriptionHealthCheck>();
setupCalled.ShouldBeTrue();
}
[Fact]
public void add_health_check_with_topics_and_subscriptions_when_no_credentials_but_region_provided()
{
var services = new ServiceCollection();
services.AddHealthChecks()
.AddSnsTopicsAndSubscriptions(setup => setup.RegionEndpoint = RegionEndpoint.EUCentral1);
using var serviceProvider = services.BuildServiceProvider();
var options = serviceProvider.GetRequiredService<IOptions<HealthCheckServiceOptions>>();
var registration = options.Value.Registrations.First();
var check = registration.Factory(serviceProvider);
registration.Name.ShouldBe("aws sns subs");
check.ShouldBeOfType<SnsTopicAndSubscriptionHealthCheck>();
}
[Fact]
public void add_health_check_with_topics_and_subscriptions_when_credentials_and_region_provided()
{
var services = new ServiceCollection();
services.AddHealthChecks()
.AddSnsTopicsAndSubscriptions(setup =>
{
setup.Credentials = new BasicAWSCredentials("access-key", "secret-key");
setup.RegionEndpoint = RegionEndpoint.EUCentral1;
});
var serviceProvider = services.BuildServiceProvider();
var options = serviceProvider.GetRequiredService<IOptions<HealthCheckServiceOptions>>();
var registration = options.Value.Registrations.First();
var check = registration.Factory(serviceProvider);
registration.Name.ShouldBe("aws sns subs");
check.ShouldBeOfType<SnsTopicAndSubscriptionHealthCheck>();
}
}