Ejemplo n.º 1
0
        public void Url_Not_Specified_LinkbackReceiveException_Saved()
        {
            // Setup

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                { "title", "Source Title" },
                { "excerpt", "ABC" },
                { "blog_name", "Test Blog" }
            });

            var webRequest = new Mock <IHttpWebRequestImplementation>(MockBehavior.Strict);

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.IsType <LinkbackReceiveException>(result.ReceiveException);
            Assert.Equal("Url parameter for Trackback not specified", result.ReceiveException.Message);
        }
Ejemplo n.º 2
0
        public void TargetUrl_Not_Http_Or_Https_ArgumentOutOfRangeException()
        {
            // Setup

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);

            var webRequest = new Mock <IHttpWebRequestImplementation>(MockBehavior.Strict);

            // Test

            var trackback = new Trackback(webRequest.Object);

            ArgumentOutOfRangeException ex = null;

            try
            {
                trackback.Receive(request.Object, new Uri("ftp://target/post/1"));
            }
            catch (ArgumentOutOfRangeException _ex)
            {
                ex = _ex;
            }

            // Verify

            webRequest.VerifyAll();
            request.VerifyAll();

            Assert.NotNull(ex);
            Assert.Equal("targetUrl", ex.ParamName);
        }
Ejemplo n.º 3
0
        public void WebException_Saved()
        {
            // Setup

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                { "title", "Source Title" },
                { "excerpt", "ABC" },
                { "url", "http://source/post/1" },
                { "blog_name", "Test Blog" }
            });

            var webRequest = new Mock <IHttpWebRequestImplementation>(MockBehavior.Strict);

            webRequest.Setup(x => x.Create(new Uri("http://source/post/1"))).Returns(webRequest.Object);
            webRequest.Setup(x => x.GetResponse()).Throws(new System.Net.WebException("WebException"));

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.IsType <System.Net.WebException>(result.ReceiveException);
            Assert.Equal("WebException", result.ReceiveException.Message);
        }
Ejemplo n.º 4
0
        public ActionResult Ping(string sourceUri, string targetUri)
        {
            if (sourceUri == null || targetUri == null)
            {
                throw new ArgumentNullException();
            }

            PostAddress postAddress = pathHelper.GetPostAddressFromUri(new Uri(targetUri));
            Post        post        = postService.GetPost(postAddress);

            if (post == null)
            {
                return(new XmlRpcFaultResult(33, "Cannot find post"));
            }

            Trackback trackback = post.Trackbacks.Where(tb => string.Equals(tb.Url, sourceUri, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();

            if (trackback == null)
            {
                trackback = new Trackback()
                {
                    Url      = sourceUri,
                    Created  = DateTime.Now.ToUniversalTime(),
                    Title    = string.Empty,
                    BlogName = string.Empty,
                    Body     = string.Empty,
                    Source   = string.Empty
                };
                postService.AddTrackback(post, trackback);
            }

            return(new XmlRpcResult("Success"));
        }
        public void CreateTrackbackSetsFeedbackTypeCorrectly()
        {
            string hostname = UnitTestHelper.GenerateUniqueString();

            Config.CreateBlog("", "username", "password", hostname, string.Empty);
            UnitTestHelper.SetHttpContextWithBlogRequest(hostname, string.Empty, string.Empty);
            Blog blog = Config.GetBlog(hostname, string.Empty);

            BlogRequest.Current.Blog = blog;

            Entry entry    = UnitTestHelper.CreateEntryInstanceForSyndication("phil", "title", "body");
            int   parentId = UnitTestHelper.Create(entry);

            var trackback      = new Trackback(parentId, "title", new Uri("http://url"), "phil", "body", blog.TimeZone.Now);
            var subtextContext = new Mock <ISubtextContext>();

            subtextContext.Setup(c => c.Blog).Returns(Config.CurrentBlog);
            //TODO: FIX!!!
            subtextContext.Setup(c => c.Repository).Returns(ObjectProvider.Instance());
            subtextContext.Setup(c => c.Cache).Returns(new TestCache());
            subtextContext.Setup(c => c.HttpContext.Items).Returns(new Hashtable());
            var commentService = new CommentService(subtextContext.Object, null);
            int id             = commentService.Create(trackback, true /*runFilters*/);

            FeedbackItem loadedTrackback = FeedbackItem.Get(id);

            Assert.IsNotNull(loadedTrackback, "Was not able to load trackback from storage.");
            Assert.AreEqual(FeedbackType.PingTrack, loadedTrackback.FeedbackType, "Feedback should be a PingTrack");
        }
Ejemplo n.º 6
0
        protected void lkbPost_Click(object sender, EventArgs e)
        {
            try
            {
                var entry = new Trackback(EntryId, txbTitle.Text, txbUrl.Text.EnsureUrl(), string.Empty,
                                          txbBody.Text.Trim().Length > 0 ? txbBody.Text.Trim() : txbTitle.Text);
                var commentService = new CommentService(SubtextContext, null);

                if (commentService.Create(entry, true /*runFilters*/) > 0)
                {
                    ICommentSpamService feedbackService = null;
                    if (Config.CurrentBlog.FeedbackSpamServiceEnabled)
                    {
                        feedbackService = new AkismetSpamService(Config.CurrentBlog.FeedbackSpamServiceKey,
                                                                 Config.CurrentBlog, null, Url);
                    }
                    var filter = new CommentFilter(SubtextContext, feedbackService);
                    filter.FilterAfterPersist(entry);
                    Messages.ShowMessage(Constants.RES_SUCCESSNEW);
                    Edit.Visible    = false;
                    Results.Visible = true;
                }
                else
                {
                    Messages.ShowError(Constants.RES_FAILUREEDIT
                                       + " There was a baseline problem posting your Trackback.");
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
                Messages.ShowError(String.Format(Constants.RES_EXCEPTION,
                                                 Constants.RES_FAILUREEDIT, ex.Message));
            }
        }
Ejemplo n.º 7
0
        public void Uri_Not_Http_Or_Https_UriFormatException_Saved()
        {
            // Setup

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                { "title", "Source Title" },
                { "excerpt", "ABC" },
                { "url", "ftp://source/1" },
                { "blog_name", "Test Blog" }
            });

            var webRequest = new Mock <IHttpWebRequestImplementation>(MockBehavior.Strict);

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.IsType <UriFormatException>(result.ReceiveException);
            Assert.Equal("Url scheme must be http or https", result.ReceiveException.Message);
        }
Ejemplo n.º 8
0
        public void Uri_Invalid_UriFormatException_Saved()
        {
            // Setup

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                { "title", "Source Title" },
                { "excerpt", "ABC" },
                { "url", "~this~is~not~an~url*xxx://" },
                { "blog_name", "Test Blog" }
            });

            var webRequest = new Mock <IHttpWebRequestImplementation>(MockBehavior.Strict);

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.IsType <UriFormatException>(result.ReceiveException);
        }
Ejemplo n.º 9
0
        public ValidationStateDictionary EditTrackback(Trackback trackback)
        {
            //post.Trackbacks.Add(trackback);

            //repository.Save(post);

            return(null);
        }
Ejemplo n.º 10
0
 public TrackbackReadOnly(Trackback trackback)
 {
     Url              = trackback.Url;
     Title            = trackback.Title;
     Body             = trackback.Body;
     BlogName         = trackback.BlogName;
     Source           = trackback.Source;
     IsTargetInSource = trackback.IsTargetInSource;
     Created          = trackback.Created.Value;
     Modified         = trackback.Modified.Value;
 }
Ejemplo n.º 11
0
        public TrackbackViewModel Add(PostAddress postAddress, FormCollection form)
        {
            Post post = postService.GetPost(postAddress);

            if (post == null)
            {
                return(new TrackbackViewModel(0, "ID is invalid or missing"));
            }

            string incomingUrl      = getParameter(form, "url");
            string incomingTitle    = getParameter(form, "title");
            string incomingBlogName = getParameter(form, "blog_name");
            string incomingExcerpt  = getParameter(form, "excerpt");

            if (string.IsNullOrEmpty(incomingUrl))
            {
                return(new TrackbackViewModel(1, "no url parameter found, please try harder!"));
            }

            Trackback trackback = post.Trackbacks.Where(tb => string.Equals(tb.Url, incomingUrl, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();

            try
            {
                if (trackback == null)
                {
                    trackback = new Trackback
                    {
                        Title    = incomingTitle,
                        Body     = incomingExcerpt,
                        Url      = incomingUrl,
                        BlogName = incomingBlogName,
                        Source   = "",
                        Created  = DateTime.Now.ToUniversalTime()
                    };

                    postService.AddTrackback(post, trackback);
                }
                else
                {
                    trackback.Title            = incomingTitle;
                    trackback.Body             = incomingExcerpt;
                    trackback.BlogName         = incomingBlogName;
                    trackback.IsTargetInSource = null;

                    postService.EditTrackback(trackback);
                }

                return(new TrackbackViewModel());
            }
            catch
            {
                return(new TrackbackViewModel(2, "Failed to save Trackback."));
            }
        }
Ejemplo n.º 12
0
        internal static Trackback AssembleTrackback(WordpressNamespaces namespaces, XElement trackbackElement)
        {
            Trackback trackback = new Trackback();

            trackback.ID          = trackbackElement.WordpressElement(namespaces, "comment_id").Value;
            trackback.Title       = ((XCData)trackbackElement.WordpressElement(namespaces, "comment_author").FirstNode).Value;
            trackback.DateCreated =
                DateTime.Parse(trackbackElement.WordpressElement(namespaces, "comment_date_gmt").Value);

            trackback.Url = trackbackElement.WordpressElement(namespaces, "comment_author_url").Value;

            return(trackback);
        }
Ejemplo n.º 13
0
        public string pingBack(string sourceURI, string targetURI)
        {
            if (!Blog.TrackbacksEnabled)
            {
                return("Pingbacks are not enabled for this site.");
            }

            string pageTitle;

            // GetPostIDFromUrl returns the postID
            int?id = SubtextContext.RequestContext.GetIdFromRequest();

            if (id == null)
            {
                throw new XmlRpcFaultException(33, Resources.XmlRcpFault_DidNotLinkToPermalink);
            }

            Uri sourceUrl = sourceURI.ParseUri();
            Uri targetUrl = targetURI.ParseUri();

            // does the sourceURI actually contain the permalink ?
            if (sourceUrl == null || targetUrl == null ||
                !Verifier.SourceContainsTarget(sourceUrl, targetUrl, out pageTitle))
            {
                throw new XmlRpcFaultException(17, Resources.XmlRcpFault_InvalidLink);
            }

            //PTR = Pingback - TrackBack - Referral
            var trackback = new Trackback(id.Value, HtmlHelper.SafeFormat(pageTitle, SubtextContext.HttpContext.Server),
                                          new Uri(sourceURI), string.Empty,
                                          HtmlHelper.SafeFormat(pageTitle, SubtextContext.HttpContext.Server),
                                          Blog.TimeZone.Now);
            ICommentSpamService feedbackService = null;

            if (Blog.FeedbackSpamServiceEnabled)
            {
                feedbackService = new AkismetSpamService(Blog.FeedbackSpamServiceKey, Blog, null, Url);
            }
            var commentService = new CommentService(SubtextContext, new CommentFilter(SubtextContext, feedbackService));

            commentService.Create(trackback, true /*runFilters*/);

            //TODO: Create this using IoC container
            var emailService = new EmailService(EmailProvider.Instance(), new EmbeddedTemplateEngine(), SubtextContext);

            emailService.EmailCommentToBlogAuthor(trackback);

            return(String.Format(CultureInfo.InvariantCulture, Resources.XmlRpcMessage_ThanksForThePingback, sourceURI));
        }
Ejemplo n.º 14
0
        public void Discovery_Source_Has_No_Link()
        {
            // Setup

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection
            {
                { "title", "Source Title" },
                { "excerpt", "ABC" },
                { "url", "http://source/1" },
                { "blog_name", "Test Blog" }
            });

            var webRequest  = new Mock <IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse = new Mock <IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest.Setup(x => x.Create(new Uri("http://source/1"))).Returns(webRequest.Object);
            webRequest.Setup(x => x.GetResponse()).Returns(webResponse.Object);

            webResponse.Setup(x => x.Close());
            webResponse.SetupGet(x => x.IsHttpStatusCode2XX).Returns(true);
            string source = "... http://target/any ...";

            webResponse.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes(source)));

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            webResponse.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.Equal("Source Title", result.Title);
            Assert.Equal("ABC", result.Excerpt);
            Assert.Equal("http://source/1", result.Url.ToString().ToLowerInvariant());
            Assert.Equal("Test Blog", result.BlogName);
        }
Ejemplo n.º 15
0
        public void BlogName_Not_Specified()
        {
            // Setup

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                { "title", "Source Title" },
                { "excerpt", "ABC" },
                { "url", "http://source/1" },
            });

            var webRequest  = new Mock <IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse = new Mock <IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest.Setup(x => x.Create(new Uri("http://source/1"))).Returns(webRequest.Object);
            webRequest.Setup(x => x.GetResponse()).Returns(webResponse.Object);

            webResponse.Setup(x => x.Close());
            webResponse.SetupGet(x => x.IsHttpStatusCode2XX).Returns(true);
            string source = "... <a href=\"http://taRget/post/1\">post1</a> ...";

            webResponse.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes(source)));

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            webResponse.VerifyAll();
            request.VerifyAll();

            Assert.True(result.Valid);
            Assert.Equal("Source Title", result.Title);
            Assert.Equal("ABC", result.Excerpt);
            Assert.Equal("http://source/1", result.Url.ToString().ToLowerInvariant());
            Assert.True(String.IsNullOrEmpty(result.BlogName));
        }
        private void CreateTrackbackAndSendResponse(ISubtextContext subtextContext, IEntryIdentity entry, int entryId)
        {
            HttpContextBase context  = subtextContext.RequestContext.HttpContext;
            string          title    = SafeParam(context, "title");
            string          excerpt  = SafeParam(context, "excerpt");
            string          urlText  = SafeParam(context, "url");
            string          blogName = SafeParam(context, "blog_name");

            Uri url = urlText.ParseUri();

            if (url == null)
            {
                SendTrackbackResponse(context, 1, Resources.TrackbackResponse_NoUrl);
                return;
            }

            if (entry == null ||
                !IsSourceVerification(url,
                                      subtextContext.UrlHelper.EntryUrl(entry).ToFullyQualifiedUrl(subtextContext.Blog)))
            {
                SendTrackbackResponse(context, 2,
                                      String.Format(CultureInfo.InvariantCulture,
                                                    Resources.TrackbackResponse_NoRelevantLink, url));
                return;
            }

            var trackback = new Trackback(entryId, title, url, blogName, excerpt, Blog.TimeZone.Now);
            ICommentSpamService feedbackService = null;
            Blog blog = subtextContext.Blog;

            if (blog.FeedbackSpamServiceEnabled)
            {
                feedbackService = new AkismetSpamService(blog.FeedbackSpamServiceKey, blog, null, Url);
            }
            var commentService = new CommentService(SubtextContext, new CommentFilter(SubtextContext, feedbackService));

            commentService.Create(trackback, true /*runFilters*/);
            //TODO: Create this using IoC container
            var emailService = new EmailService(EmailProvider.Instance(), new EmbeddedTemplateEngine(), subtextContext);

            emailService.EmailCommentToBlogAuthor(trackback);
        }
        public void SaveTrackback(Post post, Trackback trackback)
        {
            oxite_Blogs_Trackback persistenceTrackback = new oxite_Blogs_Trackback
            {
                BlogName         = trackback.BlogName,
                Body             = trackback.Body,
                CreatedDate      = trackback.Created ?? DateTime.UtcNow,
                IsTargetInSource = trackback.IsTargetInSource,
                ModifiedDate     = DateTime.UtcNow,
                PostID           = post.ID,
                Source           = trackback.Source,
                Title            = trackback.Title,
                TrackbackID      = Guid.NewGuid(),
                Url = trackback.Url
            };

            context.oxite_Blogs_Trackbacks.InsertOnSubmit(persistenceTrackback);

            context.SubmitChanges();
        }
Ejemplo n.º 18
0
        public void Title_Encoded()
        {
            // Setup

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                { "title", "Source <script /> Title" },
                { "excerpt", "ABC" },
                { "url", "http://source/1" },
                { "blog_name", "Test Blog" }
            });

            var webRequest  = new Mock <IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse = new Mock <IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest.Setup(x => x.Create(new Uri("http://source/1"))).Returns(webRequest.Object);
            webRequest.Setup(x => x.GetResponse()).Returns(webResponse.Object);

            webResponse.Setup(x => x.Close());
            webResponse.SetupGet(x => x.IsHttpStatusCode2XX).Returns(true);
            string source = "... <a href=\"http://taRget/post/1\">post1</a> ...";

            webResponse.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes(source)));

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            webResponse.VerifyAll();
            request.VerifyAll();

            Assert.True(result.Valid);
            Assert.Equal("Source &lt;script /&gt; Title", result.Title);
        }
Ejemplo n.º 19
0
        public void BlogName_Encoded()
        {
            // Setup

            var request = new Mock<HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                    {"title", "Source Title"},
                    {"excerpt", "ABC"},
                    {"url", "http://source/1"},
                    {"blog_name", "Test <script /> Blog"}
                });

            var webRequest = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest.Setup(x => x.Create(new Uri("http://source/1"))).Returns(webRequest.Object);
            webRequest.Setup(x => x.GetResponse()).Returns(webResponse.Object);

            webResponse.Setup(x => x.Close());
            webResponse.SetupGet(x => x.IsHttpStatusCode2XX).Returns(true);
            string source = "... <a href=\"http://taRget/post/1\">post1</a> ...";
            webResponse.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes(source)));

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            webResponse.VerifyAll();
            request.VerifyAll();

            Assert.True(result.Valid);
            Assert.Equal("Test &lt;script /&gt; Blog", result.BlogName);
        }
Ejemplo n.º 20
0
        public void Source_Discovery_Http_Error_LinkbackReceiveException_Saved()
        {
            // Setup

            var request = new Mock <HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                { "title", "Source Title" },
                { "excerpt", "ABC" },
                { "url", "http://source/post/1" },
                { "blog_name", "Test Blog" }
            });

            var webRequest  = new Mock <IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse = new Mock <IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest.Setup(x => x.Create(new Uri("http://source/post/1"))).Returns(webRequest.Object);
            webRequest.Setup(x => x.GetResponse()).Returns(webResponse.Object);

            webResponse.SetupGet(x => x.IsHttpStatusCode2XX).Returns(false);
            webResponse.Setup(x => x.Close());

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            webResponse.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.IsType <LinkbackReceiveException>(result.ReceiveException);
            Assert.Equal("Http error while discovering Trackback source at http://source/post/1", result.ReceiveException.Message);
        }
Ejemplo n.º 21
0
        public void TrackbackShowsUpInFeedbackList()
        {
            string hostname   = UnitTestHelper.GenerateUniqueString();
            var    repository = new DatabaseObjectProvider();

            repository.CreateBlog("", "username", "password", hostname, "blog");
            UnitTestHelper.SetHttpContextWithBlogRequest(hostname, "blog", string.Empty);
            Blog blog = repository.GetBlog(hostname, "blog");

            BlogRequest.Current.Blog = blog;

            Entry parentEntry = UnitTestHelper.CreateEntryInstanceForSyndication("philsath aeuoa asoeuhtoensth",
                                                                                 "sntoehu title aoeuao eu",
                                                                                 "snaot hu aensaoehtu body");
            int parentId = UnitTestHelper.Create(parentEntry);

            ICollection <FeedbackItem> entries = repository.GetFeedbackForEntry(parentEntry);

            Assert.AreEqual(0, entries.Count, "Did not expect any feedback yet.");

            var trackback = new Trackback(parentId, "title", new Uri("http://url"), "phil", "body");

            Config.CurrentBlog.DuplicateCommentsEnabled = true;
            var subtextContext = new Mock <ISubtextContext>();

            subtextContext.Setup(c => c.Cache).Returns(new TestCache());
            subtextContext.SetupBlog(Config.CurrentBlog);
            subtextContext.SetupRepository(repository);
            subtextContext.Setup(c => c.HttpContext.Items).Returns(new Hashtable());
            var commentService = new CommentService(subtextContext.Object, null);
            int trackbackId    = commentService.Create(trackback, true /*runFilters*/);

            new DatabaseObjectProvider().Approve(trackback, null);

            entries = repository.GetFeedbackForEntry(parentEntry);
            Assert.AreEqual(1, entries.Count, "Expected a trackback.");
            Assert.AreEqual(trackbackId, entries.First().Id,
                            "The feedback was not the same one we expected. The IDs do not match.");
        }
Ejemplo n.º 22
0
        public void Autodiscovery_Fail_Then_Try_Direct()
        {
            // Setup

            var webRequest1 = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse1 = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            //webRequest1.Setup(x => x.Create(new Uri("http://target/post/1/trackback"))).Returns(webRequest1.Object);
            bool firstRequest = true;
            webRequest1.Setup(x => x.GetResponse()).Returns(webResponse1.Object);
            webResponse1.SetupGet(x => x.IsHttpStatusCode2XX).Returns(false);
            webResponse1.Setup(x => x.Close());

            var webRequest2 = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse2 = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest1.Setup(x => x.Create(new Uri("http://target/post/1/trackback"))).Returns(
                () => {
                    if (firstRequest) {
                        firstRequest = false;
                        return webRequest1.Object;
                    }
                    else {
                        return webRequest2.Object;
                    }
                });
            webRequest2.SetupSet(x => x.Method = "POST");
            webRequest2.SetupSet(x => x.ContentType = "application/x-www-form-urlencoded");
            webRequest2.SetupSet(x => x.ContentLength = 82);
            var requestStream = new MemoryStream();
            webRequest2.Setup(x => x.GetRequestStream()).Returns(requestStream);
            webRequest2.Setup(x => x.GetResponse()).Returns(webResponse2.Object);

            webResponse2.Setup(x => x.Close());
            webResponse2.SetupGet(x => x.IsHttpStatusCode2XX).Returns(true);
            webResponse2.SetupGet(x => x.ContentEncoding).Returns(String.Empty);
            webResponse2.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes("<?xml version=\"1.0\" encoding=\"utf-8\"?><response><error>0</error></response>")));

            // Test

            var trackback = new Trackback(webRequest1.Object);

            var url = new Uri("http://target/post/1/trackback");

            var parameters = new LinkbackSendParameters
            {
                Title = "Source Title",
                Excerpt = "ABC",
                Url = new Uri("http://source/1"),
                BlogName = "Test Blog"
            };

            var result = trackback.Send(url, parameters);

            // Verify

            webRequest1.VerifyAll();
            webResponse1.VerifyAll();
            webRequest2.VerifyAll();
            webResponse2.VerifyAll();

            Assert.Equal("url=http%3A%2F%2Fsource%2F1&title=Source%20Title&excerpt=ABC&blog_name=Test%20Blog", new UTF8Encoding().GetString(requestStream.ToArray()));

            Assert.True(result.Success);
            Assert.Equal(0, result.Code);
            Assert.True(String.IsNullOrEmpty(result.Message));
        }
Ejemplo n.º 23
0
        public void ProtocolViolationException_Saved()
        {
            // Setup

            var webRequest1 = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse1 = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest1.Setup(x => x.Create(new Uri("http://target/post/1"))).Returns(webRequest1.Object);
            webRequest1.Setup(x => x.GetResponse()).Throws(new System.Net.ProtocolViolationException("ProtocolViolationException"));

            // Test

            var trackback = new Trackback(webRequest1.Object);

            var url = new Uri("http://target/post/1");

            var parameters = new LinkbackSendParameters
            {
                Title = "Source Title",
                Excerpt = "ABC",
                Url = new Uri("http://source/1"),
                BlogName = "Test Blog"
            };

            var result = trackback.Send(url, parameters);

            // Verify

            webRequest1.VerifyAll();
            webResponse1.VerifyAll();

            Assert.False(result.Success);
            Assert.Equal(0, result.Code);
            Assert.True(String.IsNullOrEmpty(result.Message));
            Assert.IsType<System.Net.ProtocolViolationException>(result.SendException);
        }
Ejemplo n.º 24
0
        public void Autodiscovery_RDF_Not_Found_But_Autodiscovery_Is_True_Then_LinkbackSendException_Saved()
        {
            // Setup

            var webRequest1 = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse1 = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest1.Setup(x => x.Create(new Uri("http://target/post/1"))).Returns(webRequest1.Object);
            webRequest1.Setup(x => x.GetResponse()).Returns(webResponse1.Object);

            webResponse1.Setup(x => x.Close());
            webResponse1.SetupGet(x => x.IsHttpStatusCode2XX).Returns(true);
            webResponse1.SetupGet(x => x.ContentEncoding).Returns(String.Empty);
            string rdf = "... there are no any RDFs ... ";
            webResponse1.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes(rdf)));

            // Test

            var trackback = new Trackback(webRequest1.Object);

            var url = new Uri("http://target/post/1");

            var parameters = new LinkbackSendParameters
            {
                Title = "Source Title",
                Excerpt = "ABC",
                Url = new Uri("http://source/1"),
                BlogName = "Test Blog",
                AutoDiscovery = true
            };

            var result = trackback.Send(url, parameters);

            // Verify

            webRequest1.VerifyAll();
            webResponse1.VerifyAll();

            Assert.False(result.Success);
            Assert.Equal(0, result.Code);
            Assert.True(String.IsNullOrEmpty(result.Message));
            Assert.IsType<LinkbackSendException>(result.SendException);
            Assert.Equal("RDF not found while discovering Trackback url for http://target/post/1", result.SendException.Message);
        }
Ejemplo n.º 25
0
        public void Excerpt_Not_Specified()
        {
            // Setup

            var webRequest1 = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse1 = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest1.Setup(x => x.Create(new Uri("http://target/post/1"))).Returns(webRequest1.Object);
            webRequest1.Setup(x => x.GetResponse()).Returns(webResponse1.Object);

            webResponse1.SetupGet(x => x.IsHttpStatusCode2XX).Returns(true);
            webResponse1.SetupGet(x => x.ContentEncoding).Returns(String.Empty);
            string rdf = String.Format(@"
            ...
            <p>
            <rdf:RDF xmlns:rdf=""http://www.w3.org/1999/02/22-rdf-syntax-ns#""
             xmlns:dc=""http://purl.org/dc/elements/1.1/""
             xmlns:trackback=""http://madskills.com/public/xml/rss/module/trackback/"">
            <rdf:Description rdf:about=""{0}""
                     dc:identifier=""{0}""
                     dc:title=""{1}""
                     trackback:ping=""{2}"" />
            </rdf:RDF>
            </p>
            ...", "http://target/post/1", "1", "http://target/post/1/trackback");
            webResponse1.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes(rdf)));
            webResponse1.Setup(x => x.Close());

            var webRequest2 = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse2 = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest1.Setup(x => x.Create(new Uri("http://target/post/1/trackback"))).Returns(webRequest2.Object);
            webRequest2.SetupSet(x => x.Method = "POST");
            webRequest2.SetupSet(x => x.ContentType = "application/x-www-form-urlencoded");
            webRequest2.SetupSet(x => x.ContentLength = 70);
            var requestStream = new MemoryStream();
            webRequest2.Setup(x => x.GetRequestStream()).Returns(requestStream);
            webRequest2.Setup(x => x.GetResponse()).Returns(webResponse2.Object);

            webResponse2.Setup(x => x.Close());
            webResponse2.SetupGet(x => x.IsHttpStatusCode2XX).Returns(true);
            webResponse2.SetupGet(x => x.ContentEncoding).Returns(String.Empty);
            webResponse2.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes("<?xml version=\"1.0\" encoding=\"utf-8\"?><response><error>0</error></response>")));

            // Test

            var trackback = new Trackback(webRequest1.Object);

            var url = new Uri("http://target/post/1");

            var parameters = new LinkbackSendParameters
            {
                Title = "Source Title",
                Url = new Uri("http://source/1"),
                BlogName = "Test Blog"
            };

            var result = trackback.Send(url, parameters);

            // Verify

            webRequest1.VerifyAll();
            webResponse1.VerifyAll();
            webRequest2.VerifyAll();
            webResponse2.VerifyAll();

            Assert.Equal("url=http%3A%2F%2Fsource%2F1&title=Source%20Title&blog_name=Test%20Blog", new UTF8Encoding().GetString(requestStream.ToArray()));

            Assert.True(result.Success);
            Assert.Equal(0, result.Code);
            Assert.True(String.IsNullOrEmpty(result.Message));
        }
Ejemplo n.º 26
0
        public void Url_Not_Specified_LinkbackReceiveException_Saved()
        {
            // Setup

            var request = new Mock<HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                    {"title", "Source Title"},
                    {"excerpt", "ABC"},
                    {"blog_name", "Test Blog"}
                });

            var webRequest = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.IsType<LinkbackReceiveException>(result.ReceiveException);
            Assert.Equal("Url parameter for Trackback not specified", result.ReceiveException.Message);
        }
Ejemplo n.º 27
0
        public void Unknown_Exceptions_Are_Not_Handled()
        {
            // Setup

            var webRequest1 = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse1 = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest1.Setup(x => x.Create(new Uri("http://target/post/1"))).Returns(webRequest1.Object);
            webRequest1.Setup(x => x.GetResponse()).Throws(new InvalidOperationException());

            // Test

            var trackback = new Trackback(webRequest1.Object);

            var url = new Uri("http://target/post/1");

            var parameters = new LinkbackSendParameters
            {
                Title = "Source Title",
                Excerpt = "ABC",
                Url = new Uri("http://source/1"),
                BlogName = "Test Blog"
            };

            InvalidOperationException exception = null;

            try
            {
                trackback.Send(url, parameters);
            }
            catch (InvalidOperationException ex)
            {
                exception = ex;
            }

            // Verify

            Assert.NotNull(exception);
        }
Ejemplo n.º 28
0
 public ValidationStateDictionary AddTrackback(Post post, Trackback trackback)
 {
     AddedTrackback = trackback;
     return(null);
 }
Ejemplo n.º 29
0
        public static PostInputForImport ToImportPostInput(this BlogMLPost blogMLPost, BlogMLBlog blog, bool commentingDisabled, string slugPattern, EntityState state, UserAuthenticated creator)
        {
            string   body      = blogMLPost.Content.Text;
            string   bodyShort = blogMLPost.HasExcerpt ? blogMLPost.Excerpt.Text : "";
            DateTime created   = blogMLPost.DateCreated;
            DateTime modified  = blogMLPost.DateModified;
            DateTime?published = blogMLPost.DateCreated;
            string   title     = blogMLPost.Title;

            string slug;

            if (!string.IsNullOrEmpty(slugPattern))
            {
                Regex regex = new Regex(slugPattern);
                Match match = regex.Match(blogMLPost.PostUrl);

                if (match != null && match.Groups != null && match.Groups.Count >= 2)
                {
                    slug = match.Groups[1].Value;
                }
                else
                {
                    slug = blogMLPost.ID;
                }
            }
            else
            {
                slug = !string.IsNullOrEmpty(blogMLPost.PostUrl) ? blogMLPost.PostUrl : blogMLPost.ID;
            }

            List <PostTag> tags = new List <PostTag>();

            if (blogMLPost.Categories != null && blogMLPost.Categories.Count > 0)
            {
                foreach (BlogMLCategoryReference bcr in blogMLPost.Categories)
                {
                    foreach (BlogMLCategory tag in blog.Categories)
                    {
                        if (tag.ID == bcr.Ref)
                        {
                            tags.Add(new PostTag(Guid.NewGuid(), tag.Title, tag.Title, tag.DateCreated));

                            break;
                        }
                    }
                }
            }

            List <Trackback> trackbacks = new List <Trackback>();

            if (blogMLPost.Trackbacks != null && blogMLPost.Trackbacks.Count > 0)
            {
                foreach (BlogMLTrackback tb in blogMLPost.Trackbacks)
                {
                    Trackback trackback = new Trackback
                    {
                        Created          = tb.DateCreated,
                        Modified         = tb.DateModified,
                        Title            = tb.Title,
                        Url              = tb.Url,
                        IsTargetInSource = tb.Approved,
                        BlogName         = "",
                        Body             = "",
                        Source           = ""
                    };

                    trackbacks.Add(trackback);
                }
            }

            return(new PostInputForImport(body, bodyShort, commentingDisabled, created, creator, modified, published, slug, state, tags, title, trackbacks));
        }
Ejemplo n.º 30
0
        public void Source_Discovery_Http_Error_LinkbackReceiveException_Saved()
        {
            // Setup

            var request = new Mock<HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                    {"title", "Source Title"},
                    {"excerpt", "ABC"},
                    {"url", "http://source/post/1"},
                    {"blog_name", "Test Blog"}
                });

            var webRequest = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest.Setup(x => x.Create(new Uri("http://source/post/1"))).Returns(webRequest.Object);
            webRequest.Setup(x => x.GetResponse()).Returns(webResponse.Object);

            webResponse.SetupGet(x => x.IsHttpStatusCode2XX).Returns(false);
            webResponse.Setup(x => x.Close());

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            webResponse.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.IsType<LinkbackReceiveException>(result.ReceiveException);
            Assert.Equal("Http error while discovering Trackback source at http://source/post/1", result.ReceiveException.Message);
        }
Ejemplo n.º 31
0
        public void Discovery_Source_Has_No_Link()
        {
            // Setup

            var request = new Mock<HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection
                {
                    {"title", "Source Title"},
                    {"excerpt", "ABC"},
                    {"url", "http://source/1"},
                    {"blog_name", "Test Blog"}
                });

            var webRequest = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest.Setup(x => x.Create(new Uri("http://source/1"))).Returns(webRequest.Object);
            webRequest.Setup(x => x.GetResponse()).Returns(webResponse.Object);

            webResponse.Setup(x => x.Close());
            webResponse.SetupGet(x => x.IsHttpStatusCode2XX).Returns(true);
            string source = "... http://target/any ...";
            webResponse.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes(source)));

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            webResponse.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.Equal("Source Title", result.Title);
            Assert.Equal("ABC", result.Excerpt);
            Assert.Equal("http://source/1", result.Url.ToString().ToLowerInvariant());
            Assert.Equal("Test Blog", result.BlogName);
        }
Ejemplo n.º 32
0
        public void TargetUrl_Null_ArgumentNullException()
        {
            // Setup

            var request = new Mock<HttpRequestBase>(MockBehavior.Strict);

            var webRequest = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);

            // Test

            var trackback = new Trackback(webRequest.Object);

            ArgumentNullException ex = null;

            try
            {
                trackback.Receive(request.Object, null);
            }
            catch (ArgumentNullException _ex)
            {
                ex = _ex;
            }

            // Verify

            webRequest.VerifyAll();
            request.VerifyAll();

            Assert.NotNull(ex);
            Assert.Equal("targetUrl", ex.ParamName);
        }
        public static Post ToPost(this BlogMLPost blogMLPost, BlogMLBlog blog, User user, string slugPattern)
        {
            Post post = new Post();

            post.Body      = blogMLPost.Content.Text;
            post.Creator   = user;
            post.Created   = blogMLPost.DateCreated;
            post.Modified  = blogMLPost.DateModified;
            post.Published = blogMLPost.DateCreated;
            if (!string.IsNullOrEmpty(slugPattern))
            {
                Regex regex = new Regex(slugPattern);
                Match match = regex.Match(blogMLPost.PostUrl);

                if (match != null && match.Groups != null && match.Groups.Count >= 2)
                {
                    post.Slug = match.Groups[1].Value;
                }
                else
                {
                    post.Slug = blogMLPost.ID;
                }
            }
            else
            {
                post.Slug = !string.IsNullOrEmpty(blogMLPost.PostUrl)
                    ? blogMLPost.PostUrl
                    : blogMLPost.ID;
            }
            post.Title = blogMLPost.Title;

            post.BodyShort = blogMLPost.HasExcerpt
                ? blogMLPost.Excerpt.Text
                : "";

            post.State = blogMLPost.Approved
                ? EntityState.Normal
                : EntityState.PendingApproval;

            post.CommentingDisabled = false;

            post.Tags = new List <Tag>();

            if (blogMLPost.Categories != null && blogMLPost.Categories.Count > 0)
            {
                foreach (BlogMLCategoryReference bcr in blogMLPost.Categories)
                {
                    foreach (BlogMLCategory tag in blog.Categories)
                    {
                        if (tag.ID == bcr.Ref)
                        {
                            post.Tags.Add(new Tag {
                                ID = Guid.NewGuid(), Name = tag.Title, Created = tag.DateCreated
                            });

                            break;
                        }
                    }
                }
            }

            post.Trackbacks = new List <Trackback>();

            if (blogMLPost.Trackbacks != null && blogMLPost.Trackbacks.Count > 0)
            {
                foreach (BlogMLTrackback tb in blogMLPost.Trackbacks)
                {
                    Trackback trackback = new Trackback
                    {
                        Created          = tb.DateCreated,
                        Modified         = tb.DateModified,
                        Title            = tb.Title,
                        Url              = tb.Url,
                        IsTargetInSource = tb.Approved,
                        BlogName         = "",
                        Body             = "",
                        Source           = ""
                    };

                    post.Trackbacks.Add(trackback);
                }
            }

            return(post);
        }
Ejemplo n.º 34
0
        public void WebException_Saved()
        {
            // Setup

            var request = new Mock<HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                    {"title", "Source Title"},
                    {"excerpt", "ABC"},
                    {"url", "http://source/post/1"},
                    {"blog_name", "Test Blog"}
                });

            var webRequest = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);

            webRequest.Setup(x => x.Create(new Uri("http://source/post/1"))).Returns(webRequest.Object);
            webRequest.Setup(x => x.GetResponse()).Throws(new System.Net.WebException("WebException"));

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.IsType<System.Net.WebException>(result.ReceiveException);
            Assert.Equal("WebException", result.ReceiveException.Message);
        }
Ejemplo n.º 35
0
        public void Response_Error()
        {
            // Setup

            var webRequest1 = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse1 = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest1.Setup(x => x.Create(new Uri("http://target/post/1"))).Returns(webRequest1.Object);
            webRequest1.Setup(x => x.GetResponse()).Returns(webResponse1.Object);

            webResponse1.SetupGet(x => x.IsHttpStatusCode2XX).Returns(true);
            webResponse1.SetupGet(x => x.ContentEncoding).Returns(String.Empty);
            string rdf = String.Format("... <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\"><rdf:Description rdf:about=\"{0}\" dc:identifier=\"{0}\" dc:title=\"{1}\" trackback:ping=\"{2}\" /></rdf:RDF> ...", "http://target/post/1", "1", "http://target/post/1/trackback");
            webResponse1.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes(rdf)));
            webResponse1.Setup(x => x.Close());

            var webRequest2 = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse2 = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest1.Setup(x => x.Create(new Uri("http://target/post/1/trackback"))).Returns(webRequest2.Object);
            webRequest2.SetupSet(x => x.Method = "POST");
            webRequest2.SetupSet(x => x.ContentType = "application/x-www-form-urlencoded");
            webRequest2.SetupSet(x => x.ContentLength = 82);
            var requestStream = new MemoryStream();
            webRequest2.Setup(x => x.GetRequestStream()).Returns(requestStream);
            webRequest2.Setup(x => x.GetResponse()).Returns(webResponse2.Object);

            webResponse2.Setup(x => x.Close());
            webResponse2.SetupGet(x => x.IsHttpStatusCode2XX).Returns(true);
            webResponse2.SetupGet(x => x.ContentEncoding).Returns(String.Empty);
            webResponse2.Setup(x => x.GetResponseStream()).Returns(new MemoryStream(new UTF8Encoding().GetBytes("<?xml version=\"1.0\" encoding=\"utf-8\"?><response><error>1</error><message>Error</message></response>")));

            // Test

            var trackback = new Trackback(webRequest1.Object);

            var url = new Uri("http://target/post/1");

            var parameters = new LinkbackSendParameters
            {
                Title = "Source Title",
                Excerpt = "ABC",
                Url = new Uri("http://source/1"),
                BlogName = "Test Blog"
            };

            var result = trackback.Send(url, parameters);

            // Verify

            webRequest1.VerifyAll();
            webResponse1.VerifyAll();
            webRequest2.VerifyAll();
            webResponse2.VerifyAll();

            Assert.True(result.Success);
            Assert.Equal(1, result.Code);
            Assert.Equal("Error", result.Message);
        }
Ejemplo n.º 36
0
 public ValidationStateDictionary EditTrackback(Trackback trackback)
 {
     AddedTrackback = trackback;
     return(null);
 }
Ejemplo n.º 37
0
        public ValidationStateDictionary AddTrackback(Post post, Trackback trackback)
        {
            repository.SaveTrackback(post, trackback);

            return(null);
        }
Ejemplo n.º 38
0
        public void Autodiscovery_Http_Error_But_Autodiscovery_Is_True_Then_LinkbackSendException_Saved()
        {
            // Setup

            var webRequest1 = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);
            var webResponse1 = new Mock<IHttpWebResponseImplementation>(MockBehavior.Strict);

            webRequest1.Setup(x => x.Create(new Uri("http://target/post/1"))).Returns(webRequest1.Object);
            webRequest1.Setup(x => x.GetResponse()).Returns(webResponse1.Object);

            webResponse1.SetupGet(x => x.IsHttpStatusCode2XX).Returns(false);
            webResponse1.Setup(x => x.Close());

            // Test

            var trackback = new Trackback(webRequest1.Object);

            var url = new Uri("http://target/post/1");

            var parameters = new LinkbackSendParameters
            {
                Title = "Source Title",
                Excerpt = "ABC",
                Url = new Uri("http://source/1"),
                BlogName = "Test Blog",
                AutoDiscovery = true
            };

            var result = trackback.Send(url, parameters);

            // Verify

            webRequest1.VerifyAll();
            webResponse1.VerifyAll();

            Assert.False(result.Success);
            Assert.Equal(0, result.Code);
            Assert.True(String.IsNullOrEmpty(result.Message));
            Assert.IsType<LinkbackSendException>(result.SendException);
            Assert.Equal("Http error while discovering Trackback url for http://target/post/1", result.SendException.Message);
        }
Ejemplo n.º 39
0
        public void Uri_Invalid_UriFormatException_Saved()
        {
            // Setup

            var request = new Mock<HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                    {"title", "Source Title"},
                    {"excerpt", "ABC"},
                    {"url", "~this~is~not~an~url*xxx://"},
                    {"blog_name", "Test Blog"}
                });

            var webRequest = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.IsType<UriFormatException>(result.ReceiveException);
        }
Ejemplo n.º 40
0
        public void Uri_Not_Http_Or_Https_UriFormatException_Saved()
        {
            // Setup

            var request = new Mock<HttpRequestBase>(MockBehavior.Strict);

            request.SetupGet(x => x.Form).Returns(
                new NameValueCollection {
                    {"title", "Source Title"},
                    {"excerpt", "ABC"},
                    {"url", "ftp://source/1"},
                    {"blog_name", "Test Blog"}
                });

            var webRequest = new Mock<IHttpWebRequestImplementation>(MockBehavior.Strict);

            // Test

            var trackback = new Trackback(webRequest.Object);

            var result = trackback.Receive(request.Object, new Uri("http://target/post/1"));

            // Verify

            webRequest.VerifyAll();
            request.VerifyAll();

            Assert.False(result.Valid);
            Assert.IsType<UriFormatException>(result.ReceiveException);
            Assert.Equal("Url scheme must be http or https", result.ReceiveException.Message);
        }