using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Memory; using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; namespace MalwareMultiScan.Tests.Scanner { public class ScanBackgroundJobTests { private Mock _busMock; private Mock _scanBackendMock; private IScanBackgroundJob _scanBackgroundJob; [SetUp] public void SetUp() { var configuration = new ConfigurationRoot(new List { new MemoryConfigurationProvider(new MemoryConfigurationSource()) }) { ["ResultsSubscriptionId"] = "mms.results" }; _busMock = new Mock(); _scanBackendMock = new Mock(); _scanBackendMock .SetupGet(x => x.Id) .Returns("dummy"); _scanBackendMock .Setup(x => x.ScanAsync(It.IsAny(), It.IsAny())) .Returns(Task.FromResult(new[] {"Test"})); _scanBackgroundJob = new ScanBackgroundJob(configuration, _busMock.Object, Mock.Of>(), _scanBackendMock.Object); } [Test] public async Task TestMessageProcessing() { await _scanBackgroundJob.Process(new ScanRequestMessage { Id = "test", Uri = new Uri("http://test.com") }); _scanBackendMock.Verify( x => x.ScanAsync(It.IsAny(), It.IsAny())); _busMock.Verify(x => x.SendAsync("mms.results", It.Is(m => m.Succeeded && m.Backend == "dummy" && m.Id == "test" && m.Threats.Contains("Test")))); } } }