public void GetPageLinks_PassLayoutWithLinks_DoNotContainAnchor()
        {
            var             anchor      = "#pageanchor";
            HtmlLinkManager linkManager = new HtmlLinkManager();

            var actualLinks = linkManager.GetPageLinks(pageWithLinks).ToList();

            Assert.IsTrue(!actualLinks.Contains(anchor));
        }
        public void GetPageResourceLink_PassLayoutWithoutLink_ReturnEmptyCollection()
        {
            var             expected    = new List <string>();
            HtmlLinkManager linkManager = new HtmlLinkManager();

            var actual = linkManager.GetPageResourceLink(pageWithoutLinks).ToList();

            CollectionAssert.AreEqual(expected, actual);
        }
        public void IsLinkAnchor_NoAnchors_AllFalse()
        {
            var links = new List <string>()
            {
                "https://linkmanagertests.com/buttons.css",
                "https://linkmanagertests.com/home",
                "https://linkmanagertests.com/img/hello/hello.png",
                "https://linkmanagertests.com/scripts/script.js"
            };

            bool[]          expected    = { false, false, false, false };
            HtmlLinkManager linkManager = new HtmlLinkManager();

            var actual = links.Select(link => linkManager.IsLinkAnchor(link)).ToList();

            CollectionAssert.AreEqual(expected, actual);
        }
        public void GetPageResourceLink_PassLayoutWithLinks_ReturnResourceLinkCollection()
        {
            var expectedLinks = new List <string>()
            {
                "https://linkmanagertests.com/index.css",
                "https://linkmanagertests.com/buttons.css",
                "https://linkmanagertests.com/img/hello/hello.png",
                "https://linkmanagertests.com/img/hello/hello.jpg",
                "https://linkmanagertests.com/img/hello/hello.ico",
                "https://linkmanagertests.com/scripts/script.js"
            };
            HtmlLinkManager linkManager = new HtmlLinkManager();

            var actual = linkManager.GetPageResourceLink(pageWithLinks).ToList();

            CollectionAssert.AreEqual(expectedLinks, actual);
        }
        public void GetPageResourceLink_PassLayoutWithLinks_PngAndCSSLinksRestricted_ReturnResourceLinkCollectionWithoutRestricted()
        {
            var expectedLinks = new List <string>()
            {
                "https://linkmanagertests.com/img/hello/hello.jpg",
                "https://linkmanagertests.com/img/hello/hello.ico",
                "https://linkmanagertests.com/scripts/script.js"
            };
            IEnumerable <string> forbiddenFormats = new List <string>()
            {
                ".png", ".css"
            };
            HtmlLinkManager linkManager = new HtmlLinkManager(forbiddenFormats);

            var actual = linkManager.GetPageResourceLink(pageWithLinks).ToList();

            CollectionAssert.AreEqual(expectedLinks, actual);
        }
        public void IsLinkFormatForbidden_NoForbiddenFormats_ReturnAll()
        {
            var links = new List <string>()
            {
                "https://linkmanagertests.com/buttons.css",
                "https://linkmanagertests.com/home",
                "https://linkmanagertests.com/img/hello/hello.png",
                "https://linkmanagertests.com/img/hello/hello.jpg",
                "https://linkmanagertests.com/img/hello/hello.ico",
                "https://linkmanagertests.com/scripts/script.js"
            };

            bool[]          expected    = { false, false, false, false, false, false };
            HtmlLinkManager linkManager = new HtmlLinkManager();

            var actual = links.Select(link => linkManager.IsLinkFormatForbidden(link)).ToList();

            CollectionAssert.AreEqual(expected, actual);
        }
        public void GetPageLinks_PassLayoutWithLinks_PngAndCSSLinksRestricted_ReturnLinkCollectionWithoutRestricted()
        {
            var expectedLinks = new List <string>()
            {
                "https://linkmanagertests.com/home",
                "https://linkmanagertests.com/img/hello/hello.jpg",
                "https://linkmanagertests.com/img/hello/hello.ico",
                "https://linkmanagertests.com/scripts/script.js"
            };
            var restrictedFormats = new List <string>()
            {
                ".png", ".css"
            };
            HtmlLinkManager linkManager = new HtmlLinkManager(restrictedFormats);

            var actualLinks = linkManager.GetPageLinks(pageWithLinks).ToList();

            CollectionAssert.AreEqual(expectedLinks, actualLinks);
        }
Пример #8
0
        static void Main(string[] args)
        {
            const string defaultPath = @"D:\CDP\.net_tasks\Week_10\Downloads\";

            Uri[] resources =
            {
                new Uri("https://www.epam.com/"),
                new Uri("https://www.epam.com/what-we-do/"),
                new Uri("https://habr.com/company/goto/blog/345978/"),
            };

            Console.ForegroundColor = ConsoleColor.DarkYellow;

            HtmlLinkManager       linkManager      = new HtmlLinkManager(domainSwitchParameter: DomainSwitchParameter.WithoutRestrictions);
            FileSystemWebsiteSave resourceRecorder = new FileSystemWebsiteSave(defaultPath + "test_1\\");
            WebsiteDownloader     downloader       = new WebsiteDownloader(linkManager, resourceRecorder);

            downloader = AddHandlers(downloader);

            downloader.DownloadWebResourceAsync(resources[0], 0).Wait();

            Console.ForegroundColor = ConsoleColor.DarkCyan;

            linkManager = new HtmlLinkManager(domainSwitchParameter: DomainSwitchParameter.BelowSourceUrlPath);

            resourceRecorder.DestinationPath = defaultPath + "test_2\\";
            downloader = new WebsiteDownloader(linkManager, resourceRecorder);
            downloader = AddHandlers(downloader);

            downloader.DownloadWebResourceAsync(resources[1], 1).Wait();

            Console.ForegroundColor = ConsoleColor.DarkGreen;

            string[] excludedFormats = { ".jpg" };
            resourceRecorder.DestinationPath = defaultPath + "test_3\\";
            linkManager = new HtmlLinkManager(excludedFormats, DomainSwitchParameter.CurrentDomain);
            downloader  = new WebsiteDownloader(linkManager, resourceRecorder);
            downloader  = AddHandlers(downloader);

            downloader.DownloadWebResourceAsync(resources[2], 0).Wait();

            Console.ReadLine();
        }
        public void IsLinkDomainForbidden_CurrentDomainParam_ReturnFilteredLinks()
        {
            var links = new List <Uri>()
            {
                new Uri("https://linkmanagertests.com/buttons.css"),
                new Uri("https://linkmanagertests.com/home"),
                new Uri("https://linkmanagertests.com/img/hello/hello.png"),
                new Uri("https://habr.com"),
                new Uri("https://epam.com"),
                new Uri("https://linkmanagertests.com/scripts/script.js")
            };
            var currentDomain = new Uri("https://linkmanagertests.com");

            bool[] expected = { false, false, false, true, true, false };
            DomainSwitchParameter domainSwitchParameter = DomainSwitchParameter.CurrentDomain;
            HtmlLinkManager       linkManager           = new HtmlLinkManager(domainSwitchParameter: domainSwitchParameter);

            var actual = links.Select(link => linkManager.IsLinkDomainForbidden(currentDomain, link)).ToList();

            CollectionAssert.AreEqual(expected, actual);
        }
        public void IsLinkDomainForbidden_BelowSourceUrlPath_ReturnFilteredLinks()
        {
            var links = new List <Uri>()
            {
                new Uri("https://linkmanagertests.com/users/index.html"),
                new Uri("https://linkmanagertests.com/home"),
                new Uri("https://linkmanagertests.com/"),//should it pass?
                new Uri("https://habr.com"),
                new Uri("https://epam.com"),
                new Uri("https://linkmanagertests.com/scripts/script.js")
            };
            var baseUrl = new Uri("https://linkmanagertests.com/users");

            bool[] expected = { false, true, true, true, true, true };

            DomainSwitchParameter domainSwitchParameter = DomainSwitchParameter.BelowSourceUrlPath;
            HtmlLinkManager       linkManager           = new HtmlLinkManager(domainSwitchParameter: domainSwitchParameter);

            var result = links.Select(link => linkManager.IsLinkDomainForbidden(baseUrl, link)).ToList();

            CollectionAssert.AreEqual(expected, result);
        }
        public void IsLinkFormatForbidden_HasForbiddenFormats_ReturnFilteredSequence()
        {
            var links = new List <string>()
            {
                "https://linkmanagertests.com/index.css",
                "https://linkmanagertests.com/buttons.css",
                "https://linkmanagertests.com/home",
                "https://linkmanagertests.com/img/hello/hello.png",
                "https://linkmanagertests.com/img/hello/hello.jpg",
                "https://linkmanagertests.com/img/hello/hello.ico",
                "https://linkmanagertests.com/scripts/script.js"
            };

            bool[] expected = { false, false, false, true, false, true, true };
            IEnumerable <string> forbiddenFormats = new List <string>()
            {
                ".png", ".ico", ".js"
            };
            HtmlLinkManager linkManager = new HtmlLinkManager(forbiddenFormats);

            var actual = links.Select(link => linkManager.IsLinkFormatForbidden(link)).ToList();

            CollectionAssert.AreEqual(expected, actual);
        }
        public void GetPageLinks_PassNull_ArgumentNullExseption()
        {
            HtmlLinkManager linkManager = new HtmlLinkManager();

            Assert.ThrowsException <ArgumentNullException>(() => linkManager.GetPageLinks(null));
        }