X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fws%2Fdbsources%2FPDBRestClientTest.java;h=f3cd9ef138018002d1b326d51cf25cc72ad55922;hb=c19d2a91ca05e052e3408bf5852d88eb5d0608f1;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..f3cd9ef 100644 --- a/test/jalview/ws/dbsources/PDBRestClientTest.java +++ b/test/jalview/ws/dbsources/PDBRestClientTest.java @@ -1,7 +1,28 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2) + * Copyright (C) 2015 The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ 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 +31,40 @@ 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 +81,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 +113,7 @@ public class PDBRestClientTest assertEquals("", expectedResult, actualResult); } - @Test + @Test(groups = { "External, Network" }) public void parsePDBJsonExceptionStringTest() { List wantedFields = new ArrayList(); @@ -97,7 +141,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 +151,10 @@ 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 +166,7 @@ public class PDBRestClientTest new PDBRestClient().executeRequest(request); } - @Test + @Test(groups = { "External" }) public void parsePDBJsonResponseTest() { List wantedFields = new ArrayList(); @@ -150,7 +195,7 @@ public class PDBRestClientTest assertTrue(response.getSearchSummary().size() == 14); } - @Test + @Test(groups = { "Functional" }) public void getPDBIdColumIndexTest() { List wantedFields = new ArrayList(); @@ -163,6 +208,75 @@ 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.getCode() + + " 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; @@ -177,7 +291,7 @@ public class PDBRestClientTest sb.append(line); sb.append(System.lineSeparator()); line = br.readLine(); - } + } fileContent = sb.toString(); } finally { @@ -186,5 +300,4 @@ public class PDBRestClientTest return fileContent; } - }