package com.limegroup.gnutella.metadata;
import java.io.*;
import java.util.*;
import junit.framework.Test;
import com.limegroup.gnutella.*;
import com.limegroup.gnutella.util.*;
public final class WRMXMLTest extends BaseTestCase {
public WRMXMLTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(WRMXMLTest.class);
}
/**
* Runs this test individually.
*/
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
// The XML should look something like:
//<WRMHEADER>
// <DATA>
// <SECURITYVERSION>XXXX</SECURITYVERSION>
// <CID>XXXX</CID>
// <LAINFO>XXXX</LAINFO>
// <KID>XXXX</KID>
// <CHECKSUM>XXXX</CHECKSUM>
// </DATA>
// <SIGNATURE>
// <HASHALGORITHM type="XXXX"></HASHALGORITHM>
// <SIGNALGORITHM type="XXXX"></SIGNALGORITHM>
// <VALUE>XXXX</VALUE>
// </SIGNATURE>
//</WRMHEADER>
public void testNormalParsing() {
WRMXML data = new WRMXML(
"<WRMHEADER>" +
"<DATA>" +
"<SECURITYVERSION>mySecurityVersion</SECURITYVERSION>" +
"<CID>myCID</CID>" +
"<LAINFO>myLAINFO</LAINFO>" +
"<KID>myKid</KID>" +
"<CHECKSUM>myChecksum</CHECKSUM>" +
"</DATA>" +
"<SIGNATURE>" +
"<HASHALGORITHM type=\"sha1\"></HASHALGORITHM>" +
"<SIGNALGORITHM type=\"msdrm\"></SIGNALGORITHM>" +
"<VALUE>myValue</VALUE>" +
"</SIGNATURE>" +
"</WRMHEADER>"
);
assertTrue(data.isValid());
assertEquals("mySecurityVersion", data.getSecurityVersion());
assertEquals("myCID", data.getCID());
assertEquals("myLAINFO", data.getLAInfo());
assertEquals("myKid", data.getKID());
assertEquals("myChecksum", data.getChecksum());
assertEquals("sha1", data.getHashAlgorithm());
assertEquals("msdrm", data.getSignAlgorithm());
assertEquals("myValue", data.getSignatureValue());
}
public void testOtherData() {
WRMXML data = new WRMXML(
"<WRMHEADER>" +
"<DATA>" +
"<SECURITYVERSION ignored=\"data\">mySecurityVersion</SECURITYVERSION>" +
"<CID>myCID</CID>" +
"<LAINFO>myLAINFO</LAINFO>" +
"<KID>myKid</KID>" +
"<CHECKSUM>myChecksum</CHECKSUM>" +
"<MyExtraElement attr=\"value\"/>" +
"</DATA>" +
"<STUFF><DATA>HELLO</DATA></STUFF>" +
"<SIGNATURE>" +
"<HASHALGORITHM type=\"sha1\" info=\"alive\">Dead</HASHALGORITHM>" +
"<SIGNALGORITHM type=\"msdrm\"></SIGNALGORITHM>" +
"<VALUE>myValue</VALUE>" +
"<KEY>myKey</KEY>" +
"</SIGNATURE>" +
"</WRMHEADER>"
);
assertTrue(data.isValid());
assertEquals("mySecurityVersion", data.getSecurityVersion());
assertEquals("myCID", data.getCID());
assertEquals("myLAINFO", data.getLAInfo());
assertEquals("myKid", data.getKID());
assertEquals("myChecksum", data.getChecksum());
assertEquals("sha1", data.getHashAlgorithm());
assertEquals("msdrm", data.getSignAlgorithm());
assertEquals("myValue", data.getSignatureValue());
}
public void testMalformedXML() {
WRMXML data = new WRMXML("asoihtoi4h4taiohb,mndt43lkntohbadofih1o;iht");
assertFalse(data.isValid());
}
public void testNotValidData() {
WRMXML data = new WRMXML(
"<WRMHEADER>" +
"<DATA>" +
"<SECURITYVERSION ignored=\"data\">mySecurityVersion</SECURITYVERSION>" +
"<CID>myCID</CID>" +
"<LAINFO>myLAINFO</LAINFO>" +
"<KID>myKid</KID>" +
"<CHECKSUM>myChecksum</CHECKSUM>" +
"<MyExtraElement attr=\"value\"/>" +
"</DATA>" +
"<STUFF><DATA>HELLO</DATA></STUFF>" +
"</WRMHEADER>"
);
assertFalse(data.isValid());
}
public void testBareMinimum() {
WRMXML data = new WRMXML(
"<WRMHEADER>" +
"<DATA>" +
"<LAINFO>myLAINFO</LAINFO>" +
"</DATA>" +
"<SIGNATURE>" +
"<HASHALGORITHM type=\"sha1\"></HASHALGORITHM>" +
"<SIGNALGORITHM type=\"msdrm\"></SIGNALGORITHM>" +
"<VALUE>myValue</VALUE>" +
"</SIGNATURE>" +
"</WRMHEADER>"
);
assertTrue(data.isValid());
assertEquals(null, data.getSecurityVersion());
assertEquals(null, data.getCID());
assertEquals("myLAINFO", data.getLAInfo());
assertEquals(null, data.getKID());
assertEquals(null, data.getChecksum());
assertEquals("sha1", data.getHashAlgorithm());
assertEquals("msdrm", data.getSignAlgorithm());
assertEquals("myValue", data.getSignatureValue());
}
}