Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Added AWS SNS package #573

Draft
wants to merge 1 commit into
base: development
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<GlobalPackageReference Include="SonarAnalyzer.CSharp" Version="10.4.0.108396" Condition=" '$(BuildingInsideVisualStudio)' == 'true' " />
</ItemGroup>
<ItemGroup>
<PackageVersion Include="AWSSDK.SimpleNotificationService" Version="3.7.400.65" />
<PackageVersion Include="Azure.Data.Tables" Version="12.9.1" />
<PackageVersion Include="Azure.Identity" Version="1.13.1" />
<PackageVersion Include="Azure.Storage.Blobs" Version="12.23.0" />
Expand Down Expand Up @@ -44,6 +45,7 @@
<PackageVersion Include="Testcontainers.Azurite" Version="4.1.0" />
<PackageVersion Include="Testcontainers.ClickHouse" Version="4.1.0" />
<PackageVersion Include="Testcontainers.Kafka" Version="4.1.0" />
<PackageVersion Include="Testcontainers.LocalStack" Version="4.1.0" />
<PackageVersion Include="Testcontainers.MsSql" Version="4.1.0" />
<PackageVersion Include="Testcontainers.MySql" Version="4.1.0" />
<PackageVersion Include="Testcontainers.Oracle" Version="4.1.0" />
Expand Down
15 changes: 15 additions & 0 deletions HealthChecks.sln
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetEvolve.HealthChecks.Test
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetEvolve.HealthChecks.Tests.Architecture", "tests\NetEvolve.HealthChecks.Tests.Architecture\NetEvolve.HealthChecks.Tests.Architecture.csproj", "{17BCA132-1FBB-46C1-B6A1-60F64969383D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetEvolve.HealthChecks.AWS.SNS", "src\NetEvolve.HealthChecks.AWS.SNS\NetEvolve.HealthChecks.AWS.SNS.csproj", "{546D5904-1811-457F-8C48-3F78D7F0C803}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -315,6 +317,18 @@ Global
{17BCA132-1FBB-46C1-B6A1-60F64969383D}.Release|x64.Build.0 = Release|Any CPU
{17BCA132-1FBB-46C1-B6A1-60F64969383D}.Release|x86.ActiveCfg = Release|Any CPU
{17BCA132-1FBB-46C1-B6A1-60F64969383D}.Release|x86.Build.0 = Release|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Debug|Any CPU.Build.0 = Debug|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Debug|x64.ActiveCfg = Debug|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Debug|x64.Build.0 = Debug|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Debug|x86.ActiveCfg = Debug|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Debug|x86.Build.0 = Debug|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Release|Any CPU.ActiveCfg = Release|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Release|Any CPU.Build.0 = Release|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Release|x64.ActiveCfg = Release|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Release|x64.Build.0 = Release|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Release|x86.ActiveCfg = Release|Any CPU
{546D5904-1811-457F-8C48-3F78D7F0C803}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -340,6 +354,7 @@ Global
{66406BE8-0281-4C95-B90B-20CAE4516A16} = {E412EC77-2022-4A1D-AAC1-FDF1A4A45827}
{2B089420-E791-44E7-B471-F6F527B33E1C} = {E412EC77-2022-4A1D-AAC1-FDF1A4A45827}
{17BCA132-1FBB-46C1-B6A1-60F64969383D} = {E412EC77-2022-4A1D-AAC1-FDF1A4A45827}
{546D5904-1811-457F-8C48-3F78D7F0C803} = {EF615D18-42E2-48A4-8EBA-E652DC574C56}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {28B4CC2B-39E8-49C0-9687-78121BD83A53}
Expand Down
6 changes: 6 additions & 0 deletions src/NetEvolve.HealthChecks.AWS.SNS/CreationMode.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace NetEvolve.HealthChecks.AWS.SNS;

public enum CreationMode

Check warning on line 3 in src/NetEvolve.HealthChecks.AWS.SNS/CreationMode.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / CodeQL / Run CodeQL

Missing XML comment for publicly visible type or member 'CreationMode'

Check failure on line 3 in src/NetEvolve.HealthChecks.AWS.SNS/CreationMode.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / Tests / Testing .NET solution

Missing XML comment for publicly visible type or member 'CreationMode'
{
BasicAuthentication = 0,

Check warning on line 5 in src/NetEvolve.HealthChecks.AWS.SNS/CreationMode.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / CodeQL / Run CodeQL

Missing XML comment for publicly visible type or member 'CreationMode.BasicAuthentication'

Check failure on line 5 in src/NetEvolve.HealthChecks.AWS.SNS/CreationMode.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / Tests / Testing .NET solution

Missing XML comment for publicly visible type or member 'CreationMode.BasicAuthentication'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
namespace NetEvolve.HealthChecks.AWS.SNS;

using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using NetEvolve.Arguments;
using NetEvolve.HealthChecks.Abstractions;

/// <summary>
/// Extensions methods for <see cref="IHealthChecksBuilder"/> with custom Health Checks.
/// </summary>
public static class DependencyInjectionExtensions
{
private static readonly string[] _defaultTags = ["aws", "sns", "message-queue"];

/// <summary>
/// Add a health check for AWS SimpleNotificationService (SNS).
/// </summary>
/// <param name="builder">The <see cref="IHealthChecksBuilder"/>.</param>
/// <param name="name">The name of the <see cref="SimpleNotificationServiceHealthCheck"/>.</param>
/// <param name="options">An optional action to configure.</param>
/// <param name="tags">A list of additional tags that can be used to filter sets of health checks. Optional.</param>
/// <exception cref="ArgumentNullException">The <paramref name="builder"/> is <see langword="null" />.</exception>
/// <exception cref="ArgumentNullException">The <paramref name="name"/> is <see langword="null" />.</exception>
/// <exception cref="ArgumentException">The <paramref name="name"/> is <see langword="null" /> or <c>whitespace</c>.</exception>
/// <exception cref="ArgumentException">The <paramref name="name"/> is already in use.</exception>
/// <exception cref="ArgumentNullException">The <paramref name="tags"/> is <see langword="null" />.</exception>
public static IHealthChecksBuilder AddSimpleNotificationService(
[NotNull] this IHealthChecksBuilder builder,
[NotNull] string name,
Action<SimpleNotificationServiceOptions>? options = null,
params string[] tags
)
{
ArgumentNullException.ThrowIfNull(builder);
Argument.ThrowIfNullOrEmpty(name);
ArgumentNullException.ThrowIfNull(tags);

if (!builder.IsServiceTypeRegistered<SimpleNotificationServiceCheckMarker>())
{
_ = builder
.Services.AddSingleton<SimpleNotificationServiceCheckMarker>()
.AddSingleton<SimpleNotificationServiceHealthCheck>()
.ConfigureOptions<SimpleNotificationServiceConfigure>();
}

if (builder.IsNameAlreadyUsed<SimpleNotificationServiceHealthCheck>(name))
{
throw new ArgumentException($"Name `{name}` already in use.", nameof(name), null);
}

if (options is not null)
{
_ = builder.Services.Configure(name, options);
}

return builder.AddCheck<SimpleNotificationServiceHealthCheck>(
name,
HealthStatus.Unhealthy,
_defaultTags.Union(tags, StringComparer.OrdinalIgnoreCase)
);
}

private sealed partial class SimpleNotificationServiceCheckMarker { }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>$(_ProjectTargetFrameworks)</TargetFrameworks>

<Description>Contains HealthChecks for AWS Simple Notification Service (SNS).</Description>
<PackageTags>$(PackageTags);aws;sns;</PackageTags>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="AWSSDK.SimpleNotificationService" />
<PackageReference Include="NetEvolve.Extensions.Tasks" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\NetEvolve.HealthChecks.Abstractions\NetEvolve.HealthChecks.Abstractions.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
namespace NetEvolve.HealthChecks.AWS.SNS;

using Microsoft.Extensions.Options;

internal sealed class SimpleNotificationServiceConfigure
: IConfigureNamedOptions<SimpleNotificationServiceOptions>,
IValidateOptions<SimpleNotificationServiceOptions>
{
public void Configure(string? name, SimpleNotificationServiceOptions options) { }

public void Configure(SimpleNotificationServiceOptions options) { }

public ValidateOptionsResult Validate(string? name, SimpleNotificationServiceOptions options) =>
ValidateOptionsResult.Success;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
namespace NetEvolve.HealthChecks.AWS.SNS;

using System;
using System.Threading;
using System.Threading.Tasks;
using Amazon;
using Amazon.SimpleNotificationService;
using Amazon.SimpleNotificationService.Model;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Options;
using NetEvolve.Extensions.Tasks;
using NetEvolve.HealthChecks.Abstractions;

internal sealed class SimpleNotificationServiceHealthCheck
: ConfigurableHealthCheckBase<SimpleNotificationServiceOptions>
{
public SimpleNotificationServiceHealthCheck(
IOptionsMonitor<SimpleNotificationServiceOptions> optionsMonitor
)
: base(optionsMonitor) { }

protected override async ValueTask<HealthCheckResult> ExecuteHealthCheckAsync(
string name,
HealthStatus failureStatus,
SimpleNotificationServiceOptions options,
CancellationToken cancellationToken
)
{
using var client = CreateClient(options);

var (isValid, topic) = await client
.GetSubscriptionAttributesAsync(
new GetSubscriptionAttributesRequest { SubscriptionArn = options.TopicName },
cancellationToken
)
.WithTimeoutAsync(options.Timeout, cancellationToken)
.ConfigureAwait(false);

return HealthCheckState(isValid && topic is not null, name);
}

private static AmazonSimpleNotificationServiceClient CreateClient(
SimpleNotificationServiceOptions options
)
{
var hasCredentials = options.GetCredentials() is not null;
var hasEndpoint = options.GetRegionEndpoint() is not null;

var config = new AmazonSimpleNotificationServiceConfig
{
ServiceURL = options.ServiceUrl,
RegionEndpoint = RegionEndpoint.USEast1,
};

return (hasCredentials, hasEndpoint) switch
{
(true, true) => new AmazonSimpleNotificationServiceClient(
options.GetCredentials(),
options.GetRegionEndpoint()
),
(true, false) => new AmazonSimpleNotificationServiceClient(
options.GetCredentials(),
config
),
(false, true) => new AmazonSimpleNotificationServiceClient(options.GetRegionEndpoint()),
_ => throw new InvalidOperationException("Invalid ClientCreationMode."),
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
namespace NetEvolve.HealthChecks.AWS.SNS;

using System;
using Amazon;
using Amazon.Runtime;

public sealed class SimpleNotificationServiceOptions

Check warning on line 7 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / CodeQL / Run CodeQL

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions'

Check failure on line 7 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / Tests / Testing .NET solution

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions'
{
public string? AccessKey { get; set; }

Check warning on line 9 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / CodeQL / Run CodeQL

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.AccessKey'

Check failure on line 9 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / Tests / Testing .NET solution

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.AccessKey'

public CreationMode CreationMode { get; set; }

Check warning on line 11 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / CodeQL / Run CodeQL

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.CreationMode'

Check failure on line 11 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / Tests / Testing .NET solution

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.CreationMode'

public string? SecretKey { get; set; }

Check warning on line 13 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / CodeQL / Run CodeQL

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.SecretKey'

Check failure on line 13 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / Tests / Testing .NET solution

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.SecretKey'

#pragma warning disable CA1056 // URI-like properties should not be strings
public string? ServiceUrl { get; set; }

Check warning on line 16 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / CodeQL / Run CodeQL

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.ServiceUrl'

Check failure on line 16 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / Tests / Testing .NET solution

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.ServiceUrl'
#pragma warning restore CA1056 // URI-like properties should not be strings

public string? TopicName { get; set; }

Check warning on line 19 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / CodeQL / Run CodeQL

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.TopicName'

Check failure on line 19 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / Tests / Testing .NET solution

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.TopicName'

public int Timeout { get; set; } = 100;

Check warning on line 21 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / CodeQL / Run CodeQL

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.Timeout'

Check failure on line 21 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / Tests / Testing .NET solution

Missing XML comment for publicly visible type or member 'SimpleNotificationServiceOptions.Timeout'

internal AWSCredentials? GetCredentials()
{
return CreationMode switch

Check warning on line 25 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / CodeQL / Run CodeQL

Use expression body for method (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0022)

Check failure on line 25 in src/NetEvolve.HealthChecks.AWS.SNS/SimpleNotificationServiceOptions.cs

View workflow job for this annotation

GitHub Actions / Build & Tests / Tests / Testing .NET solution

Use expression body for method (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0022)
{
CreationMode.BasicAuthentication => new BasicAWSCredentials(AccessKey, SecretKey),
_ => null,
};
}

internal RegionEndpoint? GetRegionEndpoint() => CreationMode == CreationMode ? null : null;
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,15 @@ private static Architecture LoadArchitecture()
{
System.Reflection.Assembly[] assemblies =
[
// Apache
typeof(Apache.Kafka.KafkaCheck).Assembly,
// AWS
typeof(AWS.SNS.SimpleNotificationServiceHealthCheck).Assembly,
// Azure
typeof(Azure.Blobs.BlobContainerAvailableHealthCheck).Assembly,
typeof(Azure.Queues.QueueClientAvailableHealthCheck).Assembly,
typeof(Azure.Tables.TableClientAvailableHealthCheck).Assembly,
// others
typeof(ClickHouse.ClickHouseCheck).Assembly,
typeof(Dapr.DaprHealthCheck).Assembly,
typeof(MySql.MySqlCheck).Assembly,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<ItemGroup>
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.Abstractions\NetEvolve.HealthChecks.Abstractions.csproj" />
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.Apache.Kafka\NetEvolve.HealthChecks.Apache.Kafka.csproj" />
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.AWS.SNS\NetEvolve.HealthChecks.AWS.SNS.csproj" />
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.Azure.Blobs\NetEvolve.HealthChecks.Azure.Blobs.csproj" />
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.Azure.Queues\NetEvolve.HealthChecks.Azure.Queues.csproj" />
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.Azure.Tables\NetEvolve.HealthChecks.Azure.Tables.csproj" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
namespace NetEvolve.HealthChecks.Tests.Integration.AWS;

using System.Threading.Tasks;
using Testcontainers.LocalStack;
using TestContainer = Testcontainers.LocalStack.LocalStackContainer;

public sealed class LocalStackInstance : IAsyncLifetime
{
/// <summary>Access Key</summary>
/// <see href="https://docs.localstack.cloud/references/credentials/#access-key-id" />
internal const string AccessKey = "LSIAQAAAAAAVNCBMPNSG";
internal const string SecretKey = "test";

private readonly TestContainer _container = new LocalStackBuilder()
.WithEnvironment("AWS_ACCESS_KEY_ID", AccessKey)
.WithEnvironment("AWS_SECRET_ACCESS_KEY", SecretKey)
.Build();

internal string ConnectionString => _container.GetConnectionString();

public async Task DisposeAsync() => await _container.DisposeAsync().ConfigureAwait(false);

public async Task InitializeAsync() => await _container.StartAsync().ConfigureAwait(false);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
namespace NetEvolve.HealthChecks.Tests.Integration.AWS.SNS;

using NetEvolve.HealthChecks.AWS.SNS;
using NodaTime;

public class SimpleNotificationServiceHealthCheckTests
: HealthCheckTestBase,
IClassFixture<LocalStackInstance>
{
private readonly LocalStackInstance _instance;

public SimpleNotificationServiceHealthCheckTests(LocalStackInstance instance)
{
_instance = instance;
}

[Fact]
public async Task AddSimpleNotificationService_UseOptionsCreate_ShouldReturnHealthy() =>
await RunAndVerify(healthChecks =>
{
_ = healthChecks.AddSimpleNotificationService(
"TestContainerHealthy",
options =>
{
options.AccessKey = LocalStackInstance.AccessKey;
options.SecretKey = LocalStackInstance.SecretKey;
options.ServiceUrl = _instance.ConnectionString;
}
);
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
<PackageReference Include="Testcontainers.Azurite" />
<PackageReference Include="Testcontainers.ClickHouse" />
<PackageReference Include="Testcontainers.Kafka" />
<PackageReference Include="Testcontainers.LocalStack" />
<PackageReference Include="Testcontainers.MsSql" />
<PackageReference Include="Testcontainers.MySql" />
<PackageReference Include="Testcontainers.Oracle" />
Expand All @@ -36,6 +37,7 @@
<ItemGroup>
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.Abstractions\NetEvolve.HealthChecks.Abstractions.csproj" />
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.Apache.Kafka\NetEvolve.HealthChecks.Apache.Kafka.csproj" />
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.AWS.SNS\NetEvolve.HealthChecks.AWS.SNS.csproj" />
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.Azure.Blobs\NetEvolve.HealthChecks.Azure.Blobs.csproj" />
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.Azure.Queues\NetEvolve.HealthChecks.Azure.Queues.csproj" />
<ProjectReference Include="..\..\src\NetEvolve.HealthChecks.Azure.Tables\NetEvolve.HealthChecks.Azure.Tables.csproj" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
results: [
{
description: TestContainerHealthy: Unexpected error.,
exception: {
innerExceptions: [
{
message: Exception of type 'Amazon.Runtime.Internal.HttpErrorResponseException' was thrown.,
type: HttpErrorResponseException
}
],
message: The security token included in the request is invalid.,
type: Amazon.SimpleNotificationService.AmazonSimpleNotificationServiceException
},
name: TestContainerHealthy,
status: Unhealthy,
tags: [
aws,
sns,
message-queue
]
}
],
status: Unhealthy
}
Loading