/* * Copyright 2007 Sun Microsystems, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.rometools.propono.blogclient; import java.io.File; import java.util.Iterator; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.junit.Ignore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.rometools.propono.blogclient.Blog.Collection; import com.rometools.propono.utils.Utilities; import com.rometools.rome.io.impl.Atom10Parser; /** * Tests Atom and MetaWeblog API CRUD via BlogClient. Exclude this from automated tests because it * requires a live blog server. */ @Ignore public class SimpleBlogClientTest extends TestCase { private static final Logger LOG = LoggerFactory.getLogger(SimpleBlogClientTest.class); private final String metaweblogEndpoint = "http://localhost:8080/roller/roller-services/xmlrpc"; // private String atomEndpoint = "http://localhost:8080/roller/roller-services/app"; private final String atomEndpoint = "http://localhost:8080/sample-atomserver/app"; // private final String endpoint = "http://localhost:8080/atom-fileserver/app"; private final String username = "admin"; private final String password = "admin"; public SimpleBlogClientTest(final String testName) { super(testName); } @Override protected void setUp() throws Exception { } @Override protected void tearDown() throws Exception { } public void testBlogClientAtom() throws Exception { testBlogClient("atom", atomEndpoint); } public void testBlogClientMetaWeblog() throws Exception { testBlogClient("metaweblog", metaweblogEndpoint); } public void testBlogClient(final String type, final String endpoint) throws Exception { final BlogConnection conn = BlogConnectionFactory.getBlogConnection(type, endpoint, username, password); int blogCount = 0; for (final Blog blog : conn.getBlogs()) { LOG.debug(blog.getName()); blogCount++; } assertTrue(blogCount > 0); } public void testPostAndDeleteAtom() throws Exception { testPostAndDelete("atom", atomEndpoint); } public void testPostAndDeleteMetaWeblog() throws Exception { testPostAndDelete("metaweblog", metaweblogEndpoint); } public void testMediaPostAtom() throws Exception { testMediaPost("atom", atomEndpoint); } public void testMediaPostMetaWeblog() throws Exception { testMediaPost("metaweblog", metaweblogEndpoint); } public void testPostAndDelete(final String type, final String endpoint) throws Exception { final BlogConnection conn = BlogConnectionFactory.getBlogConnection(type, endpoint, username, password); assertNotNull(conn); final String title1 = "Test content"; final String content1 = "Test content"; final Blog blog = conn.getBlogs().get(0); BlogEntry entry = blog.newEntry(); entry.setTitle(title1); entry.setContent(new BlogEntry.Content(content1)); entry.save(); final String token = entry.getToken(); assertNotNull(token); entry = blog.getEntry(token); assertEquals(title1, entry.getTitle()); assertEquals(content1, entry.getContent().getValue()); assertNotNull(entry); entry.delete(); entry = null; boolean notFound = false; try { entry = blog.getEntry(token); } catch (final Exception e) { notFound = true; } assertTrue(notFound); } /** * Post media entry to every media colletion avialable on server, then cleanup. */ public void testMediaPost(final String type, final String endpoint) throws Exception { final BlogConnection conn = BlogConnectionFactory.getBlogConnection(type, endpoint, username, password); assertNotNull(conn); assertTrue(!conn.getBlogs().isEmpty()); int count = 0; for (final Blog blog2 : conn.getBlogs()) { final Blog blog = blog2; assertNotNull(blog.getName()); for (final Collection collection : blog.getCollections()) { final Blog.Collection col = collection; if (col.accepts("image/gif")) { // we found a collection that accepts GIF, so post one final BlogResource m1 = col.newResource("duke" + count, "image/gif", Utilities.getBytesFromFile(new File("test/testdata/duke-wave-shadow.gif"))); col.saveResource(m1); if ("atom".equals(type)) { // additional tests for Atom // entry should now exist on server final BlogResource m2 = (BlogResource) blog.getEntry(m1.getToken()); assertNotNull(m2); // remove entry m2.delete(); // fetching entry now should result in exception boolean failed = false; try { blog.getEntry(m1.getToken()); } catch (final Exception e) { failed = true; } assertTrue(failed); } count++; } } } assertTrue(count > 0); } public void testEntryIterationAtom() throws Exception { testEntryIteration("atom", atomEndpoint); } public void testEntryIterationMetaWeblog() throws Exception { testEntryIteration("metaweblog", metaweblogEndpoint); } public void testEntryIteration(final String type, final String endpoint) throws Exception { final BlogConnection conn = BlogConnectionFactory.getBlogConnection(type, endpoint, username, password); assertNotNull(conn); final String title1 = "Test content"; final String content1 = "Test content"; final Blog blog = conn.getBlogs().get(0); for (int i = 0; i < 10; i++) { final BlogEntry entry = blog.newEntry(); entry.setTitle(title1); entry.setContent(new BlogEntry.Content(content1)); entry.save(); final String token = entry.getToken(); assertTrue(Atom10Parser.isAbsoluteURI(token)); assertNotNull(token); } for (final Iterator<BlogEntry> it = blog.getEntries(); it.hasNext();) { final BlogEntry blogEntry = it.next(); assertTrue(Atom10Parser.isAbsoluteURI(blogEntry.getToken())); blogEntry.delete(); } } public static Test suite() { return new TestSuite(SimpleBlogClientTest.class); } }