Beispiel #1
0
        public void PingReturnsSuccessIfTrackbackFound()
        {
            FakePostService postService = new FakePostService();

            postService.AddedPosts.Add(new Oxite.Models.Post()
            {
                Slug = "test", Trackbacks = new List <Trackback>(new[] { new Trackback()
                                                                         {
                                                                             Url = "http://test.com/foo"
                                                                         } })
            });

            RouteCollection routes = new RouteCollection();

            routes.Add("Post", new Route("{slug}/{areaName}", null));

            AbsolutePathHelper helper = new AbsolutePathHelper(new Site()
            {
                Host = new Uri("http://foo.com")
            }, routes);

            PingbackService service = new PingbackService(postService, helper);

            string result = service.Ping("http://test.com/foo", "http://foo.com/test/area");

            Assert.Null(postService.AddedTrackback);
        }
Beispiel #2
0
        public async Task ProcessReceivedPayload_TargetNotFound()
        {
            var tcsPr = new TaskCompletionSource <PingRequest>();

            tcsPr.SetResult(new PingRequest
            {
                SourceHasLink = true,
                ContainsHtml  = false
            });

            var tcsPt = new TaskCompletionSource <(Guid Id, string Title)>();

            tcsPt.SetResult((Guid.Empty, string.Empty));

            _pingSourceInspectorMock
            .Setup(p => p.ExamineSourceAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>())).Returns(tcsPr.Task);
            _pingTargetFinderMock.Setup(p => p.GetPostIdTitle(It.IsAny <string>(), It.IsAny <IDbConnection>())).Returns(tcsPt.Task);

            var pingbackService = new PingbackService(
                _loggerMock.Object,
                _dbConnectionMock.Object,
                _pingSourceInspectorMock.Object,
                _pingTargetFinderMock.Object);

            var result = await pingbackService.ReceivePingAsync(_fakePingRequest, "10.0.0.1", null);

            Assert.AreEqual(result, PingbackResponse.Error32TargetUriNotExist);
        }
Beispiel #3
0
        public void PingCreatesNewTrackbackForNotFoundTrackback()
        {
            FakePostService postService = new FakePostService();

            postService.AddedPosts.Add(new Oxite.Model.Post()
            {
                Slug = "test", Trackbacks = new List <Trackback>()
            });

            RouteCollection routes = new RouteCollection();

            routes.Add("Post", new Route("{slug}/{areaName}", null));

            AbsolutePathHelper helper = new AbsolutePathHelper(new Site()
            {
                Host = new Uri("http://foo.com")
            }, routes);

            PingbackService service = new PingbackService(postService, helper);

            string result = service.Ping("http://test.com/foo", "http://foo.com/test/area");

            Assert.NotNull(result);
            Assert.NotNull(postService.AddedTrackback);
            Assert.Equal("http://test.com/foo", postService.AddedTrackback.Url);
        }
Beispiel #4
0
 public PingbackController(
     ILogger <PingbackController> logger,
     IOptions <AppSettings> settings,
     PingbackService pingbackService)
     : base(logger, settings)
 {
     _pingbackService = pingbackService;
 }
Beispiel #5
0
 public PingbackController(
     ILogger <PingbackController> logger,
     IOptions <AppSettings> settings,
     IBlogConfig blogConfig,
     PingbackService pingbackService)
     : base(logger, settings)
 {
     _blogConfig      = blogConfig;
     _pingbackService = pingbackService;
 }
Beispiel #6
0
        public async Task ProcessReceivedPayload_NoMethod()
        {
            var pingbackService = new PingbackService(
                _loggerMock.Object,
                _dbConnectionMock.Object,
                _pingSourceInspectorMock.Object,
                _pingTargetFinderMock.Object);

            var result = await pingbackService.ReceivePingAsync("<hello></hello>", "10.0.0.1", null);

            Assert.AreEqual(result, PingbackResponse.InvalidPingRequest);
        }
Beispiel #7
0
        public async Task <PingbackResponse> ProcessReceivedPayload_EmptyRequest(string requestBody)
        {
            var pingbackService = new PingbackService(
                _loggerMock.Object,
                _dbConnectionMock.Object,
                _pingSourceInspectorMock.Object,
                _pingTargetFinderMock.Object);

            var result = await pingbackService.ReceivePingAsync(requestBody, "10.0.0.1", null);

            return(result);
        }
Beispiel #8
0
        public void PingFaultsForNotFoundPost()
        {
            FakePostService postService = new FakePostService();
            RouteCollection routes      = new RouteCollection();

            routes.Add("Post", new Route("{slug}/{areaName}", null));

            AbsolutePathHelper helper = new AbsolutePathHelper(new Site()
            {
                Host = new Uri("http://foo.com")
            }, routes);

            PingbackService service = new PingbackService(postService, helper);

            Assert.Throws <ArgumentException>(() => service.Ping("http://test.com/foo", "http://foo.com/test/area"));
        }
Beispiel #9
0
        public bool TestDeleteReceivedPingback(int deleteReturn)
        {
            _pingbackRepositoryMock.Setup(p => p.Delete(It.IsAny <Guid>())).Returns(deleteReturn);
            var pingbackReceiverMock = new Mock <IPingbackReceiver>();

            var svc = new PingbackService(
                _loggerMock.Object,
                pingbackReceiverMock.Object,
                _pingbackRepositoryMock.Object,
                _postRepositoryMock.Object,
                _notificationMock.Object);

            var response = svc.DeleteReceivedPingback(Guid.NewGuid());

            return(response.IsSuccess);
        }
Beispiel #10
0
        public async Task ProcessReceivedPayload_InvalidRequest()
        {
            var tcs = new TaskCompletionSource <PingRequest>();

            tcs.SetResult(null);

            _pingSourceInspectorMock
            .Setup(p => p.ExamineSourceAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>())).Returns(tcs.Task);

            var pingbackService = new PingbackService(
                _loggerMock.Object,
                _dbConnectionMock.Object,
                _pingSourceInspectorMock.Object,
                _pingTargetFinderMock.Object);

            var result = await pingbackService.ReceivePingAsync(_fakePingRequest, "10.0.0.1", null);

            Assert.AreEqual(result, PingbackResponse.InvalidPingRequest);
        }
Beispiel #11
0
        public async Task <PingbackServiceResponse> TestProcessReceivedPingbackInvalidRequest(PingbackValidationResult result)
        {
            var tcs = new TaskCompletionSource <PingbackValidationResult>();

            tcs.SetResult(result);

            var pingbackReceiverMock = new Mock <IPingbackReceiver>();

            pingbackReceiverMock.Setup(p => p.ValidatePingRequest(It.IsAny <HttpContext>())).Returns(tcs.Task);

            //var postMock = new Mock<PostService>(MockBehavior.Loose);
            var httpContextMock = new Mock <HttpContext>();

            var svc = new PingbackService(
                _loggerMock.Object,
                pingbackReceiverMock.Object,
                _pingbackRepositoryMock.Object,
                _postRepositoryMock.Object,
                _notificationMock.Object);

            return(await svc.ProcessReceivedPingback(httpContextMock.Object));
        }
Beispiel #12
0
        public async Task TestProcessReceivedPayloadAsyncError17()
        {
            var tcs = new TaskCompletionSource <PingRequest>();

            tcs.SetResult(new PingRequest
            {
                SourceHasLink = false
            });

            _pingSourceInspectorMock
            .Setup(p => p.ExamineSourceAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>())).Returns(tcs.Task);

            var pingbackService = new PingbackService(
                _loggerMock.Object,
                _configurationMock.Object,
                _pingSourceInspectorMock.Object,
                _pingTargetFinderMock.Object);

            var result = await pingbackService.ReceivePingAsync(_fakePingRequest, "10.0.0.1", null);

            Assert.AreEqual(result, PingbackResponse.Error17SourceNotContainTargetUri);
        }
Beispiel #13
0
        public async Task ProcessReceivedPayload_Spam()
        {
            var tcs = new TaskCompletionSource <PingRequest>();

            tcs.SetResult(new PingRequest
            {
                SourceHasLink = true,
                ContainsHtml  = true
            });

            _pingSourceInspectorMock
            .Setup(p => p.ExamineSourceAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>())).Returns(tcs.Task);

            var pingbackService = new PingbackService(
                _loggerMock.Object,
                _dbConnectionMock.Object,
                _pingSourceInspectorMock.Object,
                _pingTargetFinderMock.Object);

            var result = await pingbackService.ReceivePingAsync(_fakePingRequest, "10.0.0.1", null);

            Assert.AreEqual(result, PingbackResponse.SpamDetectedFakeNotFound);
        }
Beispiel #14
0
        public async Task ProcessReceivedPayload_AlreadyPinged()
        {
            var tcsPr = new TaskCompletionSource <PingRequest>();

            tcsPr.SetResult(new PingRequest
            {
                SourceHasLink = true,
                ContainsHtml  = false
            });

            _pingSourceInspectorMock
            .Setup(p => p.ExamineSourceAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>()))
            .Returns(tcsPr.Task);

            var tcsPt = new TaskCompletionSource <(Guid Id, string Title)>();

            tcsPt.SetResult((Guid.NewGuid(), "Pingback Unit Test"));
            _pingTargetFinderMock.Setup(p => p.GetPostIdTitle(It.IsAny <string>(), It.IsAny <IDbConnection>())).Returns(tcsPt.Task);

            var tcsAp = new TaskCompletionSource <bool>();

            tcsAp.SetResult(true);
            _pingTargetFinderMock.Setup(p => p.HasAlreadyBeenPinged(
                                            It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <IDbConnection>()))
            .Returns(tcsAp.Task);

            var pingbackService = new PingbackService(
                _loggerMock.Object,
                _dbConnectionMock.Object,
                _pingSourceInspectorMock.Object,
                _pingTargetFinderMock.Object);

            var result = await pingbackService.ReceivePingAsync(_fakePingRequest, "10.0.0.1", null);

            Assert.AreEqual(result, PingbackResponse.Error48PingbackAlreadyRegistered);
        }
Beispiel #15
0
        public void PingFaultsForNullTargetUri()
        {
            PingbackService service = new PingbackService(null, null);

            Assert.Throws <ArgumentNullException>(() => service.Ping("http://test", null));
        }
Beispiel #16
0
        public void PingFaultsForNullSourceUri()
        {
            PingbackService service = new PingbackService(null, null);

            Assert.Throws <ArgumentNullException>(() => service.Ping(null, null));
        }