import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import jalview.ws.dbsources.PDBRestClient.PDBDocField;
import jalview.ws.uimodel.PDBRestRequest;
import jalview.ws.uimodel.PDBRestResponse;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
+import javax.ws.rs.core.MediaType;
+
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.api.client.config.ClientConfig;
+import com.sun.jersey.api.client.config.DefaultClientConfig;
+
public class PDBRestClientTest
{
assertEquals(4, PDBRestClient.getPDBIdColumIndex(wantedFields, false));
}
+ @Test
+ public void externalServiceIntegrationTest()
+ {
+ ClientConfig clientConfig = new DefaultClientConfig();
+ Client client = Client.create(clientConfig);
+
+ // Build request parameters for the REST Request
+ WebResource webResource = client
+ .resource(PDBRestClient.PDB_SEARCH_ENDPOINT)
+ .queryParam("wt", "json").queryParam("rows", String.valueOf(1))
+ .queryParam("q", "text:abc AND molecule_sequence:['' TO *]");
+
+ // Execute the REST request
+ ClientResponse clientResponse = webResource.accept(
+ MediaType.APPLICATION_JSON).get(ClientResponse.class);
+
+ // Get the JSON string from the response object
+ String pdbJsonResponseString = clientResponse.getEntity(String.class);
+
+ // Check the response status and report exception if one occurs
+ if (clientResponse.getStatus() != 200)
+ {
+ fail("Webservice call failed!!!");
+ }
+ else
+ {
+ try
+ {
+ JSONParser jsonParser = new JSONParser();
+ JSONObject jsonObj = (JSONObject) jsonParser
+ .parse(pdbJsonResponseString);
+ JSONObject pdbResponse = (JSONObject) jsonObj.get("response");
+ String queryTime = ((JSONObject) jsonObj.get("responseHeader"))
+ .get("QTime").toString();
+ String numFound = pdbResponse.get("numFound").toString();
+ JSONArray docs = (JSONArray) pdbResponse.get("docs");
+ Iterator<JSONObject> docIter = docs.iterator();
+
+ assertTrue("Couldn't Retrieve 'response' object",
+ pdbResponse != null);
+ assertTrue("Couldn't Retrieve 'QTime' value", queryTime != null);
+ assertTrue("Couldn't Retrieve 'numFound' value", numFound != null);
+ assertTrue("Couldn't Retrieve 'docs' object", docs != null
+ || !docIter.hasNext());
+
+ JSONObject pdbJsonDoc = docIter.next();
+
+ for (PDBDocField field : PDBDocField.values())
+ {
+ if (field == PDBDocField.ALL)
+ {
+ continue;
+ }
+ if (pdbJsonDoc.get(field.getCode()) == null)
+ {
+ // System.out.println(">>>\t" + field.getCode());
+ assertTrue(field.getClass()
+ + " has been removed from PDB doc Entity",
+ !pdbJsonResponseString.contains(field.getCode()));
+ }
+ }
+ } catch (ParseException e)
+ {
+ fail(">>> Test failed due to exception while parsing pdb response json !!!");
+ e.printStackTrace();
+ }
+ }
+ }
+
public String readJsonStringFromFile(String filePath) throws IOException
{
String fileContent;
return fileContent;
}
-
}