package com.limegroup.gnutella.licenses;
import java.io.*;
import java.util.*;
import junit.framework.Test;
import com.limegroup.gnutella.*;
import com.limegroup.gnutella.util.*;
import com.limegroup.gnutella.metadata.*;
import com.limegroup.gnutella.xml.*;
public final class LicenseReadingTest extends BaseTestCase {
public LicenseReadingTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(LicenseReadingTest.class);
}
/**
* Runs this test individually.
*/
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public void testReadID3AndXML() throws Exception {
File f = CommonUtils.getResourceFile("com/limegroup/gnutella/licenses/cc1.mp3");
assertTrue(f.exists());
AudioMetaData amd = (AudioMetaData)MetaData.parse(f);
assertNotNull(amd);
boolean foundLicense = false;
List nvList = amd.toNameValueList();
for(Iterator i = nvList.iterator(); i.hasNext(); ) {
NameValue nv = (NameValue)i.next();
assertFalse(AudioMetaData.isNonLimeAudioField(nv.getName()));
foundLicense |= nv.getName().equals("audios__audio__license__");
}
assertTrue(foundLicense);
assertEquals("2004 David Byrne Licensed to the " +
"public under http://creativecommons.org/licenses/sampling+/1.0/ " +
"verify at http://ccmixter.org/file/Wired/61",
amd.getLicense());
LimeXMLDocument doc = new LimeXMLDocument(nvList, amd.getSchemaURI());
assertTrue(doc.isLicenseAvailable());
assertEquals(amd.getLicense(), doc.getLicenseString());
assertEquals("<?xml version=\"1.0\"?>" +
"<audios xsi:noNamespaceSchemaLocation=\"http://www.limewire.com/schemas/audio.xsd\">" +
"<audio title=\"My Fair Lady\" artist=\"David Byrne\" album=" +
"\"The Wired CD: Rip. Sample. Mash. Share.\" genre=\"Other\" licensetype=" +
"\"creativecommons.org/licenses/\" track=\"2\" year=\"2004\" seconds=\"208\"" +
" bitrate=\"138\" license=\"2004 David Byrne Licensed to the public under " +
"http://creativecommons.org/licenses/sampling+/1.0/ verify at " +
"http://ccmixter.org/file/Wired/61\"/></audios>", doc.getXMLString());
List indivList = new LinkedList();
indivList.add("creativecommons.org/licenses/");
assertEquals(indivList, doc.getKeyWordsIndivisible());
boolean licenseTypeFound = false;
for(Iterator i = doc.getNameValueSet().iterator(); i.hasNext(); ) {
Map.Entry next = (Map.Entry)i.next();
String name = (String)next.getKey();
if(name.equals("audios__audio__licensetype__")) {
licenseTypeFound = true;
assertEquals("creativecommons.org/licenses/", next.getValue());
}
}
assertTrue(licenseTypeFound);
License l = doc.getLicense();
assertNotNull(l);
assertEquals(CCLicense.class, l.getClass());
assertFalse(l.isVerified());
// don't validate -- don't wanna hit the web.
assertEquals("http://creativecommons.org/licenses/sampling+/1.0/",
l.getLicenseDeed(null).toString());
assertEquals("http://ccmixter.org/file/Wired/61", l.getLicenseURI().toString());
}
public void testReadOGG() throws Exception {
File f = CommonUtils.getResourceFile("com/limegroup/gnutella/licenses/ccverifytest0.ogg");
assertTrue(f.exists());
AudioMetaData amd = (AudioMetaData)MetaData.parse(f);
assertNotNull(amd);
boolean foundLicense = false;
List nvList = amd.toNameValueList();
for(Iterator i = nvList.iterator(); i.hasNext(); ) {
NameValue nv = (NameValue)i.next();
assertFalse(AudioMetaData.isNonLimeAudioField(nv.getName()));
foundLicense |= nv.getName().equals("audios__audio__license__");
}
assertTrue(foundLicense);
assertEquals("2002 BM Relocation Program. Licensed to the public under " +
"http://creativecommons.org/licenses/by-sa/1.0/ verify at " +
"http://creativecommons.org/technology/verifytest/",
amd.getLicense());
f = CommonUtils.getResourceFile("com/limegroup/gnutella/licenses/ccverifytest1.ogg");
assertTrue(f.exists());
amd = (AudioMetaData)MetaData.parse(f);
assertNotNull(amd);
foundLicense = false;
nvList = amd.toNameValueList();
for(Iterator i = nvList.iterator(); i.hasNext(); ) {
NameValue nv = (NameValue)i.next();
assertFalse(AudioMetaData.isNonLimeAudioField(nv.getName()));
foundLicense |= nv.getName().equals("audios__audio__license__");
}
assertTrue(foundLicense);
assertEquals("2003 Okapi Guitars. Licensed to the public under " +
"http://creativecommons.org/licenses/by-nc-sa/1.0/ verify at " +
"http://creativecommons.org/technology/verifytest/",
amd.getLicense());
}
public void testReadWeed() throws Exception {
File f = CommonUtils.getResourceFile("com/limegroup/gnutella/licenses/weed-PUSA-LoveEverybody.wma");
assertTrue(f.exists());
AudioMetaData amd = (AudioMetaData)MetaData.parse(f);
assertNotNull(amd);
LimeXMLDocument doc = new LimeXMLDocument(amd.toNameValueList(), amd.getSchemaURI());
assertTrue(doc.isLicenseAvailable());
assertEquals(amd.getLicenseType(), doc.getLicenseString());
assertEquals("<?xml version=\"1.0\"?>" +
"<audios xsi:noNamespaceSchemaLocation=\"http://www.limewire.com/schemas/audio.xsd\">" +
"<audio title=\"Love Everybody\" artist=\"The Presidents of the United States of America\" album=" +
"\"Love Everybody\" genre=\"Rock\" licensetype=" +
"\"http://www.shmedlic.com/license/3play.aspx cid: 214324 vid: 0000000000001370651\" " +
"track=\"1\" year=\"2004\" seconds=\"158\" bitrate=\"192\" license=\"2004 PUSA Inc.\"/></audios>",
doc.getXMLString());
List indivList = new LinkedList();
indivList.add("http://www.shmedlic.com/license/3play.aspx");
assertEquals(indivList, doc.getKeyWordsIndivisible());
boolean licenseTypeFound = false;
for(Iterator i = doc.getNameValueSet().iterator(); i.hasNext(); ) {
Map.Entry next = (Map.Entry)i.next();
String name = (String)next.getKey();
if(name.equals("audios__audio__licensetype__")) {
licenseTypeFound = true;
assertEquals("http://www.shmedlic.com/license/3play.aspx cid: 214324 vid: 0000000000001370651", next.getValue());
}
}
assertTrue(licenseTypeFound);
License l = doc.getLicense();
assertNotNull(l);
assertEquals(WeedLicense.class, l.getClass());
assertFalse(l.isVerified());
// don't validate -- don't wanna hit the web.
assertEquals("http://weedshare.com/company/policies/summary_usage_rights.aspx",
l.getLicenseDeed(null).toString());
assertEquals("http://www.weedshare.com/license/verify_usage_rights.aspx?" +
"versionid=0000000000001370651&contentid=214324", l.getLicenseURI().toString());
}
}