/******************************************************************************* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.wink.jaxrs.test; import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; import org.apache.wink.client.ClientResponse; import org.apache.wink.client.Resource; import org.apache.wink.client.RestClient; import org.apache.wink.common.model.atom.AtomContent; import org.apache.wink.common.model.atom.AtomEntry; import org.apache.wink.common.model.atom.AtomFeed; import org.apache.wink.common.model.atom.AtomLink; import org.apache.wink.common.model.atom.AtomPerson; import org.apache.wink.common.model.atom.AtomText; import org.apache.wink.jaxrs.test.atom.BlogService; import org.apache.wink.test.integration.ServerEnvironmentInfo; public class AtomTest extends TestCase { private static String BASE_URI = ServerEnvironmentInfo.getBaseURI() + "/optionalproviders/blogservice"; static { if (ServerEnvironmentInfo.isRestFilterUsed()) { BASE_URI = ServerEnvironmentInfo.getBaseURI() + "/blogservice"; } } public void testAtomGETBlogs() throws Exception { RestClient client = new RestClient(); Resource resource = client.resource(BASE_URI); AtomFeed feed = resource.accept("application/atom+xml").get(AtomFeed.class); assertEquals(BlogService.ID, feed.getId()); assertEquals(BlogService.ID, feed.getTitle().getValue()); List<AtomLink> expectedLinks = new ArrayList<AtomLink>(); AtomLink link = new AtomLink(); link.setHref(BASE_URI + "/blogs/0"); expectedLinks.add(link); link = new AtomLink(); link.setHref(BASE_URI + "/blogs/1"); expectedLinks.add(link); List<AtomLink> actual = feed.getLinks(); assertEquals(expectedLinks.size(), actual.size()); for (int i = 0; i < actual.size(); ++i) assertEquals(expectedLinks.get(i).getHref(), actual.get(i).getHref()); } public void testAtomGETBlog() throws Exception { RestClient client = new RestClient(); Resource resource = client.resource(BASE_URI + "/blogs/0"); AtomFeed feed = resource.accept("application/atom+xml").get(AtomFeed.class); assertEquals("0", feed.getId()); assertEquals("wink-developer-blog", feed.getTitle().getValue()); List<AtomLink> expectedLinks = new ArrayList<AtomLink>(); AtomLink link = new AtomLink(); link.setHref(BASE_URI + "/blogs/0/entries/0"); expectedLinks.add(link); link = new AtomLink(); link.setHref(BASE_URI + "/blogs/0/entries/1"); expectedLinks.add(link); List<AtomLink> actual = feed.getLinks(); assertEquals(expectedLinks.size(), actual.size()); for (int i = 0; i < actual.size(); ++i) assertEquals(expectedLinks.get(i).getHref(), actual.get(i).getHref()); client = new RestClient(); resource = client.resource(BASE_URI + "/blogs/1"); feed = resource.accept("application/atom+xml").get(AtomFeed.class); assertEquals("1", feed.getId()); assertEquals("wink-user-blog", feed.getTitle().getValue()); expectedLinks = new ArrayList<AtomLink>(); link = new AtomLink(); link.setHref(BASE_URI + "/blogs/1/entries/2"); expectedLinks.add(link); actual = feed.getLinks(); assertEquals(expectedLinks.size(), actual.size()); for (int i = 0; i < actual.size(); ++i) assertEquals(expectedLinks.get(i).getHref(), actual.get(i).getHref()); } public void testAtomGETBlogEntry() throws Exception { RestClient client = new RestClient(); Resource resource = client.resource(BASE_URI + "/blogs/0/entries/0"); AtomEntry entry = resource.accept("application/atom+xml").get(AtomEntry.class); assertNotNull(entry.getAuthors()); assertEquals(1, entry.getAuthors().size()); AtomPerson author = entry.getAuthors().get(0); assertNotNull(author); assertEquals("Blog Admin", author.getName()); assertEquals("winkblogadmin@wink.blog.com", author.getEmail()); assertEquals("0", entry.getId()); assertEquals("Welcome to the wink developer blog!!", entry.getContent().getValue()); assertEquals("welcomePosting", entry.getTitle().getValue()); assertEquals(0, entry.getLinks().size()); resource = client.resource(BASE_URI + "/blogs/0/entries/1"); entry = resource.accept("application/atom+xml").get(AtomEntry.class); assertNotNull(entry.getAuthors()); assertEquals(1, entry.getAuthors().size()); author = entry.getAuthors().get(0); assertNotNull(author); assertEquals("Blog Admin", author.getName()); assertEquals("winkblogadmin@wink.blog.com", author.getEmail()); assertEquals("1", entry.getId()); assertEquals("Wink developers,\n\nInstructions on how to set up the wink development have been posted to the wink wiki. Happy wink development!\n\nw--inkblogadmin", entry.getContent().getValue()); assertEquals("Wink Development Env", entry.getTitle().getValue()); assertEquals(1, entry.getLinks().size()); List<AtomLink> comments = entry.getLinks(); assertEquals(BASE_URI + "/blogs/0/entries/1/comments/0", comments.get(0).getHref()); resource = client.resource(BASE_URI + "/blogs/1/entries/2"); entry = resource.accept("application/atom+xml").get(AtomEntry.class); assertNotNull(entry.getAuthors()); assertEquals(1, entry.getAuthors().size()); author = entry.getAuthors().get(0); assertNotNull(author); assertEquals("Eager User", author.getName()); assertEquals("winkuser@wink.blog.com", author.getEmail()); assertEquals("2", entry.getId()); assertEquals("I hear that the 0.1 SNAPSHOT will be available soon! I can't wait!!!", entry .getContent().getValue()); assertEquals("0.1 SNAPSHOT", entry.getTitle().getValue()); comments = entry.getLinks(); assertEquals(1, entry.getLinks().size()); assertEquals(BASE_URI + "/blogs/1/entries/2/comments/0", comments.get(0).getHref()); } public void testAtomGETBlogComments() throws Exception { RestClient client = new RestClient(); Resource resource = client.resource(BASE_URI + "/blogs/0/entries/1/comments/0"); AtomEntry entry = resource.accept("application/atom+xml").get(AtomEntry.class); assertNotNull(entry.getAuthors()); assertEquals(1, entry.getAuthors().size()); AtomPerson author = entry.getAuthors().get(0); assertNotNull(author); assertEquals("Wink Coder", author.getName()); assertEquals("winkcoder@mybusiness.com", author.getEmail()); assertEquals("Great!", entry.getTitle().getValue()); assertEquals("Instructions look great! Now I can begin Wink development!", entry .getContent().getValue()); resource = client.resource(BASE_URI + "/blogs/1/entries/2/comments/0"); entry = resource.accept("application/atom+xml").get(AtomEntry.class); assertNotNull(entry.getAuthors()); assertEquals(1, entry.getAuthors().size()); author = entry.getAuthors().get(0); assertNotNull(author); assertEquals("Blog Reader", author.getName()); assertEquals("blogreader@blogreaders.org", author.getEmail()); assertEquals("Good news", entry.getTitle().getValue()); assertEquals("This is good news. I'll be sure to try it out.", entry.getContent() .getValue()); } public void testAtomPOSTBlogEntry() throws Exception { RestClient client = new RestClient(); Resource resource = client.resource(BASE_URI + "/blogs/0/entries"); AtomEntry entry = new AtomEntry(); AtomPerson author = new AtomPerson(); author.setName("Blog Admin"); author.setEmail("winkblogadmin@wink.blog.com"); entry.getAuthors().add(author); AtomContent content = new AtomContent(); content.setType("text"); content.setValue("This is a new entry in the blog"); entry.setContent(content); entry.setTitle(new AtomText(("New blog entry"))); ClientResponse uri = resource.accept("application/atom+xml").contentType("application/atom+xml").post(entry); String location = uri.getHeaders().getFirst("Location"); assertEquals(BASE_URI + "/blogs/0/entries/3", location); resource = client.resource(location); AtomEntry postedEntry = resource.accept("application/atom+xml").get(AtomEntry.class); author = postedEntry.getAuthors().get(0); assertNotNull(author); assertEquals("Blog Admin", author.getName()); assertEquals("winkblogadmin@wink.blog.com", author.getEmail()); assertEquals("3", postedEntry.getId()); assertEquals("This is a new entry in the blog", entry.getContent().getValue()); assertEquals("New blog entry", entry.getTitle().getValue()); assertEquals(0, entry.getLinks().size()); resource = client.resource(BASE_URI + "/blogs/0"); AtomFeed feed = resource.accept("application/atom+xml").get(AtomFeed.class); List<AtomLink> expectedLinks = new ArrayList<AtomLink>(); AtomLink link = new AtomLink(); link.setHref(BASE_URI + "/blogs/0/entries/0"); expectedLinks.add(link); link = new AtomLink(); link.setHref(BASE_URI + "/blogs/0/entries/1"); expectedLinks.add(link); link = new AtomLink(); link.setHref(BASE_URI + "/blogs/0/entries/3"); expectedLinks.add(link); List<AtomLink> actual = feed.getLinks(); assertEquals(expectedLinks.size(), actual.size()); for (int i = 0; i < actual.size(); ++i) assertEquals(expectedLinks.get(i).getHref(), actual.get(i).getHref()); } public void testAtomPostBlogComment() throws Exception { RestClient client = new RestClient(); Resource resource = client.resource(BASE_URI + "/blogs/0/entries/1/comments"); AtomEntry entry = new AtomEntry(); AtomPerson author = new AtomPerson(); author.setName("Wink Coder"); author.setEmail("winkcoder@mybusiness.com"); entry.getAuthors().add(author); AtomContent content = new AtomContent(); content.setType("text"); content.setValue("I was able to set up the Wink development environment!"); entry.setContent(content); entry.setTitle(new AtomText(("Success"))); ClientResponse uri = resource.accept("application/atom+xml").contentType("application/atom+xml").post(entry); String location = uri.getHeaders().getFirst("Location"); assertEquals(BASE_URI + "/blogs/0/entries/1/comments/1", location); resource = client.resource(location); AtomEntry postedEntry = resource.accept("application/atom+xml").get(AtomEntry.class); author = postedEntry.getAuthors().get(0); assertNotNull(author); assertEquals("Wink Coder", author.getName()); assertEquals("winkcoder@mybusiness.com", author.getEmail()); assertEquals("I was able to set up the Wink development environment!", entry.getContent() .getValue()); assertEquals("Success", entry.getTitle().getValue()); resource = client.resource(BASE_URI + "/blogs/0/entries/1"); entry = resource.accept("application/atom+xml").get(AtomEntry.class); List<AtomLink> expectedLinks = new ArrayList<AtomLink>(); AtomLink link = new AtomLink(); link.setHref(BASE_URI + "/blogs/0/entries/1/comments/0"); expectedLinks.add(link); link = new AtomLink(); link.setHref(BASE_URI + "/blogs/0/entries/1/comments/1"); expectedLinks.add(link); List<AtomLink> actual = entry.getLinks(); assertEquals(expectedLinks.size(), actual.size()); for (int i = 0; i < actual.size(); ++i) assertEquals(expectedLinks.get(i).getHref(), actual.get(i).getHref()); } public void testAtomPUTBlogEntry() throws Exception { RestClient client = new RestClient(); Resource resource = client.resource(BASE_URI + "/blogs/0/entries/0"); AtomEntry entry = resource.accept("application/atom+xml").get(AtomEntry.class); AtomPerson author = entry.getAuthors().get(0); author.setName(author.getName() + "Updated"); author.setEmail(author.getEmail() + "Updated"); AtomText title = entry.getTitle(); title.setValue(title.getValue() + "Updated"); AtomContent content = entry.getContent(); content.setValue(content.getValue() + "Updated"); resource = client.resource(BASE_URI + "/blogs/0/entries/0"); AtomEntry updated = resource.accept("application/atom+xml").contentType("application/atom+xml") .put(AtomEntry.class, entry); assertNotNull(updated.getAuthors()); assertEquals(1, updated.getAuthors().size()); author = updated.getAuthors().get(0); assertNotNull(author); assertEquals("Blog AdminUpdated", author.getName()); assertEquals("winkblogadmin@wink.blog.comUpdated", author.getEmail()); assertEquals("0", updated.getId()); assertEquals("Welcome to the wink developer blog!!Updated", updated.getContent().getValue()); assertEquals("welcomePostingUpdated", updated.getTitle().getValue()); } public void testAtomPUTBlogComment() throws Exception { RestClient client = new RestClient(); Resource resource = client.resource(BASE_URI + "/blogs/0/entries/1/comments/0"); AtomEntry entry = resource.accept("application/atom+xml").get(AtomEntry.class); AtomPerson author = entry.getAuthors().get(0); author.setName(author.getName() + "Updated"); author.setEmail(author.getEmail() + "Updated"); AtomText title = entry.getTitle(); title.setValue(title.getValue() + "Updated"); AtomContent content = entry.getContent(); content.setValue(content.getValue() + "Updated"); resource = client.resource(BASE_URI + "/blogs/0/entries/1/comments/0"); AtomEntry updated = resource.accept("application/atom+xml").contentType("application/atom+xml") .put(AtomEntry.class, entry); assertNotNull(updated.getAuthors()); assertEquals(1, updated.getAuthors().size()); author = updated.getAuthors().get(0); assertNotNull(author); assertNotNull(author); assertEquals("Wink CoderUpdated", author.getName()); assertEquals("winkcoder@mybusiness.comUpdated", author.getEmail()); assertEquals("Great!Updated", entry.getTitle().getValue()); assertEquals("Instructions look great! Now I can begin Wink development!Updated", entry .getContent().getValue()); } }