using System; using System.Collections.Generic; using System.Threading.Tasks; using EasyNetQ; using MalwareMultiScan.Api.Services.Implementations; using MalwareMultiScan.Api.Services.Interfaces; using MalwareMultiScan.Backends.Messages; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Memory; using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; namespace MalwareMultiScan.Tests { public class ReceiverHostedServiceTests { private IReceiverHostedService _receiverHostedService; private Mock _busMock; private Mock _scanResultServiceMock; [SetUp] public void SetUp() { _busMock = new Mock(); _busMock .Setup(x => x.Receive("mms.results", It.IsAny>())) .Callback>((s, func) => { var task = func.Invoke(new ScanResultMessage { Id = "test", Backend = "dummy", Duration = 100, Succeeded = true, Threats = new[] {"Test"} }); task.Wait(); }); _scanResultServiceMock = new Mock(); var configuration = new ConfigurationRoot(new List { new MemoryConfigurationProvider(new MemoryConfigurationSource()) }) { ["ResultsSubscriptionId"] = "mms.results" }; _receiverHostedService = new ReceiverHostedService( _busMock.Object, configuration, _scanResultServiceMock.Object, Mock.Of>()); } [Test] public async Task TestBusReceiveScanResultMessage() { await _receiverHostedService.StartAsync(default); _scanResultServiceMock.Verify(x => x.UpdateScanResultForBackend( "test", "dummy", 100, true, true, new[] {"Test"}), Times.Once); } [Test] public async Task TestBusIsDisposedOnStop() { await _receiverHostedService.StopAsync(default); _busMock.Verify(x => x.Dispose(), Times.Once); } } }