public void TestSwitchBrowserWindow()
        {
            Driver.Navigate().GoToUrl(IndexPage.Url);
            var linkChecker = new LinkChecker(Driver);

            linkChecker.HammerLinks();
        }
Exemple #2
0
        public void WithHttpAtStart_LinkParses()
        {
            var links = LinkChecker.GetLinks("", "<a href=\"http://google.com\" />");

            Assert.Equal(1, links.Count());
            Assert.Equal("http://google.com", links.First());
        }
        public void WithHttpAtStartOfLink_LinkParses()
        {
            var links = LinkChecker.GetLinks("<a href=\"http://google.com\" />");

            Assert.Equal(links.Count(), 1);
            Assert.Equal(links.First(), "http://google.com");
        }
Exemple #4
0
        public void WithoutHttpAtStartOfLink_NoLinks()
        {
            var links = LinkChecker.GetLinks("", "<a href=\"google.com\" />");

            Assert.Empty(links);
            //Assert.Equal("google.com", links.First());
        }
Exemple #5
0
        public void WithoutHttpAtStartOfLink_NoLinks()
        {
            var links = LinkChecker.GetLinks("<a href=\"google.com\" />");

            Assert.Equal(links.Count(), 0);
            //Assert.Equal(links.First(), "google.com");
        }
Exemple #6
0
        private async Task CheckLink(BindableLinkDescription arg, CancellationToken cancelToken)
        {
            try
            {
                var res = await LinkChecker.CheckLink(arg.OriginalLink, cancelToken).ConfigureAwait(false);

                // access the binding on the UI thread
                await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    arg.HttpStatus        = (int)res.HttpStatusCode;
                    arg.LinkAfterRedirect = res.NewLink;
                    arg.Result            = res.Summary;
                    if (res.Summary == LinkCheckSummary.SimpleChange)
                    {
                        arg.SelectForUpdate = true;
                    }
                    else if (res.Summary == LinkCheckSummary.Error ||
                             res.Summary == LinkCheckSummary.NotFound)
                    {
                        arg.SelectForInvalidMark = true;
                    }
                });
            }
            catch (Exception ex)
            {
                Logger.Log(LogLevel.Error, nameof(CheckLink), "Error checking link: " + arg?.OriginalLink, ex);
            }
        }
Exemple #7
0
 public void LinkChecker_Visit_InValidMemberAccessThrows()
 {
     Assert.Throws <Exception>(() =>
     {
         AbstractSyntaxTree ast  = TestAstBuilder.BuildAst(TestCode3_3, TestCode3_2);
         LinkChecker linkChecker = new LinkChecker(ast);
         linkChecker.Visit(ast.Root.GameObjects["SampleScreen1"]);
     });
 }
Exemple #8
0
        public void LinkChecker_Visit_ThrowOnInvalidExitLink()
        {
            AbstractSyntaxTree ast         = TestAstBuilder.BuildAst(TestCode1_1, TestCode1_2);
            LinkChecker        linkChecker = new LinkChecker(ast);

            void TestDelegate() => linkChecker.Visit(ast.Root.GameObjects["SampleScreen1"]);

            Assert.Throws <Exception>(TestDelegate);
        }
        public void ValidLinksTest_RequireInternetConnection()
        {
            var linkStatus = new LinkChecker().GetLinkStatus(validLinksHtml);

            var expected = new[] {
                new LinkStatus("https://www.bing.com", isValid: true),
                new LinkStatus("http://www.microsoft.com", isValid: true),
            };

            Assert.Equal(expected.OrderBy(a => a.Url), linkStatus.OrderBy(a => a.Url));
        }
        private void Checker_LinkToProcess(object?sender, LinkModificationEventArgs e)
        {
            switch (e.Modification)
            {
            case LinkModification.MarkInvalid:
                this.SourceValue = LinkChecker.MarkInvalid(this.SourceValue, e.LinkHref);
                break;

            case LinkModification.UpdateSchema:
                this.SourceValue = LinkChecker.UpdateHref(this.SourceValue, e.LinkHref, e.NewHref);
                break;
            }
        }
Exemple #11
0
        static void Main(string[] args)
        {
            var site   = "https://github.com/g0t4/pluralsight-dotnet-core-xplat-apps";
            var client = new HttpClient();
            var body   = client.GetStringAsync(site);

            Console.WriteLine(body.Result);

            Console.WriteLine();
            Console.WriteLine("Links");
            var links = LinkChecker.GetLinks(body.Result);

            links.ToList().ForEach(Console.WriteLine);
        }
        public void CheckLinksWithResultsAsync_TwoLinksInPageForUri_OneOkTheOtherBad(string elementId)
        {
            // arrange
            var mainPageUri = new Uri("https://dummy.com/");

            string okLink       = "https://ok.com/";
            string notFoundLink = "https://notfound.com/";

            var mockHttpMessageHandler = new Mock <HttpMessageHandler>();

            mockHttpMessageHandler.Protected()
            .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.Is <HttpRequestMessage>(hrh => hrh.RequestUri.OriginalString == mainPageUri.ToString()), ItExpr.IsAny <CancellationToken>())
            .ReturnsAsync(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = GetHtmlWithTwoLinksInside(elementId, okLink, notFoundLink)
            });


            mockHttpMessageHandler.Protected()
            .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.Is <HttpRequestMessage>(hrh => hrh.RequestUri.OriginalString == okLink), ItExpr.IsAny <CancellationToken>())
            .ReturnsAsync(new HttpResponseMessage
            {
                StatusCode     = HttpStatusCode.OK,
                Content        = new StringContent("some text.."),
                RequestMessage = new HttpRequestMessage(HttpMethod.Get, okLink)
            });


            mockHttpMessageHandler.Protected()
            .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.Is <HttpRequestMessage>(hrh => hrh.RequestUri.OriginalString == notFoundLink), ItExpr.IsAny <CancellationToken>())
            .ReturnsAsync(new HttpResponseMessage
            {
                StatusCode     = HttpStatusCode.NotFound,
                RequestMessage = new HttpRequestMessage(HttpMethod.Get, notFoundLink)
            });

            var httpClient = new HttpClient(mockHttpMessageHandler.Object);

            var linkChecker = new LinkChecker(httpClient, new LinkGetter(httpClient, elementId));

            // act
            Dictionary <string, HttpResponseMessage> results = linkChecker.CheckLinks(mainPageUri);

            // assert
            CollectionAssert.IsNotEmpty(results);
            Assert.That(results.Count, Is.EqualTo(2));
            Assert.That(results[okLink].StatusCode, Is.EqualTo(HttpStatusCode.OK));
            Assert.That(results[notFoundLink].StatusCode, Is.EqualTo(HttpStatusCode.NotFound));
        }
        public void InvalidLinksTest_RequireInternetConnection()
        {
            var linkStatus = new LinkChecker().GetLinkStatus(InvalidLinksHtml);

            var expected = new[] {
                new LinkStatus("https://www.Idontexistasdfsdfsdf.com", isValid: false),
                new LinkStatus("http://www.Idontexistasdfsdfsdf123.com", isValid: false),
                new LinkStatus("ThisIsInvalidUrl", isValid: false),
                new LinkStatus("This Is Invalid Url", isValid: false),
                new LinkStatus("abcde://ThisIsInvalidUrl.com", isValid: false)
            };

            Assert.Equal(expected.OrderBy(a => a.Url), linkStatus.OrderBy(a => a.Url));
        }
Exemple #14
0
        private async Task CheckLinksAsync()
        {
            var links = LinkChecker.FindLinks(this.SourceValue);

            if (!links.Any())
            {
                await this.SetStatusAsync("No links found to check.").ConfigureAwait(false);

                return;
            }

            this.Frame.Navigate(typeof(LinkCheckerWindow));

            await Task.CompletedTask;
        }
Exemple #15
0
        public Post ConvertPostFromJson(JToken jsonPost)
        {
            Post newPost = new Post
            {
                ID         = jsonPost["id"].ToString(),
                Title      = jsonPost["title"].ToString(),
                Content    = jsonPost["selftext"].ToString(),
                Permalink  = jsonPost["permalink"].ToString(),
                Link       = jsonPost["url"].ToString(),
                AuthorName = jsonPost["author"].ToString(),
                Likes      = Convert.ToInt32(jsonPost["ups"]),
                Thumbnail  = jsonPost["thumbnail"].ToString(),
                Subreddit  = jsonPost["subreddit"].ToString(),
                NSFW       = Convert.ToBoolean(jsonPost["over_18"])
            };

            newPost.LinkType = LinkChecker.GetLinkType(newPost.Link);
            if (newPost.LinkType == "Youtube")
            {
                newPost.Link = LinkChecker.ConvertYoutubeLink(newPost.Link);
            }

            if (newPost.LinkType == "Streamable")
            {
                newPost.Link     = LinkChecker.ConvertStreamableLink(newPost.Link);
                newPost.LinkType = "Youtube";
            }

            if (newPost.LinkType == "Twitch")
            {
                newPost.Link = LinkChecker.ConvertTwitchLink(newPost.Link);
            }

            // Convert gfycat and gifv to use reddit video
            if (newPost.LinkType == "Gfycat" || newPost.LinkType == "Gifv")
            {
                newPost.Link     = jsonPost["preview"]["reddit_video_preview"]["fallback_url"].ToString();
                newPost.LinkType = "Video";
            }

            // For converting reddit videos
            if (Convert.ToBoolean(jsonPost["is_video"]) == true)
            {
                newPost.Link     = jsonPost["secure_media"]["reddit_video"]["fallback_url"].ToString();
                newPost.LinkType = "Video";
            }
            return(newPost);
        }
Exemple #16
0
        public LinkCheckerWindow()
        {
            this.InitializeComponent();
            this.DataContext = this;

            var appView = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();

            appView.Title = "Link Checker";

            var links = LinkChecker.FindLinks(CleanerSettings.Instance.HtmlSource);

            this.Links.Clear();
            foreach (var lnk in links)
            {
                this.Links.Add(new BindableLinkDescription(lnk));
            }
        }
        private static async Task CheckLink(BindableLinkDescription arg, CancellationToken cancelToken)
        {
            var res = await LinkChecker.CheckLink(arg.OriginalLink, cancelToken).ConfigureAwait(false);

            arg.HttpStatus        = (int)res.HttpStatusCode;
            arg.LinkAfterRedirect = res.NewLink;
            arg.Result            = res.Summary;
            if (res.Summary == LinkCheckSummary.SimpleChange)
            {
                arg.SelectForUpdate = true;
            }
            else if (res.Summary == LinkCheckSummary.Error ||
                     res.Summary == LinkCheckSummary.NotFound)
            {
                arg.SelectForInvalidMark = true;
            }
        }
        public void CheckAllInputLinksWhenNoFilterIsSpecified()
        {
            // arrange
            var input = new LinkCheckerInput(_links);

            (var httpClient, _) = CreateMockHttpClient((msg, token) => new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK
            });
            var linkChecker = new LinkChecker(httpClient);

            // act
            var result = linkChecker.Check(input);

            PrintOut(result);

            // assert
            result.LinkStates.Keys.Should().BeEquivalentTo(_links);
        }
        public void SkipNonHttpLinks()
        {
            // arrange
            var malformedUrl = new Link("xtp://something.com/");
            var input        = new LinkCheckerInput(new [] { malformedUrl });

            (var httpClient, var httpHandlerMock) = CreateMockHttpClient((msg, token) => throw new NotImplementedException());
            var linkChecker = new LinkChecker(httpClient);

            // act
            var result = linkChecker.Check(input);

            PrintOut(result);

            // assert
            result.LinkStates.Should().BeEquivalentTo(new Dictionary <Link, LinkStatus> {
                [malformedUrl] = LinkStatus.SKIPPED
            });
            httpHandlerMock.Protected().Verify("SendAsync", Times.Never(), ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>());
        }
Exemple #20
0
        private void UpdateSource(object sender, RoutedEventArgs e)
        {
            int count = 0;

            var html = CleanerSettings.Instance.HtmlSource;

            // process any checked link, but "invalid" beats "update".
            foreach (var lnk in this.Links.Where(l => l.SelectForUpdate || l.SelectForInvalidMark))
            {
                if (lnk.SelectForInvalidMark)
                {
                    MarkError(lnk);
                }
                else if (lnk.SelectForUpdate && !string.IsNullOrEmpty(lnk.LinkAfterRedirect))
                {
                    UpdateUrl(lnk);
                }

                lnk.SelectForInvalidMark = false;
                lnk.SelectForUpdate      = false;
            }

            this.MessageLabel.Text = $"{count} link(s) updated.";
            CleanerSettings.Instance.HtmlSource = html;

            void MarkError(BindableLinkDescription link)
            {
                html        = LinkChecker.MarkInvalid(html, link.OriginalLink);
                link.Result = LinkCheckSummary.Updated;
                count++;
            }

            void UpdateUrl(BindableLinkDescription link)
            {
                html        = LinkChecker.UpdateHref(html, link.OriginalLink, link.LinkAfterRedirect);
                link.Result = LinkCheckSummary.Updated;
                count++;
            }
        }
        private async Task CheckLinks()
        {
            this.checker?.Links.Clear();
            var links = LinkChecker.FindLinks(this.SourceValue);

            if (!links.Any())
            {
                MessageBox.Show("No links found.");
                return;
            }

            OpenLinkCheckerWindow();
            this.checker !.Links.Clear();

            foreach (var lnk in links)
            {
                checker.Links.Add(new BindableLinkDescription(lnk));
            }

            checker.Focus();

            await checker.CheckAllLinks().ConfigureAwait(false);
        }
        public void ReportInvalidLinks(HttpResponseMessage responseMessage)
        {
            // arrange
            var link  = new Link("http://www.google.com/");
            var input = new LinkCheckerInput(new [] { link });

            (var httpClient, var httpHandlerMock) = CreateMockHttpClient((msg, token) => responseMessage);
            var linkChecker = new LinkChecker(httpClient);

            // act
            var result = linkChecker.Check(input);

            PrintOut(result);

            // assert
            result.LinkStates.Should().BeEquivalentTo(new Dictionary <Link, LinkStatus> {
                [link] = LinkStatus.INVALID
            });
            httpHandlerMock.Protected().Verify(
                "SendAsync",
                Times.Exactly(1),
                ItExpr.Is <HttpRequestMessage>(rm => rm.Method == HttpMethod.Get && rm.RequestUri == new Uri(link.Url)),
                ItExpr.IsAny <CancellationToken>());
        }
Exemple #23
0
        public void LinkWithBeginnerTest()
        {
            var links = LinkChecker.GetLinks("<a href=\"https:\\\\google.com\"><\\a>");

            Assert.AreEqual(links.ToList().Count(), 1);
        }
        public async Task ExtractedALink()
        {
            var links = await LinkChecker.GetLinks("https://google.com");

            Assert.True(links.Count() > 0);
        }
Exemple #25
0
        public void WithoutHttpAtStartOfLink_NoLinks()
        {
            var links = LinkChecker.GetLinks("<a href=\"google.com\">");

            Assert.Equal(0, links.Count());
        }
Exemple #26
0
        public void WithoutHttpAtStartOfLink_NoLinks()
        {
            var links = new LinkChecker(null).Getlinks("", "<a href=\"google.com\" />");

            Assert.Equal(links.Count(), 0);
        }
Exemple #27
0
        public void WithoutHTTPAtTheStartOfTheLink_NoLinks()
        {
            var links = LinkChecker.GetLinks("<a href=\"google.com\" />");

            Assert.Equal(links.Count(), 0);
        }
        public void NoLinksTest()
        {
            var linkStatus = new LinkChecker().GetLinkStatus(string.Empty);

            Assert.Equal(Enumerable.Empty <LinkStatus>(), linkStatus);
        }