package org.lognavigator.bean;
import java.io.InputStream;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import org.junit.Test;
import org.lognavigator.bean.LogAccessConfig;
import org.lognavigator.bean.LogNavigatorConfig;
import org.lognavigator.bean.LogAccessConfig.LogAccessType;
import static org.junit.Assert.*;
public class LogNavigatorConfigTest {
@Test
public void testXmlMarshalling() throws Exception {
// Create jaxb data
LogNavigatorConfig logNavigatorConfig = new LogNavigatorConfig();
logNavigatorConfig.getLogAccessConfigs().add(new LogAccessConfig("log-access1", LogAccessType.LOCAL, "localhost", "/logs", "Fabien"));
logNavigatorConfig.getLogAccessConfigs().add(new LogAccessConfig("log-access2", LogAccessType.LOCAL, "localhost", "/logs", "Fabien"));
// Marshall to xml
JAXBContext jaxbContext = JAXBContext.newInstance(LogNavigatorConfig.class);
StringWriter xmlOutput = new StringWriter();
jaxbContext.createMarshaller().marshal(logNavigatorConfig, xmlOutput);
System.out.println(xmlOutput);
// Assertions
String expectedXml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><lognavigator-config><log-access-config id=\"log-access1\" type=\"LOCAL\" user=\"Fabien\" host=\"localhost\" directory=\"/logs\" authorized-users=\"*\" authorized-roles=\"*\" trust=\"false\"/><log-access-config id=\"log-access2\" type=\"LOCAL\" user=\"Fabien\" host=\"localhost\" directory=\"/logs\" authorized-users=\"*\" authorized-roles=\"*\" trust=\"false\"/></lognavigator-config>";
if (System.getProperty("java.version").startsWith("1.6.")) {
expectedXml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><lognavigator-config><log-access-config trust=\"false\" authorized-roles=\"*\" authorized-users=\"*\" directory=\"/logs\" host=\"localhost\" user=\"Fabien\" type=\"LOCAL\" id=\"log-access1\"/><log-access-config trust=\"false\" authorized-roles=\"*\" authorized-users=\"*\" directory=\"/logs\" host=\"localhost\" user=\"Fabien\" type=\"LOCAL\" id=\"log-access2\"/></lognavigator-config>";
}
assertEquals(expectedXml, xmlOutput.toString());
}
@Test
public void testXmlUnmarshalling() throws Exception {
// Get XML stream
InputStream xmlInputStream = getClass().getResourceAsStream("/lognavigator-with-authorized-users.xml");
// Unmarshall to bean
JAXBContext jaxbContext = JAXBContext.newInstance(LogNavigatorConfig.class);
LogNavigatorConfig logNavigatorConfig = (LogNavigatorConfig) jaxbContext.createUnmarshaller().unmarshal(xmlInputStream);
// Assertions
assertNotNull(logNavigatorConfig);
LogAccessConfig firstLogAccessConfig = logNavigatorConfig.getLogAccessConfigs().iterator().next();
assertEquals("config-with-users", firstLogAccessConfig.getId());
assertEquals(LogAccessType.LOCAL, firstLogAccessConfig.getType());
assertEquals("target/test-classes/files", firstLogAccessConfig.getDirectory());
assertEquals(2, firstLogAccessConfig.getAuthorizedUsers().size());
}
}