@Test
public void testCreateAndUpdateAndDeletePackageFromAtom() throws Exception {
//Test create
Abdera abdera = new Abdera();
AbderaClient client = new AbderaClient(abdera);
Entry entry = abdera.newEntry();
entry.setTitle("testCreatePackageFromAtom");
entry.setSummary("desc for testCreatePackageFromAtom");
ClientResponse resp = client.post(generateBaseUrl() + "/packages", entry);
//System.out.println(GetContent(resp.getInputStream()));
assertEquals(ResponseType.SUCCESS, resp.getType());
Document<Entry> doc = resp.getDocument();
Entry returnedEntry = doc.getRoot();
assertEquals("/packages/testCreatePackageFromAtom", returnedEntry.getBaseUri().getPath());
assertEquals("testCreatePackageFromAtom", returnedEntry.getTitle());
assertEquals("desc for testCreatePackageFromAtom", returnedEntry.getSummary());
//Test update package
Entry e = abdera.newEntry();
e.setTitle("testUpdatePackageFromAtom");
org.apache.abdera.model.Link l = abdera.getNewFactory().newLink();
l.setHref(generateBaseUrl() + "/packages/" + "testCreatePackageFromAtom");
l.setRel("self");
e.addLink(l);
e.setSummary("updated desc for testCreatePackageFromAtom");
e.addAuthor("Test McTesty");
resp = client.put(generateBaseUrl() + "/packages/testCreatePackageFromAtom", e);
assertEquals(ResponseType.SUCCESS, resp.getType());
//NOTE: could not figure out why the code below always returns -1 as the ResponseCode.
/* URL url = new URL(generateBaseUrl() + "/packages/testCreatePackageFromAtom");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("PUT");
conn.setRequestProperty("Content-type", MediaType.APPLICATION_ATOM_XML);
conn.setRequestProperty("Content-Length", Integer.toString(e.toString().getBytes().length));
conn.setDoOutput(true);
e.writeTo(conn.getOutputStream());
assertEquals(204, conn.getResponseCode());
conn.disconnect(); */
URL url1 = new URL(generateBaseUrl() + "/packages/testCreatePackageFromAtom");
HttpURLConnection conn1 = (HttpURLConnection)url1.openConnection();
conn1.setRequestMethod("GET");
conn1.setRequestProperty("Accept", MediaType.APPLICATION_ATOM_XML);
conn1.connect();
//System.out.println(GetContent(conn));
assertEquals (200, conn1.getResponseCode());
assertEquals(MediaType.APPLICATION_ATOM_XML, conn1.getContentType());
InputStream in = conn1.getInputStream();
assertNotNull(in);
doc = abdera.getParser().parse(in);
entry = doc.getRoot();
assertEquals("/packages/testCreatePackageFromAtom", entry.getBaseUri().getPath());
assertEquals("testCreatePackageFromAtom", entry.getTitle());
assertTrue(entry.getPublished() != null);
assertEquals("updated desc for testCreatePackageFromAtom", entry.getSummary());
//Roll back changes.
resp = client.delete(generateBaseUrl() + "/packages/testCreatePackageFromAtom");
assertEquals(ResponseType.SUCCESS, resp.getType());
//Verify the package is indeed deleted
URL url2 = new URL(generateBaseUrl() + "/packages/testCreatePackageFromAtom");
HttpURLConnection conn2 = (HttpURLConnection)url2.openConnection();