package org.limewire.xmpp.client.impl.messages.address;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.limewire.io.Address;
import org.limewire.io.Connectable;
import org.limewire.io.ConnectableImpl;
import org.limewire.net.address.AddressFactory;
import org.limewire.net.address.AddressFactoryImpl;
import org.limewire.net.address.ConnectableSerializer;
import org.limewire.util.BaseTestCase;
import org.limewire.xmpp.client.impl.messages.IQTestUtils;
import org.limewire.xmpp.client.impl.messages.InvalidIQException;
public class AddressIQTest extends BaseTestCase {
private AddressFactory addressFactory;
private ConnectableSerializer serializer;
private Mockery context;
public AddressIQTest(String name) {
super(name);
}
@Override
protected void setUp() throws Exception {
addressFactory = new AddressFactoryImpl();
serializer = new ConnectableSerializer();
addressFactory.registerSerializer(serializer);
context = new Mockery();
}
public void testParsesOwnOutput() throws Exception {
Connectable connectable = new ConnectableImpl("129.0.0.1", 4545, true);
AddressIQ addressIQ = new AddressIQ(connectable, addressFactory);
AddressIQ parsedAddressIQ = new AddressIQ(IQTestUtils.createParser(addressIQ.getChildElementXML()), addressFactory);
assertEquals(connectable, parsedAddressIQ.getAddress());
}
public void testParsesWellFormedInput() throws Exception {
final AddressFactory addressFactory = context.mock(AddressFactory.class);
final Address address = context.mock(Address.class);
context.checking(new Expectations() {{
one(addressFactory).deserialize("mock-address", new byte[] { 'h', 'e', 'l', 'l', 'o' });
will(returnValue(address));
}});
AddressIQ addressIQ = new AddressIQ(IQTestUtils.createParser("<address xmlns=\"jabber:iq:lw-address\"><mock-address value=\"aGVsbG8=\"/></address>"), addressFactory);
assertSame(address, addressIQ.getAddress());
context.assertIsSatisfied();
}
public void testParsesMissingAddressElementGracefully() throws Exception {
try {
new AddressIQ(IQTestUtils.createParser("<address xmlns=\"jabber:iq:lw-address\"></address>"), addressFactory);
fail("invalid iq expected");
} catch (InvalidIQException iie) {
}
}
public void testParsesMissingValueAttributeGracefully() throws Exception {
try {
new AddressIQ(IQTestUtils.createParser("<address xmlns=\"jabber:iq:lw-address\"><direct-connect/></address>"), addressFactory);
fail("invalid iq expected");
} catch (InvalidIQException iie) {
}
}
public void testParsesUnknownAddressTypeGracefully() throws Exception {
try {
new AddressIQ(IQTestUtils.createParser("<address xmlns=\"jabber:iq:lw-address\"><street-address value=\"abc\"/></address>"), addressFactory);
fail("invalid iq expected");
} catch (InvalidIQException iie) {
}
}
}