/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.utils.incubator.xml; import java.util.List; import junit.framework.TestCase; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.InvalidXPathException; import org.dom4j.Node; /** * * Test cases for the class <code>XMLSupport</code>. * * @author Andre Nurzenski */ public class XMLSupportTest extends TestCase { /** * An XPath expression for the tests. */ private static final String TEST_XPATH_EXPRESSION_1 = "///blub[*]"; /** * An XPath expression for the tests. */ private static final String TEST_XPATH_EXPRESSION_2 = "/blub"; /** * An XPath expression for the tests. */ private static final String TEST_XPATH_EXPRESSION_3 = "//subject"; /** * An XPath expression for the tests. */ private static final String TEST_XPATH_EXPRESSION_4 = "/authorization"; /** * An XPath expression for the tests. */ private static final String TEST_XPATH_EXPRESSION_5 = "/authorization/subjects/subject" + "[@id='CN=Rainer Tester,OU=SC,O=DLR,L=Cologne,ST=NRW,C=DE']"; /** * An XPath expression for the tests. */ private static final String TEST_XPATH_EXPRESSION_6 = "//role[@id='org.cmt-net']"; /** * Message that indicates that a test has failed because no exception was thrown. */ private static final String EXCEPTION_MESSAGE = "Should raise an IllegalArgumentException."; /** * XML document for the tests. */ private Document myDocument = null; @Override protected void setUp() throws Exception { super.setUp(); myDocument = XMLIOSupport.readXML(getClass().getResourceAsStream("/authorization.xml")); } @Override protected void tearDown() throws Exception { super.tearDown(); myDocument = null; } /* * #################### Test for success #################### */ /** * * Test if the string value of a node can be retrieved. * * @throws DocumentException * if the specified arguments are illegal. * */ public void testGetNodeStringValueForSuccess() throws DocumentException { XMLSupport.getNodeStringValue(myDocument, TEST_XPATH_EXPRESSION_3); } /** * * Test if a node can be retrieved. * * @throws DocumentException * if the specified arguments are illegal. * */ public void testSelectNodeForSuccess() throws DocumentException { XMLSupport.selectNode(myDocument, TEST_XPATH_EXPRESSION_4); } /** * * Test if several nodes can be retrieved. * * @throws DocumentException * if the specified arguments are illegal. * */ public void testSelectNodesForSuccess() throws DocumentException { XMLSupport.selectNodes(myDocument, TEST_XPATH_EXPRESSION_3); } /* * #################### Test for failure #################### */ /** * * Test if an IllegalArgumentException is thrown. * * @throws DocumentException * if an exception occurs. * */ public void testGetNodeStringValueForFailure() throws DocumentException { try { XMLSupport.getNodeStringValue(myDocument, TEST_XPATH_EXPRESSION_1); fail(EXCEPTION_MESSAGE); } catch (InvalidXPathException e) { assertTrue(true); } try { XMLSupport.getNodeStringValue(myDocument, ""); fail(EXCEPTION_MESSAGE); } catch (IllegalArgumentException e) { assertTrue(true); } try { XMLSupport.getNodeStringValue(null, TEST_XPATH_EXPRESSION_2); fail(EXCEPTION_MESSAGE); } catch (IllegalArgumentException e) { assertTrue(true); } } /** * * Test if an IllegalArgumentException is thrown. * * @throws DocumentException * if an exception occurs. * */ public void testSelectNodeForFailure() throws DocumentException { try { XMLSupport.selectNode(myDocument, TEST_XPATH_EXPRESSION_1); fail(EXCEPTION_MESSAGE); } catch (InvalidXPathException e) { assertTrue(true); } try { XMLSupport.selectNode(myDocument, ""); fail(EXCEPTION_MESSAGE); } catch (IllegalArgumentException e) { assertTrue(true); } try { XMLSupport.selectNode(null, TEST_XPATH_EXPRESSION_2); fail(EXCEPTION_MESSAGE); } catch (IllegalArgumentException e) { assertTrue(true); } } /** * * Test if an IllegalArgumentException is thrown. * * @throws DocumentException * if an exception occurs. * */ public void testSelectNodesForFailure() throws DocumentException { try { XMLSupport.selectNodes(myDocument, TEST_XPATH_EXPRESSION_1); fail(EXCEPTION_MESSAGE); } catch (InvalidXPathException e) { assertTrue(true); } try { XMLSupport.selectNodes(myDocument, ""); fail(EXCEPTION_MESSAGE); } catch (IllegalArgumentException e) { assertTrue(true); } try { XMLSupport.selectNodes(null, TEST_XPATH_EXPRESSION_2); fail(EXCEPTION_MESSAGE); } catch (IllegalArgumentException e) { assertTrue(true); } } /* * #################### Test for sanity #################### */ /** * * Test if the string value of a node can be retrieved. * * @throws DocumentException * if the specified arguments are illegal. * */ public void testGetNodeStringValueForSanity() throws DocumentException { String nodeValue = XMLSupport.getNodeStringValue(myDocument, TEST_XPATH_EXPRESSION_6); assertNotNull(nodeValue); assertEquals("de\\.rcenvironment\\.ship:enter", nodeValue); } /** * * Test if a node can be retrieved. * * @throws DocumentException * if the specified arguments are illegal. * */ public void testSelectNodeForSanity() throws DocumentException { Node node = XMLSupport.selectNode(myDocument, TEST_XPATH_EXPRESSION_6); assertNotNull(node); assertTrue(node.hasContent()); } /** * * Test if several nodes can be retrieved. * * @throws DocumentException * if the specified arguments are illegal. * */ public void testSelectNodesForSanity() throws DocumentException { List<Node> list = XMLSupport.selectNodes(myDocument, TEST_XPATH_EXPRESSION_3); assertFalse(list.isEmpty()); assertEquals(10, list.size()); } }