package jpoco.test;
import java.util.*;
import javax.swing.JOptionPane;
import jpoco.client.*;
public abstract class AbstractClientTest extends AbstractTestCase
{
public abstract ClientSettings getClientSettings();
public void testWithXML() throws Exception
{
ClientSettings s = getClientSettings();
s.setFormat(Format.XML);
exerciseClient(s);
}
public void testWithJSON() throws Exception
{
ClientSettings s = getClientSettings();
s.setFormat(Format.JSON);
exerciseClient(s);
}
public void exerciseClient(ClientSettings s) throws Exception
{
Client client = new Client();
client.setCompressionEnabled(false);
client.setClientSettings(s);
if (s.getUsesOAuth())
{
if ( ! s.getUserSpecificAccessToken().isValid() )
{
String url = client.getUserAuthorizationUrl();
JOptionPane.showInputDialog(null, "URL: " + url, url);
client.fetchAccessToken();
}
}
Contact self = client.getSelf();
assertValid(self);
if (this.getClientSettings().isOpenSocial())
{
List<Contact> allFriends = client.getFriends();
assertContactList(allFriends);
}
else
{
List<Contact> allContacts = client.getContacts();
assertContactList(allContacts);
}
if (this.getClientSettings().getSupportsFiltering())
{
exerciseFiltering(client);
}
}
public void exerciseFiltering(Client client) throws Exception
{
List<Contact> people = null;
if (this.getClientSettings().isOpenSocial())
{
people = client.getFriends();
}
else
{
people = client.getContacts();
}
Contact person = people.get(0);
String dName = person.getDisplayName();
QueryParameters queryParams = new QueryParameters();
queryParams.addFilterOperation(new ContainsFilter("displayName", dName));
List<Contact> contacts = client.query(queryParams);
assertContactList(contacts);
if (contacts.size() > 0)
{
Contact c = contacts.get(0);
assertTrue(c.getDisplayName().indexOf(dName) != -1);
}
/* todo
queryParams = new QueryParameters();
queryParams.addFilterOperation(new EqualsFilter("accounts.domain", "plaxo.com"));
contacts = client.query(queryParams);
assertContactList(contacts);
for (Contact c : contacts)
{
List<Account> acc = c.getAccountsForDomain("plaxo.com");
assertTrue(acc.size() > 0);
}
*/
}
}
|