📄 atomservlettest.java
字号:
getServletModule().doPost(); String output = getServletModule().getOutput(); Entry returnedEntry = AtomServlet.parseEntry(new StringReader(output)); assertEquals(returnedEntry.getTitle(), entry.getTitle()); MockHttpServletResponse mockResponse = getMockFactory().getMockResponse(); assertEquals(HttpServletResponse.SC_CREATED, mockResponse.getStatusCode()); assertTrue(mockResponse.containsHeader("Location")); getRoller().release(); resetMocks(); Entry fetchedEntry = getEntry(user, returnedEntry.getId()); assertEquals(returnedEntry.getId(), fetchedEntry.getId()); } //------------------------------------------------------------------------------ /** * Test that PUT on the EditURI updates an entry. */ public void testPutEntry() 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); // Fetch that entry using Atom Entry fetchedEntry = getEntry(user, entry.getId()); assertEquals(entry.getId(), fetchedEntry.getId()); // Make a change to the fetched entry fetchedEntry.setTitle("TEST TITLE"); // Use Atom PUT to update the entry StringWriter entryWriter = new StringWriter(); AtomServlet.serializeEntry(fetchedEntry, entryWriter); MockHttpServletRequest mockRequest2 = getMockFactory().getMockRequest(); mockRequest2.setContextPath("/atom"); mockRequest2.setPathInfo(user.getUserName() + "/entry/" + entry.getId()); mockRequest2.addHeader("X-WSSE", generateWSSEHeader(user.getUserName(), user.getPassword())); mockRequest2.setBodyContent(entryWriter.toString()); getServletModule().doPut(); getRoller().release(); resetMocks(); // Get the entry again to make sure the update was made Entry fetchedEntry2 = getEntry(user, entry.getId()); assertEquals(fetchedEntry.getTitle(), fetchedEntry2.getTitle()); } //------------------------------------------------------------------------------ /** * Test that DELETE on EditURI deletes entry. */ public void testDeleteEntry() 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()); // Use Atom DELETE to delete the entry MockHttpServletRequest mockRequest2 = getMockFactory().getMockRequest(); mockRequest2.setContextPath("/atom"); mockRequest2.setPathInfo(user.getUserName() + "/entry/" + entry.getId()); mockRequest2.addHeader("X-WSSE", generateWSSEHeader(user.getUserName(), user.getPassword())); getServletModule().doDelete(); getRoller().release(); resetMocks(); try { getEntry(user, entry.getId()).getId(); fail(); // no exception was thrown! } catch (Exception expected) {} } //------------------------------------------------------------------------------ private Entry getEntry(UserData user, String id) throws Exception { MockHttpServletRequest mockRequest = getMockFactory().getMockRequest(); mockRequest.setContextPath("/atom"); mockRequest.setPathInfo(user.getUserName() + "/entry/" + id); mockRequest.addHeader("X-WSSE", generateWSSEHeader(user.getUserName(), user.getPassword())); getServletModule().doGet(); String output = getServletModule().getOutput(); return AtomServlet.parseEntry(new StringReader(output)); } //------------------------------------------------------------------------------ public void testPostResource() throws Exception { UserData user = (UserData)mUsersCreated.get(0); // read test file into byte array String fileName = "rssbadge.gif"; File testFile = new File(fileName); FileInputStream fis = new FileInputStream(testFile); ByteArrayOutputStream baos = new ByteArrayOutputStream(); Utilities.copyInputToOutput(fis, baos); // post file as resource MockHttpServletRequest mockRequest = getMockFactory().getMockRequest(); mockRequest.setContextPath("/atom"); mockRequest.setPathInfo(user.getUserName() + "/resources/"); mockRequest.addHeader("Name", fileName); mockRequest.addHeader("X-WSSE", generateWSSEHeader(user.getUserName(), user.getPassword())); mockRequest.setBodyContent(baos.toByteArray()); getServletModule().doPost(); MockHttpServletResponse mockResponse = getMockFactory().getMockResponse(); assertEquals(HttpServletResponse.SC_CREATED, mockResponse.getStatusCode()); assertTrue(mockResponse.containsHeader("Location")); getRoller().release(); resetMocks(); } //------------------------------------------------------------------------------ public void setUp() throws Exception { super.setUp(); super.setUpTestWeblogs(); resetMocks(); MockServletContext ctx = getMockFactory().getMockServletContext(); ctx.setRealPath("/", ""); rollerContext = new MockRollerContext(); rollerContext.init(ctx); } //------------------------------------------------------------------------------ /** * Really really reset mocks. */ private void resetMocks() { mockFactory = null; getMockFactory().refresh(); getMockFactory().getMockRequest().clearParameters(); getMockFactory().getMockRequest().clearAttributes(); setServletModule(new ServletTestModule(getMockFactory())); getServletModule().setServlet( getServletModule().createServlet(AtomServlet.class)); getServletModule().clearOutput(); } //------------------------------------------------------------------------------ /** * @param servletModule The servletModule to set. */ protected void setServletModule(ServletTestModule servletModule) { this.servletModule = servletModule; } //------------------------------------------------------------------------------ /** * @return Returns the servletModule. */ protected ServletTestModule getServletModule() { return servletModule; } //------------------------------------------------------------------------------ public void tearDown() throws Exception { super.tearDown(); super.tearDownTestWeblogs(); } //------------------------------------------------------------------------ public static Test suite() { return new TestSuite(AtomServletTest.class); } //------------------------------------------------------------------------------ public static String generateWSSEHeader(String username, String password) throws Exception { byte[] nonceBytes = Long.toString(new Date().getTime()).getBytes(); String nonce = new String(WSSEUtilities.base64Encode(nonceBytes)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); String created = sdf.format(new Date()); String digest = WSSEUtilities.generateDigest( nonceBytes, created.getBytes("UTF-8"), password.getBytes("UTF-8")); StringBuffer header = new StringBuffer("UsernameToken Username=\""); header.append(username); header.append("\", "); header.append("PasswordDigest=\""); header.append(digest); header.append("\", "); header.append("Nonce=\""); header.append(nonce); header.append("\", "); header.append("Created=\""); header.append(created); header.append("\""); return header.toString(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -