package org.limewire.mojito.messages;
import java.net.InetSocketAddress;
import junit.framework.TestSuite;
import org.limewire.mojito.MojitoTestCase;
import org.limewire.mojito.messages.impl.DefaultMessageID;
import org.limewire.mojito.messages.impl.DefaultMessageID.MessageSecurityToken;
import org.limewire.security.MACCalculatorRepositoryManager;
import org.limewire.security.SecurityToken;
import org.limewire.util.PrivilegedAccessor;
public class MessageIDTest extends MojitoTestCase {
private MACCalculatorRepositoryManager macManager = new MACCalculatorRepositoryManager();
public MessageIDTest(String name) {
super(name);
}
public static TestSuite suite() {
return buildTestSuite(MessageIDTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public void testEquals() {
DefaultMessageID messageId1 = DefaultMessageID.createWithSocketAddress(new InetSocketAddress("localhost", 1024), macManager);
DefaultMessageID messageId2 = DefaultMessageID.createWithSocketAddress(new InetSocketAddress("localhost", 1024), macManager);
// Except for the first four bytes (AddressSecurityToken) they shouldn't be equal
assertNotEquals(messageId1, messageId2);
for (int i = 0; i < 4; i++) {
assertEquals(messageId1.getBytes()[i], messageId2.getBytes()[i]);
}
// Same if created from the bytes
MessageID messageId3 = DefaultMessageID.createWithBytes(messageId2.getBytes());
assertEquals(messageId2, messageId3);
// Same if created from the hex string
MessageID messageId4 = DefaultMessageID.createWithHexString(messageId2.toHexString());
assertEquals(messageId4, messageId3);
}
public void testEmbeddedSecurityToken() throws Exception {
InetSocketAddress addr1 = new InetSocketAddress("localhost", 1234);
SecurityToken key1 = new MessageSecurityToken(new DefaultMessageID.DHTTokenData(addr1),macManager);
MessageID messageId1 = DefaultMessageID.createWithSocketAddress(addr1, macManager);
SecurityToken key2 = (SecurityToken)PrivilegedAccessor.invokeMethod(messageId1, "getSecurityToken", new Object[0]);
assertTrue(key1.equals(key2));
assertTrue(messageId1.isFor(addr1));
InetSocketAddress addr2 = new InetSocketAddress("www.google.com", 1234);
assertFalse(messageId1.isFor(addr2));
}
}