1
0
mirror of https://github.com/bitwarden/server.git synced 2024-12-04 14:13:28 +01:00
bitwarden-server/test/Core.Test/Services/AmazonSqsBlockIpServiceTests.cs

77 lines
1.9 KiB
C#
Raw Normal View History

using Amazon.SQS;
using Bit.Core.Services;
using Bit.Core.Settings;
using NSubstitute;
using Xunit;
2022-08-29 22:06:55 +02:00
namespace Bit.Core.Test.Services;
public class AmazonSqsBlockIpServiceTests : IDisposable
{
2022-08-29 22:06:55 +02:00
private readonly AmazonSqsBlockIpService _sut;
2022-08-29 22:06:55 +02:00
private readonly GlobalSettings _globalSettings;
private readonly IAmazonSQS _amazonSqs;
2022-08-29 22:06:55 +02:00
public AmazonSqsBlockIpServiceTests()
{
_globalSettings = new GlobalSettings
{
2022-08-29 22:06:55 +02:00
Amazon =
{
2022-08-29 22:06:55 +02:00
AccessKeyId = "AccessKeyId-AmazonSesMailDeliveryServiceTests",
AccessKeySecret = "AccessKeySecret-AmazonSesMailDeliveryServiceTests",
Region = "Region-AmazonSesMailDeliveryServiceTests"
}
};
2022-08-29 22:06:55 +02:00
_amazonSqs = Substitute.For<IAmazonSQS>();
2022-08-29 22:06:55 +02:00
_sut = new AmazonSqsBlockIpService(_globalSettings, _amazonSqs);
}
2022-08-29 22:06:55 +02:00
public void Dispose()
{
_sut?.Dispose();
}
2022-08-29 22:06:55 +02:00
[Fact]
public async Task BlockIpAsync_UnblockCalled_WhenNotPermanent()
{
const string expectedIp = "ip";
2022-08-29 22:06:55 +02:00
await _sut.BlockIpAsync(expectedIp, false);
2022-08-29 22:06:55 +02:00
await _amazonSqs.Received(2).SendMessageAsync(
Arg.Any<string>(),
Arg.Is(expectedIp));
}
2022-08-29 22:06:55 +02:00
[Fact]
public async Task BlockIpAsync_UnblockNotCalled_WhenPermanent()
{
const string expectedIp = "ip";
2022-08-29 22:06:55 +02:00
await _sut.BlockIpAsync(expectedIp, true);
2022-08-29 22:06:55 +02:00
await _amazonSqs.Received(1).SendMessageAsync(
Arg.Any<string>(),
Arg.Is(expectedIp));
}
2022-08-29 22:06:55 +02:00
[Fact]
public async Task BlockIpAsync_NotBlocked_WhenAlreadyBlockedRecently()
{
const string expectedIp = "ip";
2022-08-29 22:06:55 +02:00
await _sut.BlockIpAsync(expectedIp, true);
2022-08-29 22:06:55 +02:00
// The second call should hit the already blocked guard clause
await _sut.BlockIpAsync(expectedIp, true);
2022-08-29 22:06:55 +02:00
await _amazonSqs.Received(1).SendMessageAsync(
Arg.Any<string>(),
Arg.Is(expectedIp));
}
}