package org.jboss.resteasy.test.providers;
import org.jboss.resteasy.plugins.providers.atom.Category;
import org.jboss.resteasy.plugins.providers.atom.app.AppCategories;
import org.junit.Assert;
import org.junit.Test;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.namespace.QName;
import java.io.StringReader;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
/**
* @tpSubChapter Providers
* @tpChapter Unit tests
* @tpTestCaseDetails Test for atom categories
* @tpSince RESTEasy 3.0.16
*/
public class AppCategoriesTest {
/**
* Taken from the RFC 5023 section-8.2.
* http://tools.ietf.org/html/rfc5023#section-7.1
*/
private static final String XML = "<?xml version=\"1.0\" ?>\n" +
"<app:categories xmlns:app=\"http://www.w3.org/2007/app\"\n" +
" xmlns:atom=\"http://www.w3.org/2005/Atom\" fixed=\"yes\"\n" +
" scheme=\"http://example.com/cats/big3\">\n" +
" <atom:category term=\"animal\" />\n" +
" <atom:category term=\"vegetable\" />\n" +
" <atom:category term=\"mineral\" />\n" +
"</app:categories>";
/**
* @tpTestDetails Marshall categories
* @tpSince RESTEasy 3.0.16
*/
@Test
public void marshallAppCategories() throws Exception {
JAXBContext jaxbContext = JAXBContext.newInstance("org.jboss.resteasy.test.providers.resource");
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE);
marshaller.setProperty(Marshaller.JAXB_ENCODING, StandardCharsets.UTF_8.name());
AppCategories appCategories = new AppCategories();
appCategories.setFixed(true);
appCategories.setScheme("http://example.com/cats/big3");
Category category1 = new Category();
category1.setTerm("animal");
appCategories.getCategory().add(category1);
Category category2 = new Category();
category2.setTerm("vegetable");
appCategories.getCategory().add(category2);
Category category3 = new Category();
category3.setTerm("mineral");
appCategories.getCategory().add(category3);
StringWriter writer = new StringWriter();
JAXBElement<AppCategories> element = new JAXBElement<AppCategories>(new QName("", "app:categories", "app"), AppCategories.class, appCategories);
marshaller.marshal(element, writer);
String actualXml = writer.toString();
Assert.assertTrue("Categories are missing", actualXml.contains("atom:category"));
}
/**
* @tpTestDetails Unmarshall categories
* @tpSince RESTEasy 3.0.16
*/
@Test
public void unmarshallAppCategories() throws Exception {
JAXBContext ctx = JAXBContext.newInstance(AppCategories.class);
Unmarshaller unmarshaller = ctx.createUnmarshaller();
AppCategories categories = (AppCategories) unmarshaller.unmarshal(new StringReader(XML));
Assert.assertTrue("Wrong categories", categories.isFixed());
}
}