public void RequestedResourceIsWhitelisted_ReturnsTrue_IfRequestResourceIsWhitelisted()
        {
            using (var context = _apacheLogContextFactory.NewTestContext())
            {
                // Arrange
                var whitelistedResources = new WhitelistedResource[3]
                {
                    new WhitelistedResource()
                    {
                        BasePath = "media"
                    },
                    new WhitelistedResource()
                    {
                        BasePath = "index.php"
                    },
                    new WhitelistedResource()
                    {
                        BasePath = "script.cgi"
                    }
                };

                context.WhitelistedResources.AddRange(whitelistedResources);
                context.SaveChanges();

                var whitelist      = new Whitelist(context);
                var accessRequests = new List <AccessRequest>()
                {
                    new AccessRequest()
                    {
                        Resource = @"/media/rest/getPlaylists.view"
                    },
                    new AccessRequest()
                    {
                        Resource = @"/index.php"
                    },
                    new AccessRequest()
                    {
                        Resource = @"script.cgi"
                    }
                };

                foreach (var accessRequest in accessRequests)
                {
                    // Act
                    var result = whitelist.RequestedResourceIsWhitelisted(accessRequest);

                    // Assert
                    Assert.True(result);
                }
            }
        }
Example #2
0
        public void GetAllUnidentifiedResourceRequestsInLogFile_ShouldNotReturnAnything_FromLogFilesWithOnlyWhitelistedResources()
        {
            // Arrange
            var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData>
            {
                { @"c:\logs\website.com.access.2018.04.13.log", new MockFileData(
                      string.Join(Environment.NewLine, new List <string>()
                    {
                        @"117.34.118.109 - - [13/Apr/2018:03:55:08 +0100] ""GET /okBasePath/index.php HTTP/1.1"" 301 244",
                        @"117.34.118.109 - - [13/Apr/2018:03:55:09 +0100] ""GET /AnotherOKBasePath/index.php HTTP/1.1"" 301 245",
                        @"117.34.118.109 - - [13/Apr/2018:03:55:10 +0100] ""GET /okBasePath/subPath/index.php HTTP/1.1"" 301 244",
                    })) }
            });

            var accessLogParser = new Parser(fileSystem, AccessLogParserConfig.GetDefault());

            using (var context = _apacheLogContextFactory.NewTestContext())
            {
                context.WhitelistedResources.AddRange(
                    new WhitelistedResource[2]
                {
                    new WhitelistedResource()
                    {
                        BasePath = "okBasePath"
                    },
                    new WhitelistedResource()
                    {
                        BasePath = "AnotherOKBasePath"
                    }
                });
                context.SaveChanges();

                var whitelist = new Whitelist(context);
                var blacklist = new Blacklist(context);

                var identifier = new Analyser(accessLogParser, whitelist, blacklist, fileSystem);

                // Act
                var distinctUnidentifiedResources = identifier.GetAllUnidentifiedResourceRequestsInLogFile(@"c:\logs\website.com.access.2018.04.13.log");

                // Assert
                Assert.Empty(distinctUnidentifiedResources);
            }
        }
        public void RequestedResourceIsBlacklisted_ReturnsFalse_IfRequesedResourceIsNotBlacklisted()
        {
            using (var context = _apacheLogContextFactory.NewTestContext())
            {
                // Arrange
                context.Add(new BlacklistedResource()
                {
                    FullPath = @"/admin/mysql2/index.php"
                });
                context.SaveChanges();
                var blacklist     = new Blacklist(context);
                var accessRequest = new AccessRequest()
                {
                    Resource = @"/admin/"
                };

                // Act
                var result = blacklist.RequestedResourceIsBlacklisted(accessRequest);

                // Assert
                Assert.False(result);
            }
        }