コード例 #1
0
        public async Task Bad_FileId_Is_FilteredOut_Filter()
        {
            var badEvent = TransactionAdaptionEventModel.NewDocumentEvent();

            badEvent.Properties["FileId"] = "Rgsjrjgkisjghr";
            JsonSerialiser.Setup(s => s.Deserialize <TransactionAdapationEventMetadataFile>(It.IsAny <MemoryStream>(), It.IsAny <Encoding>()))
            .ReturnsAsync(_expectedMetadata = new TransactionAdapationEventMetadataFile
            {
                Events = new[]
                {
                    TransactionAdaptionEventModel.AnalysisCompletedEvent(_fileId),
                    TransactionAdaptionEventModel.FileTypeDetectedEvent(FileType.Bmp, _fileId),
                    TransactionAdaptionEventModel.NcfsCompletedEvent(NcfsOutcome.Blocked, _fileId),
                    TransactionAdaptionEventModel.NcfsStartedEvent(_fileId),
                    badEvent,
                    TransactionAdaptionEventModel.RebuildCompletedEvent(GwOutcome.Failed, _fileId),
                    TransactionAdaptionEventModel.RebuildEventStarting(_fileId),
                }
            });

            _input.Filter.FileIds = new List <Guid> {
                {
                    Guid.NewGuid()
                }
            };

            _output = await ClassInTest.GetTransactionsAsync(_input, CancellationToken.None);

            Assert.That(_output.Count, Is.EqualTo(0));
        }
コード例 #2
0
        public void OnetimeSetup()
        {
            CommonSetup();

            GlasswallVersionServiceMock.Setup(s => s.GetVersion())
            .Returns(Version);

            FileTypeDetectorMock.Setup(s => s.DetermineFileType(It.IsAny <byte[]>()))
            .Returns(_expectedType = new FileTypeDetectionResponse(FileType.Bmp));

            FileProtectorMock.Setup(s => s.GetProtectedFile(
                                        It.IsAny <ContentManagementFlags>(),
                                        It.IsAny <string>(),
                                        It.IsAny <byte[]>()))
            .Returns(new FileProtectResponse
            {
                Outcome       = EngineOutcome.Success,
                ProtectedFile = ExpectedDecoded
            });

            _result = ClassInTest.RebuildFromBase64(new Base64Request
            {
                Base64 = "dGVzdA=="
            });
        }
コード例 #3
0
        public void OnetimeSetup()
        {
            CommonSetup();

            _expectedInputUrl  = new Uri("https://www.myfileserver.com/myfile.png");
            _expectedOutputUrl = new Uri("https://www.s3bucket.com/buckets/rebuilt/myfile.png");

            GlasswallVersionServiceMock.Setup(s => s.GetVersion())
            .Returns(Version);

            FileTypeDetectorMock.Setup(s => s.DetermineFileType(It.IsAny <byte[]>()))
            .Returns(_expectedType = new FileTypeDetectionResponse(FileType.Bmp));

            HttpTest.ResponseQueue.Enqueue(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new ByteArrayContent(ExpectedDownloadFile)
            });

            HttpTest.ResponseQueue.Enqueue(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK
            });

            FileAnalyserMock.Setup(s => s.GetReport(
                                       It.IsAny <ContentManagementFlags>(),
                                       It.IsAny <string>(),
                                       It.IsAny <byte[]>()))
            .Returns("");

            _result = ClassInTest.AnalyseFromUrl(new UrlRequest
            {
                InputGetUrl = _expectedInputUrl
            });
        }
コード例 #4
0
        public void OnetimeSetup()
        {
            CommonSetup();

            GlasswallVersionServiceMock.Setup(s => s.GetVersion())
            .Returns(Version);

            FileTypeDetectorMock.Setup(s => s.DetermineFileType(It.IsAny <byte[]>()))
            .Returns(_expectedType = new FileTypeDetectionResponse(FileType.Bmp));

            FileProtectorMock.Setup(s => s.GetProtectedFile(
                                        It.IsAny <ContentManagementFlags>(),
                                        It.IsAny <string>(),
                                        It.IsAny <byte[]>()))
            .Returns(_expectedProtectResponse = new FileProtectResponse
            {
                Outcome       = EngineOutcome.Error,
                ProtectedFile = null,
                ErrorMessage  = "banana has been removed because monkey content is set to disallowed"
            });

            _result = ClassInTest.RebuildFromBase64(new Base64Request
            {
                Base64 = "dGVzdA=="
            });
        }
コード例 #5
0
 public void Exception_Is_Rethrown()
 {
     Assert.That(() => ClassInTest.DetermineFileTypeFromUrl(new UrlRequest
     {
         InputGetUrl = new Uri("https://www.input.com"),
     }), Throws.Exception.EqualTo(_dummyException));
 }
コード例 #6
0
        public async Task Setup()
        {
            SharedSetup();

            _expected = new MemoryStream(new byte[] { 1, 2, 3, 4, 5, 6, 7 });

            ShareClient.Setup(s => s.GetRootDirectoryClient())
            .Returns((_directory = new Mock <ShareDirectoryClient>()).Object);

            _directory.Setup(s => s.GetFileClient(It.IsAny <string>()))
            .Returns((_fileClient = new Mock <ShareFileClient>()).Object);

            _fileClient.Setup(s => s.DownloadAsync(
                                  It.IsAny <HttpRange>(),
                                  It.IsAny <bool>(),
                                  It.IsAny <ShareFileRequestConditions>(),
                                  It.IsAny <CancellationToken>()))
            .ReturnsAsync((_response = new Mock <Response <ShareFileDownloadInfo> >()).Object);

            _response.Setup(s => s.Value)
            .Returns(FilesModelFactory.StorageFileDownloadInfo(content: _expected, contentLength: _expected.Length));

            _fileClient.Setup(s => s.ExistsAsync(It.IsAny <CancellationToken>()))
            .ReturnsAsync((_existsResponse = new Mock <Response <bool> >()).Object);

            _existsResponse.Setup(s => s.Value)
            .Returns(true);

            _output = await ClassInTest.DownloadAsync(_input = "some-path", CancellationToken.None);
        }
コード例 #7
0
 public void Exception_Is_Rethrown()
 {
     Assert.That(() => ClassInTest.AnalyseFromBase64(new Base64Request
     {
         Base64 = "dGVzdA=="
     }), Throws.Exception.EqualTo(_dummyException));
 }
コード例 #8
0
        public async Task Setup()
        {
            base.SharedSetup();

            _input = new GetTransactionsRequestV1
            {
                Filter = new FileStoreFilterV1
                {
                    TimestampRangeStart = DateTimeOffset.MinValue,
                    TimestampRangeEnd   = DateTimeOffset.MaxValue
                }
            };

            Share1.Setup(s => s.ListAsync(It.IsAny <IPathFilter>(), It.IsAny <CancellationToken>()))
            .Returns(_paths1 = GetSomePaths(1));

            Share2.Setup(s => s.ListAsync(It.IsAny <IPathFilter>(), It.IsAny <CancellationToken>()))
            .Returns(GetNoPaths());

            var fileId = Guid.NewGuid();

            JsonSerialiser.Setup(s => s.Deserialize <TransactionAdapationEventMetadataFile>(It.IsAny <MemoryStream>(), It.IsAny <Encoding>()))
            .ReturnsAsync(_expectedMetadata = new TransactionAdapationEventMetadataFile
            {
                Events = new []
                {
                    TransactionAdaptionEventModel.NewDocumentEvent(fileId)
                }
            });

            _output = await ClassInTest.GetTransactionsAsync(_input, CancellationToken.None);
        }
コード例 #9
0
        public async Task BadRequest_Not_Set_When_Model_Errors_Do_Not_Occur()
        {
            var modelState    = new ModelStateDictionary();
            var actionContext = new ActionContext(
                Mock.Of <HttpContext>(),
                Mock.Of <RouteData>(),
                Mock.Of <ActionDescriptor>(),
                modelState
                );

            var actionExecutingContext = new ActionExecutingContext(
                actionContext,
                new List <IFilterMetadata>(),
                new Dictionary <string, object>(),
                Mock.Of <Controller>()
                )
            {
                Result = new OkResult() // It will return ok unless during code execution you change this when by condition
            };

            var context = new ActionExecutedContext(actionContext, new List <IFilterMetadata>(), Mock.Of <Controller>());

            await ClassInTest.OnActionExecutionAsync(actionExecutingContext, async() => await Task.FromResult(context));

            Assert.That(actionExecutingContext.Result, Is.Not.InstanceOf <BadRequestObjectResult>());
        }
コード例 #10
0
        public void OnetimeSetup()
        {
            CommonSetup();

            _expectedInputUrl  = new Uri("https://www.myfileserver.com/myfile.png");
            _expectedOutputUrl = new Uri("https://www.s3bucket.com/buckets/rebuilt/myfile.png");

            GlasswallVersionServiceMock.Setup(s => s.GetVersion())
            .Returns(Version);

            FileTypeDetectorMock.Setup(s => s.DetermineFileType(It.IsAny <byte[]>()))
            .Returns(new FileTypeDetectionResponse(FileType.Unknown));

            HttpTest.ResponseQueue.Enqueue(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new ByteArrayContent(ExpectedDownloadFile)
            });

            _result = ClassInTest.RebuildUrlToUrl(new UrlToUrlRequest
            {
                InputGetUrl  = _expectedInputUrl,
                OutputPutUrl = _expectedOutputUrl
            });
        }
コード例 #11
0
        public async Task BadRequest_Set_When_Model_Errors_Occur()
        {
            var modelState = new ModelStateDictionary();

            modelState.AddModelError("name", "invalid");

            var actionContext = new ActionContext(
                Mock.Of <HttpContext>(),
                Mock.Of <RouteData>(),
                Mock.Of <ActionDescriptor>(),
                modelState
                );

            var actionExecutingContext = new ActionExecutingContext(
                actionContext,
                new List <IFilterMetadata>(),
                new Dictionary <string, object>(),
                Mock.Of <Controller>()
                )
            {
                Result = new OkResult() // It will return ok unless during code execution you change this when by condition
            };

            var context = new ActionExecutedContext(actionContext, new List <IFilterMetadata>(), Mock.Of <Controller>());

            await ClassInTest.OnActionExecutionAsync(actionExecutingContext, async() => await Task.FromResult(context));

            Assert.That(actionExecutingContext.Result, Is.InstanceOf <BadRequestObjectResult>());
            Assert.That(((BadRequestObjectResult)actionExecutingContext.Result).Value, Is.InstanceOf <List <string> >());
            CollectionAssert.AreEqual((List <string>)((BadRequestObjectResult)actionExecutingContext.Result).Value, modelState.Values.SelectMany(s => s.Errors).Select(e => e.ErrorMessage).ToList());
        }
コード例 #12
0
        public async Task Deserialise_Stream_Is_Correct()
        {
            await using var ms = new MemoryStream(Encoding.UTF8.GetBytes("<xml><TestProp>Test</TestProp></xml>"));

            var obj = await ClassInTest.Deserialize <xml>(ms, Encoding.UTF8);

            Assert.That(obj.TestProp, Is.EqualTo("Test"));
        }
コード例 #13
0
        public void OnetimeSetup()
        {
            CommonSetup();

            ClassInTest.ModelState.AddModelError("SomeError", "SomeMessage");

            _result = ClassInTest.AnalyseFromBase64(null);
        }
コード例 #14
0
        public void OnetimeSetup()
        {
            CommonSetup();

            ClassInTest.ModelState.AddModelError("SomeError", "SomeMessage");

            _result = ClassInTest.RebuildFromFormFile(null, InvalidFormFileMock.Object);
        }
コード例 #15
0
 public void Exception_Is_Rethrown()
 {
     Assert.That(() => ClassInTest.RebuildUrlToUrl(new UrlToUrlRequest
     {
         InputGetUrl  = new Uri("https://www.input.com"),
         OutputPutUrl = new Uri("https://www.output.com")
     }), Throws.Exception.EqualTo(_dummyException));
 }
コード例 #16
0
        public void No_Engine_Actions_Are_Performed()
        {
            _result = ClassInTest.RebuildFromFormFile(null, InvalidFormFileMock.Object);

            GlasswallVersionServiceMock.VerifyNoOtherCalls();
            FileTypeDetectorMock.VerifyNoOtherCalls();
            FileProtectorMock.VerifyNoOtherCalls();
        }
コード例 #17
0
 public void Throws_With_Invalid_Path(string path)
 {
     Assert.That(() => ClassInTest.GetDetailAsync(path, CancellationToken.None),
                 Throws.ArgumentException.With.Property(nameof(ArgumentException.ParamName))
                 .EqualTo("fileDirectory")
                 .And
                 .With.Property(nameof(ArgumentException.Message))
                 .StartWith("Value must not be null or whitespace"));
 }
コード例 #18
0
        public async Task Serialise_Is_Correct()
        {
            var str = await ClassInTest.Serialize(new
            {
                TestProp = "Test"
            });

            Assert.That(str, Is.EqualTo("{\"TestProp\":\"Test\"}"));
        }
コード例 #19
0
        public async Task Deserialise_Stream_Is_Correct()
        {
            await using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("{\"TestProp\":\"Test\"}")))
            {
                var obj = await ClassInTest.Deserialize <Dictionary <string, string> >(ms, Encoding.UTF8);

                Assert.That(obj["TestProp"], Is.EqualTo("Test"));
            }
        }
        public void No_Engine_Actions_Are_Performed(string base64)
        {
            ClassInTest.DetermineFileTypeFromBase64(new Base64Request
            {
                Base64 = base64
            });

            GlasswallVersionServiceMock.VerifyNoOtherCalls();
            FileTypeDetectorMock.VerifyNoOtherCalls();
        }
コード例 #21
0
        public void Bad_Request_Is_Returned(string base64)
        {
            _result = ClassInTest.RebuildFromBase64(new Base64Request
            {
                Base64 = base64
            });

            Assert.That(_result, Is.Not.Null);
            Assert.That(_result, Is.TypeOf <BadRequestObjectResult>());
        }
コード例 #22
0
        public async Task OnetimeSetup()
        {
            base.OnetimeSetupShared();

            _expected = new GetTransactionsResponseV1();

            Service.Setup(s => s.GetTransactionsAsync(It.IsAny <GetTransactionsRequestV1>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(_expected);

            _result = await ClassInTest.GetTransactions(_input = new GetTransactionsRequestV1(), CancellationToken.None);
        }
コード例 #23
0
        public async Task OnetimeSetup()
        {
            base.OnetimeSetupShared();

            _expected = new GetDetailResponseV1();

            Service.Setup(s => s.GetDetailAsync(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(_expected);

            _result = await ClassInTest.GetDetail(_input = "banana", CancellationToken.None);
        }
コード例 #24
0
        public async Task No_Event_Selected_With_Wrong_FileType_Filter()
        {
            _input.Filter.FileTypes = new List <FileType> {
                {
                    FileType.Coff
                }
            };

            _output = await ClassInTest.GetTransactionsAsync(_input, CancellationToken.None);

            Assert.That(_output.Count, Is.EqualTo(0));
        }
コード例 #25
0
        public void OnetimeSetup()
        {
            CommonSetup();

            GlasswallVersionServiceMock.Setup(s => s.GetVersion())
            .Returns(Version);

            FileTypeDetectorMock.Setup(s => s.DetermineFileType(It.IsAny <byte[]>()))
            .Returns(new FileTypeDetectionResponse(FileType.Unknown));

            _result = ClassInTest.RebuildFromFormFile(null, ValidFormFileMock.Object);
        }
コード例 #26
0
        public async Task No_Event_Selected_With_Wrong_Policy_Filter()
        {
            _input.Filter.PolicyIds = new List <Guid> {
                {
                    Guid.Empty
                }
            };

            _output = await ClassInTest.GetTransactionsAsync(_input, CancellationToken.None);

            Assert.That(_output.Count, Is.EqualTo(0));
        }
        public void OnetimeSetup()
        {
            CommonSetup();

            _expectedInputUrl = new Uri("https://www.myfileserver.com/myfile.png");

            ClassInTest.ModelState.AddModelError("SomeError", "SomeMessage");
            _result = ClassInTest.DetermineFileTypeFromUrl(new UrlRequest
            {
                InputGetUrl = _expectedInputUrl
            });
        }
コード例 #28
0
        public void Bad_Request_Is_Returned()
        {
            _result = ClassInTest.RebuildFromFormFile(null, InvalidFormFileMock.Object);

            Assert.That(_result, Is.Not.Null);
            Assert.That(_result, Is.TypeOf <BadRequestObjectResult>());
            var result = _result as BadRequestObjectResult;

            Assert.That(result, Is.Not.Null);
            Assert.That(result.Value, Is.InstanceOf <string>());
            Assert.That(result.Value, Is.EqualTo("Input file could not be read."));
        }
コード例 #29
0
        public async Task No_Event_Selected_With_Wrong_Risk_Filter()
        {
            _input.Filter.Risks = new List <Risk> {
                {
                    Risk.Unknown
                }
            };

            _output = await ClassInTest.GetTransactionsAsync(_input, CancellationToken.None);

            Assert.That(_output.Count, Is.EqualTo(0));
        }
        public async Task Setup()
        {
            base.SharedSetup();

            Share1.Setup(s => s.ExistsAsync(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(true);

            Share1.Setup(s => s.DownloadAsync(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(null as MemoryStream);

            _output = await ClassInTest.GetDetailAsync(Input, CancellationToken.None);
        }