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 WeedInfoTest extends BaseTestCase { public WeedInfoTest(String name) { super(name); } public static Test suite() { return buildTestSuite(WeedInfoTest.class); } /** * Runs this test individually. */ public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } //The XML should look something like: //<WRMHEADER version="2.0.0.0"> // <DATA> // <VersionID>0000000000001370651</VersionID> // <ContentID>214324</ContentID> // <ice9>ice9</ice9> // <License_Date></License_Date> // <License_Distributor_URL>http://www.shmedlic.com/</License_Distributor_URL> // <License_Distributor>Shared Media Licensing, Inc.</License_Distributor> // <Publish_Date>4/14/2005 4:13:50 PM</Publish_Date> // <Content_Distributor_URL>http://www.presidentsrock.com</Content_Distributor_URL> // <Content_Distributor>PUSA Inc.</Content_Distributor> // <Price>0.9900</Price> // <Collection>Love Everybody</Collection> // <Description></Description> // <Copyright>2004 PUSA Inc.</Copyright> // <Artist_URL>http://www.presidentsrock.com</Artist_URL> // <Author>The Presidents of the United States of America</Author> // <Title>Love Everybody</Title> // <SECURITYVERSION>2.2</SECURITYVERSION> // <CID>o9miGn4Z0k2gUeHhN9VxTA==</CID> // <LAINFO>http://www.shmedlic.com/license/3play.aspx</LAINFO> // <KID>ERVOYkZ8qkWZ75OQw9ihnA==</KID> // <CHECKSUM>t1ZpoYJF2w==</CHECKSUM> // </DATA> // <SIGNATURE> // <HASHALGORITHM type="SHA"></HASHALGORITHM> // <SIGNALGORITHM type="MSDRM"></SIGNALGORITHM> // <VALUE>XZkWZWCq919yum!bBGdxvnpiS38npAqAofxT8AkegyJ27zTlb9v4gA==</VALUE> // </SIGNATURE> //</WRMHEADER> public void testNormalParsing() { WRMXML xml = new WRMXML( "<WRMHEADER version=\"2.0.0.0\">" + "<DATA>" + "<VersionID>myVersionId</VersionID>" + "<ContentID>myContentId</ContentID>" + "<ice9>Cat's Cradle</ice9>" + "<License_Date>myLicense Date</License_Date>" + "<License_Distributor_URL>http://www.shmedlic.com/</License_Distributor_URL>" + "<License_Distributor>Shared Media Licensing, Inc.</License_Distributor>" + "<Publish_Date>myPublishDate</Publish_Date>" + "<Content_Distributor_URL>myContentDistributorURL</Content_Distributor_URL>" + "<Content_Distributor>My Content Distributor</Content_Distributor>" + "<Price>Not Too Expensive</Price>" + "<Collection>A Collection</Collection>" + "<Description>A Description</Description>" + "<Copyright>2004 Me.</Copyright>" + "<Artist_URL>An Artist's URL</Artist_URL>" + "<Author>The Author</Author>" + "<Title>The Title</Title>" + "<SECURITYVERSION>Secure!</SECURITYVERSION>" + "<CID>asfoih</CID>" + "<LAINFO>http://www.shmedlic.com/license/3play.aspx</LAINFO>" + "<KID>hiofsa</KID>" + "<CHECKSUM>ahsifo</CHECKSUM>" + "</DATA>" + "<SIGNATURE>" + "<HASHALGORITHM type=\"SHA\"></HASHALGORITHM>" + "<SIGNALGORITHM type=\"MSDRM\"></SIGNALGORITHM>" + "<VALUE>A Value</VALUE>" + "</SIGNATURE>" + "</WRMHEADER>" ); assertTrue(xml.isValid()); WeedInfo weed = new WeedInfo(xml); assertTrue(weed.isValid()); assertEquals("Secure!", weed.getSecurityVersion()); assertEquals("asfoih", weed.getCID()); assertEquals("http://www.shmedlic.com/license/3play.aspx", weed.getLAInfo()); assertEquals("hiofsa", weed.getKID()); assertEquals("ahsifo", weed.getChecksum()); assertEquals("SHA", weed.getHashAlgorithm()); assertEquals("MSDRM", weed.getSignAlgorithm()); assertEquals("A Value", weed.getSignatureValue()); assertEquals("myVersionId", weed.getVersionId()); assertEquals("myContentId", weed.getContentId()); assertEquals("Cat's Cradle", weed.getIce9()); assertEquals("myLicense Date", weed.getLicenseDate()); assertEquals("http://www.shmedlic.com/", weed.getLicenseDistributorURL()); assertEquals("Shared Media Licensing, Inc.", weed.getLicenseDistributor()); assertEquals("myPublishDate", weed.getPublishDate()); assertEquals("myContentDistributorURL", weed.getContentDistrubutorURL()); assertEquals("My Content Distributor", weed.getContentDistributor()); assertEquals("Not Too Expensive", weed.getPrice()); assertEquals("A Collection", weed.getCollection()); assertEquals("A Description", weed.getDescription()); assertEquals("2004 Me.", weed.getCopyright()); assertEquals("An Artist's URL", weed.getArtistURL()); assertEquals("The Author", weed.getAuthor()); assertEquals("The Title", weed.getTitle()); } public void testBareMinimum() { WRMXML xml = new WRMXML( "<WRMHEADER version=\"2.0.0.0\">" + "<DATA>" + "<VersionID>myVersionId</VersionID>" + "<ContentID>myContentId</ContentID>" + "<License_Distributor_URL>http://www.shmedlic.com/</License_Distributor_URL>" + "<License_Distributor>Shared Media Licensing, Inc.</License_Distributor>" + "<LAINFO>http://www.shmedlic.com/license/3play.aspx</LAINFO>" + "</DATA>" + "<SIGNATURE>" + "<HASHALGORITHM type=\"SHA\"></HASHALGORITHM>" + "<SIGNALGORITHM type=\"MSDRM\"></SIGNALGORITHM>" + "<VALUE>A Value</VALUE>" + "</SIGNATURE>" + "</WRMHEADER>" ); assertTrue(xml.isValid()); WeedInfo weed = new WeedInfo(xml); assertTrue(weed.isValid()); assertEquals(null, weed.getSecurityVersion()); assertEquals(null, weed.getCID()); assertEquals("http://www.shmedlic.com/license/3play.aspx", weed.getLAInfo()); assertEquals(null, weed.getKID()); assertEquals(null, weed.getChecksum()); assertEquals("SHA", weed.getHashAlgorithm()); assertEquals("MSDRM", weed.getSignAlgorithm()); assertEquals("A Value", weed.getSignatureValue()); assertEquals("myVersionId", weed.getVersionId()); assertEquals("myContentId", weed.getContentId()); assertEquals(null, weed.getIce9()); assertEquals(null, weed.getLicenseDate()); assertEquals("http://www.shmedlic.com/", weed.getLicenseDistributorURL()); assertEquals("Shared Media Licensing, Inc.", weed.getLicenseDistributor()); assertEquals(null, weed.getPublishDate()); assertEquals(null, weed.getContentDistrubutorURL()); assertEquals(null, weed.getContentDistributor()); assertEquals(null, weed.getPrice()); assertEquals(null, weed.getCollection()); assertEquals(null, weed.getDescription()); assertEquals(null, weed.getCopyright()); assertEquals(null, weed.getArtistURL()); assertEquals(null, weed.getAuthor()); assertEquals(null, weed.getTitle()); } public void testRequirements() { // No versionID WRMXML xml = new WRMXML( "<WRMHEADER version=\"2.0.0.0\">" + "<DATA>" + "<ContentID>myContentId</ContentID>" + "<License_Distributor_URL>http://www.shmedlic.com/</License_Distributor_URL>" + "<License_Distributor>Shared Media Licensing, Inc.</License_Distributor>" + "<LAINFO>http://www.shmedlic.com/license/3play.aspx</LAINFO>" + "</DATA>" + "<SIGNATURE>" + "<HASHALGORITHM type=\"SHA\"></HASHALGORITHM>" + "<SIGNALGORITHM type=\"MSDRM\"></SIGNALGORITHM>" + "<VALUE>A Value</VALUE>" + "</SIGNATURE>" + "</WRMHEADER>" ); assertTrue(xml.isValid()); WeedInfo weed = new WeedInfo(xml); assertFalse(weed.isValid()); // No ContentID xml = new WRMXML( "<WRMHEADER version=\"2.0.0.0\">" + "<DATA>" + "<VersionID>myVersionId</VersionID>" + "<License_Distributor_URL>http://www.shmedlic.com/</License_Distributor_URL>" + "<License_Distributor>Shared Media Licensing, Inc.</License_Distributor>" + "<LAINFO>http://www.shmedlic.com/license/3play.aspx</LAINFO>" + "</DATA>" + "<SIGNATURE>" + "<HASHALGORITHM type=\"SHA\"></HASHALGORITHM>" + "<SIGNALGORITHM type=\"MSDRM\"></SIGNALGORITHM>" + "<VALUE>A Value</VALUE>" + "</SIGNATURE>" + "</WRMHEADER>" ); assertTrue(xml.isValid()); weed = new WeedInfo(xml); assertFalse(weed.isValid()); // Wrong URL xml = new WRMXML( "<WRMHEADER version=\"2.0.0.0\">" + "<DATA>" + "<VersionID>myVersionId</VersionID>" + "<ContentID>myContentId</ContentID>" + "<License_Distributor_URL>http://www.somewhereelse.com/</License_Distributor_URL>" + "<License_Distributor>Shared Media Licensing, Inc.</License_Distributor>" + "<LAINFO>http://www.shmedlic.com/license/3play.aspx</LAINFO>" + "</DATA>" + "<SIGNATURE>" + "<HASHALGORITHM type=\"SHA\"></HASHALGORITHM>" + "<SIGNALGORITHM type=\"MSDRM\"></SIGNALGORITHM>" + "<VALUE>A Value</VALUE>" + "</SIGNATURE>" + "</WRMHEADER>" ); assertTrue(xml.isValid()); weed = new WeedInfo(xml); assertFalse(weed.isValid()); // Wrong distributor xml = new WRMXML( "<WRMHEADER version=\"2.0.0.0\">" + "<DATA>" + "<VersionID>myVersionId</VersionID>" + "<ContentID>myContentId</ContentID>" + "<License_Distributor_URL>http://www.shmedlic.com/</License_Distributor_URL>" + "<License_Distributor>Greedy Media Licensing, Inc.</License_Distributor>" + "<LAINFO>http://www.shmedlic.com/license/3play.aspx</LAINFO>" + "</DATA>" + "<SIGNATURE>" + "<HASHALGORITHM type=\"SHA\"></HASHALGORITHM>" + "<SIGNALGORITHM type=\"MSDRM\"></SIGNALGORITHM>" + "<VALUE>A Value</VALUE>" + "</SIGNATURE>" + "</WRMHEADER>" ); assertTrue(xml.isValid()); weed = new WeedInfo(xml); assertFalse(weed.isValid()); // Wrong LAINFO xml = new WRMXML( "<WRMHEADER version=\"2.0.0.0\">" + "<DATA>" + "<VersionID>myVersionId</VersionID>" + "<ContentID>myContentId</ContentID>" + "<License_Distributor_URL>http://www.shmedlic.com/</License_Distributor_URL>" + "<License_Distributor>Shared Media Licensing, Inc.</License_Distributor>" + "<LAINFO>http://www.shmedlic.com/license/4play.aspx</LAINFO>" + "</DATA>" + "<SIGNATURE>" + "<HASHALGORITHM type=\"SHA\"></HASHALGORITHM>" + "<SIGNALGORITHM type=\"MSDRM\"></SIGNALGORITHM>" + "<VALUE>A Value</VALUE>" + "</SIGNATURE>" + "</WRMHEADER>" ); assertTrue(xml.isValid()); weed = new WeedInfo(xml); assertFalse(weed.isValid()); } }