package xades4j.xml.marshalling.algorithms;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.xml.security.utils.Constants;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import org.junit.Before;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import xades4j.algorithms.XPath2FilterTransform;
import xades4j.algorithms.XPath2FilterTransform.XPath2Filter;
import xades4j.utils.SignatureServicesTestBase;
/**
*
* @author Luís
*/
public class XPath2FilterTransformParamsMarshallerTest {
private Document doc;
private XPath2FilterTransformParamsMarshaller sut;
@Before
public void setUp() throws Exception {
doc = SignatureServicesTestBase.getNewDocument();
sut = new XPath2FilterTransformParamsMarshaller();
}
@Test
public void testMarshalXPathParametersWithNamespacePrefixes() throws Exception {
XPath2FilterTransform xpath = XPath2Filter
.intersect("foo:elem1")
.union("bar:elem2")
.withNamespace("foo", "http://test.xades4j/ns1")
.withNamespace("bar", "http://test.xades4j/ns2");
List<Node> params = sut.marshalParameters(xpath, doc);
assertEquals(2, params.size());
Set<Map.Entry<String, String>> namespaces = xpath.getNamespaces().entrySet();
for (Node paramNode : params)
{
for (Map.Entry<String, String> entry : namespaces)
{
String ns = ((Element)paramNode).getAttributeNS(Constants.NamespaceSpecNS, entry.getKey());
assertNotNull(ns);
assertFalse(ns.isEmpty());
assertEquals(entry.getValue(), ns);
}
}
}
}