public void NewPostAddsPassedCategoriesAsTags()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();
            FakeTagService  tagService  = new FakeTagService();
            FakeUserService userService = new FakeUserService();
            Guid            areaID      = Guid.NewGuid();
            Guid            tag1ID      = Guid.NewGuid();
            Guid            tag2ID      = Guid.NewGuid();

            areaService.StoredAreas.Add("test", new Oxite.Models.Area()
            {
                ID = areaID
            });

            Post newPost = new Post()
            {
                categories  = new[] { "Test1", "Test2" },
                title       = "Test",
                description = "A Test",
                dateCreated = DateTime.Now,
                mt_basename = "test"
            };

            MetaWeblogAPI service = new MetaWeblogAPI(postService, areaService, userService, null, null);

            service.NewPost(areaID.ToString(), "test", "test", newPost, false);

            Assert.Equal(1, postService.AddedPosts.Count);

            Oxite.Models.Post savedPost = postService.AddedPosts[0];
            Assert.Equal(2, savedPost.Tags.Count);
            Assert.Contains("Test1", savedPost.Tags.Select(t => t.Name));
            Assert.Contains("Test2", savedPost.Tags.Select(t => t.Name));
        }
Ejemplo n.º 2
0
        public string Ping(string sourceUri, string targetUri)
        {
            if (sourceUri == null || targetUri == null)
            {
                throw new ArgumentNullException();
            }

            Oxite.Models.PostAddress postAddress = pathHelper.GetPostAddressFromUri(new Uri(targetUri));

            Oxite.Models.Post post = postService.GetPost(postAddress);

            if (post == null)
            {
                throw new ArgumentException();
            }

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

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

            return("Success");
        }
        public void EditPostSavesChangesToTextFields()
        {
            FakePostService postService = new FakePostService();
            FakeUserService userService = new FakeUserService();

            Guid postID = Guid.NewGuid();

            postService.AddedPosts.Add(new Oxite.Models.Post()
            {
                ID = postID,
            });

            Post newPost = new Post()
            {
                title       = "PostTitle",
                description = "PostDescription",
                mt_excerpt  = "PostBodyShort",
                mt_basename = "PostSlug"
            };

            MetaWeblogAPI service = new MetaWeblogAPI(postService, null, userService, null, null);

            bool success = service.EditPost(postID.ToString(), "test", "test", newPost, false);

            Assert.True(success);
            Oxite.Models.Post edited = postService.AddedPosts[0];
            Assert.Equal(newPost.title, edited.Title);
            Assert.Equal(newPost.description, edited.Body);
            Assert.Equal(newPost.mt_excerpt, edited.BodyShort);
            Assert.Equal(newPost.mt_basename, edited.Slug);
        }
        public void NewPostCreatesSlugForEntry()
        {
            FakePostService        postService        = new FakePostService();
            FakeAreaService        areaService        = new FakeAreaService();
            FakeTagService         tagService         = new FakeTagService();
            FakeUserService        userService        = new FakeUserService();
            FakeRegularExpressions regularExpressions = new FakeRegularExpressions();
            Guid areaID = Guid.NewGuid();

            areaService.StoredAreas.Add("test", new Oxite.Models.Area()
            {
                ID = areaID
            });

            Post newPost = new Post()
            {
                title = "This is a test", description = "A Test", dateCreated = DateTime.Now, mt_basename = ""
            };

            MetaWeblogAPI service = new MetaWeblogAPI(postService, areaService, userService, null, regularExpressions);

            service.NewPost(areaID.ToString(), "test", "test", newPost, false);

            Oxite.Models.Post savedPost = postService.AddedPosts[0];
            Assert.Equal("This-is-a-test", savedPost.Slug);
        }
Ejemplo n.º 5
0
        public bool EditPost(string postId, string username, string password, Post post, bool publish)
        {
            if (string.IsNullOrEmpty(postId))
            {
                throw new ArgumentException();
            }

            getUser(username, password);

            Oxite.Models.Post existingPost = postService.GetPost(new Guid(postId));

            existingPost.Title     = post.title;
            existingPost.Body      = post.description;
            existingPost.BodyShort = post.mt_excerpt;
            existingPost.Slug      = post.mt_basename;

            string[] postTags = post.categories ?? new string[] { };

            existingPost.Tags = postTags.Select(t => new Oxite.Models.Tag()
            {
                Name = t
            }).ToList();

            if (publish && !existingPost.Published.HasValue)
            {
                existingPost.Published = DateTime.Now;
            }

            postService.EditPost(existingPost);

            return(true);
        }
        public void GetPostReturnsPost()
        {
            FakePostService postService = new FakePostService();
            FakeUserService userService = new FakeUserService();

            DateTime now = DateTime.Now;

            Oxite.Models.Post fakePost = new Oxite.Models.Post()
            {
                Title     = "Title",
                Body      = "Body",
                Created   = DateTime.Now,
                Published = DateTime.Now,
                ID        = Guid.NewGuid(),
                Creator   = new Oxite.Models.User()
                {
                    DisplayName = "Test User", Name = "user"
                },
                BodyShort = "Excerpt",
                Slug      = "Slug"
            };
            fakePost.Area = new Oxite.Models.Area()
            {
                ID = Guid.NewGuid(), Name = "Blog1", DisplayName = "Blog One"
            };
            fakePost.Tags =
                new List <Oxite.Models.Tag>(new[]
            {
                new Oxite.Models.Tag()
                {
                    ID = Guid.NewGuid(), Name = "Tag1"
                },
                new Oxite.Models.Tag()
                {
                    ID = Guid.NewGuid(), Name = "Tag2"
                }
            });

            postService.AddedPosts.Add(fakePost);

            MetaWeblogAPI service = new MetaWeblogAPI(postService, null, userService, null, null);

            Post post = service.GetPost(fakePost.ID.ToString(), "test", "test");

            Assert.NotNull(post);
            Assert.Equal(fakePost.Title, post.title);
            Assert.Equal(fakePost.Body, post.description);
            Assert.Equal(fakePost.Created, post.dateCreated);
            Assert.Equal(fakePost.Creator.ID, new Guid(post.userid));
            Assert.Equal(fakePost.BodyShort, post.mt_excerpt);
            Assert.Equal(fakePost.Slug, post.mt_basename);
            foreach (string category in post.categories)
            {
                Assert.Contains <string>(category, fakePost.Tags.Select(t => t.Name));
            }
        }
Ejemplo n.º 7
0
        public bool DeletePost(string appkey, string postid, string username, string password, bool publish)
        {
            getUser(username, password);

            Oxite.Models.Post post = postService.GetPost(new Guid(postid));

            postService.RemovePost(post);

            return(true);
        }
Ejemplo n.º 8
0
        public Post GetPost(string postId, string username, string password)
        {
            getUser(username, password);

            Oxite.Models.Post post = postService.GetPost(new Guid(postId));

            if (post == null)
            {
                throw new ArgumentOutOfRangeException();
            }

            return(ModelPostToServicePost(post));
        }
Ejemplo n.º 9
0
 private static Post ModelPostToServicePost(Oxite.Models.Post post)
 {
     return(new Post
     {
         categories = post.Tags.Select(t => t.Name).ToArray(),
         dateCreated = post.Created.Value,
         description = post.Body,
         mt_basename = post.Slug,
         mt_excerpt = post.BodyShort,
         postid = post.ID.ToString(),
         title = post.Title,
         userid = post.Creator.ID.ToString()
     });
 }
        public void GetRecentPostsReturnsNumberOfPostsInBlog()
        {
            FakeUserService userService = new FakeUserService();
            FakePostService postService = new FakePostService();

            Guid areaID = Guid.NewGuid();

            Oxite.Models.Post post1 = new Oxite.Models.Post()
            {
                ID      = Guid.NewGuid(),
                Creator = new Oxite.Models.User(),
                Area    = new Oxite.Models.Area()
                {
                    ID = areaID
                },
                Slug    = "Post1",
                Created = DateTime.Now,
                Tags    = new List <Oxite.Models.Tag>()
            };
            Oxite.Models.Post post2 = new Oxite.Models.Post()
            {
                ID      = Guid.NewGuid(),
                Creator = new Oxite.Models.User(),
                Area    = new Oxite.Models.Area()
                {
                    ID = areaID
                },
                Slug    = "Post2",
                Created = DateTime.Now,
                Tags    = new List <Oxite.Models.Tag>()
            };

            postService.AddedPosts.AddRange(new[] { post1, post2 });

            MetaWeblogAPI service = new MetaWeblogAPI(postService, null, userService, null, null);

            Post[] posts = service.GetRecentPosts(areaID.ToString(), "test", "test", 2);

            Assert.NotNull(posts);
            Assert.Equal(2, posts.Length);
            Assert.Contains <Guid>(post1.ID, posts.Select(p => new Guid(p.postid)));
            Assert.Contains <Guid>(post2.ID, posts.Select(p => new Guid(p.postid)));
        }
        public void EditPostEditsTagList()
        {
            FakePostService postService = new FakePostService();
            FakeUserService userService = new FakeUserService();
            Guid            postID      = Guid.NewGuid();

            postService.AddedPosts.Add(new Oxite.Models.Post()
            {
                ID        = postID,
                Title     = "PreTitle",
                Body      = "PreBody",
                BodyShort = "PreBodyShort",
                Tags      =
                    new List <Oxite.Models.Tag>(new Oxite.Models.Tag[]
                {
                    new Oxite.Models.Tag()
                    {
                        Name = "Old1"
                    },
                    new Oxite.Models.Tag()
                    {
                        Name = "Both1"
                    }
                })
            });

            Post newPost = new Post()
            {
                categories  = new[] { "New1", "Both1" },
                title       = "PostTitle",
                description = "PostDescription",
                mt_excerpt  = "PostBodyShort"
            };

            MetaWeblogAPI service = new MetaWeblogAPI(postService, null, userService, null, null);

            service.EditPost(postID.ToString(), "test", "test", newPost, false);

            Oxite.Models.Post edited = postService.AddedPosts[0];
            Assert.Equal(2, edited.Tags.Count());
            Assert.Contains("New1", edited.Tags.Select(t => t.Name));
            Assert.Contains("Both1", edited.Tags.Select(t => t.Name));
        }
        public void NewPostSetsCreatorToUser()
        {
            FakePostService postService = new FakePostService();
            FakeAreaService areaService = new FakeAreaService();
            FakeTagService  tagService  = new FakeTagService();
            FakeUserService userService = new FakeUserService();
            Guid            areaID      = Guid.NewGuid();

            areaService.StoredAreas.Add("test", new Oxite.Models.Area()
            {
                ID = areaID
            });

            MetaWeblogAPI service = new MetaWeblogAPI(postService, areaService, userService, null, null);

            service.NewPost(areaID.ToString(), "test", "test", new Post(), false);

            Oxite.Models.Post newPost = postService.AddedPosts[0];
            Assert.Equal("test", newPost.Creator.Name);
        }
Ejemplo n.º 13
0
        public string NewPost(string blogId, string username, string password, Post post, bool publish)
        {
            Oxite.Models.User user = getUser(username, password);

            Oxite.Models.Area area = areaService.GetArea(new Guid(blogId));

            Oxite.Models.Post newPost = new Oxite.Models.Post
            {
                Title     = post.title,
                Body      = post.description,
                Created   = post.dateCreated == default(DateTime) ? DateTime.Now : post.dateCreated,
                Slug      = string.IsNullOrEmpty(post.mt_basename) ? expressions.Slugify(post.title) : post.mt_basename,
                BodyShort = post.mt_excerpt,
                Creator   = user,
                State     = Oxite.Models.EntityState.Normal
            };

            if (publish)
            {
                newPost.Published = DateTime.Now;
            }

            if (post.categories != null)
            {
                newPost.Tags = new List <Oxite.Models.Tag>(post.categories.Select(s => new Oxite.Models.Tag()
                {
                    Name = s
                }));
            }

            postService.AddPost(newPost);

            Oxite.Models.Post createdPost = postService.GetPost(new Oxite.Models.PostAddress(area.Name, newPost.Slug));

            return(createdPost.ID.ToString());
        }