package com.limegroup.gnutella.updates;
import java.io.File;
import java.io.RandomAccessFile;
import junit.framework.Test;
import com.limegroup.gnutella.util.BaseTestCase;
import com.limegroup.gnutella.util.CommonUtils;
/**
* Unit tests for UpdateMessageVerifier
*/
public class UpdateMessageVerifierTest extends BaseTestCase {
private static final String testXMLPath = "com"+File.separator+
"limegroup"+File.separator+
"gnutella"+File.separator+
"updates"+File.separator;
public UpdateMessageVerifierTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(UpdateMessageVerifierTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public void testRandomBytes() throws Exception {
specificTest("random_bytesFile.xml",false);
}
public void testNewVerFile() throws Exception {
specificTest("new_verFile.xml",true);
}
public void testMiddleVerFile() throws Exception {
specificTest("middle_verFile.xml",true);
}
//I'm assuming only the xml is bad, cause the signature checks out.
// --zab
public void testBadXml() throws Exception {
specificTest("bad_xmlFile.xml",true);
}
public void testDefMessageFile() throws Exception {
specificTest("def_messageFile.xml",false);
}
public void testDefVerFile() throws Exception {
specificTest("def_verFile.xml",false);
}
public void testOldVerFile() throws Exception {
specificTest("old_verFile.xml",true);
}
private static File getUpdateVer() throws Exception {
// tests/TestData /tests / ..
File f = getTestDirectory().getParentFile().getParentFile();
return new File(f, "gui/update.ver");
}
protected void setUp() throws Exception {
File pub = CommonUtils.getResourceFile(testXMLPath+"public.key");
File pub2 = new File(_settingsDir, "public.key");
CommonUtils.copy(pub, pub2);
assertTrue("test could not be set up", pub2.exists());
}
private void specificTest(String filename, boolean good) throws Exception{
File _f = CommonUtils.getResourceFile(testXMLPath+filename);
assertTrue(_f.exists());
assertGreaterThan(0,_f.length());
RandomAccessFile f=new RandomAccessFile(_f, "r");
byte[] content = new byte[(int)f.length()];
f.readFully(content);
f.close();
//System.out.println(new String(content));
UpdateMessageVerifier tester = new UpdateMessageVerifier(content,true);
if (good)
assertTrue(tester.verifySource());
else
assertFalse(tester.verifySource());
}
}