X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fjalview%2Fws%2Fdbsources%2FPDBRestClientTest.java;h=9ae5b26488277af38d5873bae41bbafe4536a1f5;hb=28fda83cbef0c9c82cd09a343af4e1721085c104;hp=d86edd2aca8cbd9f8b9a746c9dda6b8ce8970f8e;hpb=c77a1af8ef91918f935bbf493d348eb022fa73f7;p=jalview.git diff --git a/test/jalview/ws/dbsources/PDBRestClientTest.java b/test/jalview/ws/dbsources/PDBRestClientTest.java index d86edd2..9ae5b26 100644 --- a/test/jalview/ws/dbsources/PDBRestClientTest.java +++ b/test/jalview/ws/dbsources/PDBRestClientTest.java @@ -1,7 +1,8 @@ package jalview.ws.dbsources; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertTrue; + import jalview.ws.dbsources.PDBRestClient.PDBDocField; import jalview.ws.uimodel.PDBRestRequest; import jalview.ws.uimodel.PDBRestResponse; @@ -10,26 +11,41 @@ import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +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.testng.Assert; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.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 { - @Before + @BeforeMethod(alwaysRun = true) public void setUp() throws Exception { } - @After + @AfterMethod public void tearDown() throws Exception { } - @Test + @Test(groups = + { "External", "Network" }) public void executeRequestTest() { List wantedFields = new ArrayList(); @@ -46,13 +62,22 @@ public class PDBRestClientTest request.setSearchTerm("abc"); request.setWantedFields(wantedFields); - PDBRestResponse response = new PDBRestClient().executeRequest(request); + PDBRestResponse response; + try + { + response = new PDBRestClient().executeRequest(request); + } catch (Exception e) + { + e.printStackTrace(); + Assert.fail("Couldn't execute webservice call!"); + return; + } assertTrue(response.getNumberOfItemsFound() > 99); assertTrue(response.getSearchSummary() != null); assertTrue(response.getSearchSummary().size() > 99); } - @Test + @Test(groups ={ "Functional" }) public void getPDBDocFieldsAsCommaDelimitedStringTest() { List wantedFields = new ArrayList(); @@ -69,7 +94,8 @@ public class PDBRestClientTest assertEquals("", expectedResult, actualResult); } - @Test + @Test(groups = + { "External, Network" }) public void parsePDBJsonExceptionStringTest() { List wantedFields = new ArrayList(); @@ -97,7 +123,6 @@ public class PDBRestClientTest String parsedErrorResponse = PDBRestClient .parseJsonExceptionString(jsonErrorResponse); - System.out.println(parsedErrorResponse); String expectedErrorMsg = "\n============= PDB Rest Client RunTime error =============\n" + "Status: 400\n" @@ -108,8 +133,9 @@ public class PDBRestClientTest assertEquals(expectedErrorMsg, parsedErrorResponse); } - @Test(expected = RuntimeException.class) - public void testForExpectedRuntimeException() + @Test(groups = + { "External", "Network" }, expectedExceptions = Exception.class) + public void testForExpectedRuntimeException() throws Exception { List wantedFields = new ArrayList(); wantedFields.add(PDBDocField.PDB_ID); @@ -121,7 +147,8 @@ public class PDBRestClientTest new PDBRestClient().executeRequest(request); } - @Test + @Test(groups = + { "External" }) public void parsePDBJsonResponseTest() { List wantedFields = new ArrayList(); @@ -150,7 +177,7 @@ public class PDBRestClientTest assertTrue(response.getSearchSummary().size() == 14); } - @Test + @Test(groups ={ "Functional" }) public void getPDBIdColumIndexTest() { List wantedFields = new ArrayList(); @@ -163,6 +190,76 @@ public class PDBRestClientTest assertEquals(4, PDBRestClient.getPDBIdColumIndex(wantedFields, false)); } + @Test(groups = + { "External" }) + 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) + { + Assert.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 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) + { + Assert.fail(">>> Test failed due to exception while parsing pdb response json !!!"); + e.printStackTrace(); + } + } + } + public String readJsonStringFromFile(String filePath) throws IOException { String fileContent; @@ -186,5 +283,4 @@ public class PDBRestClientTest return fileContent; } - }