⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atomservlettest.java

📁 这个weblogging 设计得比较精巧
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package org.roller.presentation.atomapi;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.StringReader;import java.io.StringWriter;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;import javax.servlet.http.HttpServletResponse;import junit.framework.Test;import junit.framework.TestSuite;import org.jdom.Document;import org.jdom.input.SAXBuilder;import org.roller.RollerTestBase;import org.roller.model.WeblogManager;import org.roller.pojos.UserData;import org.roller.pojos.WeblogEntryData;import org.roller.pojos.WebsiteData;import org.roller.presentation.MockRollerContext;import org.roller.util.Utilities;import com.mockrunner.mock.web.ActionMockObjectFactory;import com.mockrunner.mock.web.MockHttpServletRequest;import com.mockrunner.mock.web.MockHttpServletResponse;import com.mockrunner.mock.web.MockServletContext;import com.mockrunner.mock.web.WebMockObjectFactory;import com.mockrunner.servlet.ServletTestModule;import com.mockrunner.struts.ActionTestModule;import com.sun.syndication.feed.atom.Content;import com.sun.syndication.feed.atom.Entry;/** * Test new Rome based Atom API implementation. * @author David M Johnson */public class AtomServletTest extends RollerTestBase{        private ActionMockObjectFactory mockFactory;    protected MockRollerContext rollerContext;    protected ActionTestModule strutsModule;    private ServletTestModule servletModule;    private static SimpleDateFormat df =        new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ssZ" );    protected WebMockObjectFactory getMockFactory()    {        if (mockFactory == null)         {            mockFactory = new ActionMockObjectFactory();        }        return mockFactory;    }        //------------------------------------------------------------------------------    /**      * Test get of introspection URI     */    public void testGetIntrospection() throws Exception    {        UserData user = (UserData)mUsersCreated.get(0);                                MockHttpServletRequest mockRequest = getMockFactory().getMockRequest();        mockRequest.addHeader("X-WSSE",                 generateWSSEHeader(user.getUserName(), user.getPassword()));        mockRequest.setContextPath("/atom");        mockRequest.setPathInfo("/" + user.getUserName());        getServletModule().doGet();        String output = getServletModule().getOutput();        SAXBuilder builder = new SAXBuilder();        Document doc = builder.build(new StringReader(output));                AtomService service = AtomService.documentToService(doc);        assertEquals(1, service.getWorkspaces().size());    }    //------------------------------------------------------------------------------    /**      * Test get of entries collection URI     */    public void testGetEntriesCollection() throws Exception    {        UserData user = (UserData)mUsersCreated.get(0);                                // get entries collection        MockHttpServletRequest mockRequest = getMockFactory().getMockRequest();        mockRequest.addHeader("X-WSSE",                 generateWSSEHeader(user.getUserName(), user.getPassword()));        mockRequest.setContextPath("/atom");        mockRequest.setPathInfo("/" + user.getUserName() + "/entries");        getServletModule().doGet();                // assert that we got 20 entries        String output = getServletModule().getOutput();        SAXBuilder builder = new SAXBuilder();        Document doc = builder.build(new StringReader(output));        AtomCollection col = AtomCollection.documentToCollection(doc);        assertEquals(20, col.getMembers().size());                // use collection next URI to get next batch of entries        resetMocks();        String[] next = Utilities.stringToStringArray(col.getNext(), "/");                mockRequest = getMockFactory().getMockRequest();        mockRequest.addHeader("X-WSSE",             generateWSSEHeader(user.getUserName(), user.getPassword()));        mockRequest.setContextPath("/atom");        mockRequest.setPathInfo(            "/" + user.getUserName() + "/entries/" + next[next.length-1]);        getServletModule().doGet();        // assert that we got another 20 entries        output = getServletModule().getOutput();        doc = builder.build(new StringReader(output));        col = AtomCollection.documentToCollection(doc);        assertEquals(10, col.getMembers().size());       }    //------------------------------------------------------------------------------    /**      * Test get of entries collection URI with a range     */    public void testGetEntriesCollectionRange() throws Exception    {        UserData user = (UserData)mUsersCreated.get(0);                     Date end = new Date(); // now         Calendar cal = Calendar.getInstance();        cal.setTime(end);        cal.add(Calendar.DATE, -30);        Date start = cal.getTime(); // one day ago        String startString = df.format(start);        String endString = df.format(end);                // get entries collection        MockHttpServletRequest mockRequest = getMockFactory().getMockRequest();        mockRequest.addHeader("X-WSSE",             generateWSSEHeader(user.getUserName(), user.getPassword()));        mockRequest.addHeader("Range",            "updated=" + startString + "/" + endString);        mockRequest.setContextPath("/atom");        mockRequest.setPathInfo("/" + user.getUserName() + "/entries");        getServletModule().doGet();                // assert that we got 20 entries        String output = getServletModule().getOutput();        SAXBuilder builder = new SAXBuilder();        Document doc = builder.build(new StringReader(output));        AtomCollection col = AtomCollection.documentToCollection(doc);        assertEquals(20, col.getMembers().size());                // use collection next URI to get next batch of entries        resetMocks();        String[] next = Utilities.stringToStringArray(col.getNext(), "/");                mockRequest = getMockFactory().getMockRequest();        mockRequest.addHeader("X-WSSE",             generateWSSEHeader(user.getUserName(), user.getPassword()));        mockRequest.setContextPath("/atom");        mockRequest.setPathInfo("/" + user.getUserName() + "/entries");        mockRequest.setQueryString("Range=updated="+startString+"/"+endString);        getServletModule().doGet();        // assert that we got another 20 entries        output = getServletModule().getOutput();        doc = builder.build(new StringReader(output));        col = AtomCollection.documentToCollection(doc);        assertEquals(20, col.getMembers().size());       }    //------------------------------------------------------------------------------    /**      * Test that GET on the EditURI returns an entry.     */    public void testGetEntry() throws Exception    {        UserData user = (UserData)mUsersCreated.get(0);        WebsiteData website =             getRoller().getUserManager().getWebsite(user.getUserName());        WeblogEntryData entry = (WeblogEntryData)             getRoller().getWeblogManager().getWeblogEntries(                website, null, null, null, WeblogManager.ALL, new Integer(1)).get(0);        Entry fetchedEntry = getEntry(user, entry.getId());        assertEquals(entry.getId(), fetchedEntry.getId());    }        //------------------------------------------------------------------------------    /**      * Test that POST to the PostURI returns an entry.     */    public void testPostEntry() throws Exception    {        UserData user = (UserData)mUsersCreated.get(0);                        // Create an entry in a feed, so Rome can handle it        Content content = new Content();        content.setMode(Content.ESCAPED);        content.setValue("test entry text");        List contents = new ArrayList();        contents.add(content);        Entry entry = new Entry();        entry.setTitle("test entry title");        entry.setContents(contents);                StringWriter entryWriter = new StringWriter();        AtomServlet.serializeEntry(entry, entryWriter);                MockHttpServletRequest mockRequest = getMockFactory().getMockRequest();        mockRequest.setContextPath("/atom");        mockRequest.setPathInfo(user.getUserName() + "/entries/");        mockRequest.addHeader("X-WSSE",                 generateWSSEHeader(user.getUserName(), user.getPassword()));        mockRequest.setBodyContent(entryWriter.toString());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -