1 package jalview.ws.dbsources;
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertFalse;
5 import static org.testng.AssertJUnit.assertNotNull;
6 import static org.testng.AssertJUnit.assertTrue;
8 import jalview.bin.Cache;
9 import jalview.datamodel.AlignmentI;
10 import jalview.datamodel.DBRefEntry;
11 import jalview.datamodel.DBRefSource;
12 import jalview.datamodel.SequenceI;
13 import jalview.fts.api.FTSData;
14 import jalview.fts.api.FTSDataColumnI;
15 import jalview.fts.api.FTSRestClientI;
16 import jalview.fts.core.FTSRestRequest;
17 import jalview.fts.core.FTSRestResponse;
18 import jalview.fts.service.uniprot.UniProtFTSRestClient;
19 import jalview.ws.SequenceFetcher;
20 import jalview.ws.seqfetcher.DbSourceProxy;
22 import java.util.ArrayList;
23 import java.util.List;
25 import org.testng.annotations.BeforeMethod;
26 import org.testng.annotations.Test;
29 * A class to verify that remotely fetched data has an expected format and can
30 * be successfully processed by Jalview. This is intended as a first line of
31 * defence and early warning of service affecting changes to data fetched
34 * This is class is not intended to cover remote services e.g. alignment. Nor
35 * should it duplicate tests already provided by other classes (such as
36 * PDBFTSRestClientTest). Or maybe we will relocate those tests here...
38 public class RemoteFormatTest
42 @Test(groups = "Network")
43 public void testFetchUniprot() throws Exception
45 List<DbSourceProxy> sps = sf.getSourceProxy(DBRefSource.UNIPROT);
46 assertFalse(sps.isEmpty());
47 AlignmentI response = sps.get(0).getSequenceRecords("P30419");
48 assertNotNull(response);
49 assertEquals(response.getHeight(), 1);
50 SequenceI sq = response.getSequenceAt(0);
51 assertTrue("No PDBEntry on sequence.", sq.getAllPDBEntries().size() > 0);
52 assertTrue("No DBRef on sequence.", sq.getDBRefs().length > 0);
53 List<DBRefEntry> dbr = sq.getPrimaryDBRefs();
54 assertFalse(dbr.isEmpty());
56 "Sequence start/end doesn't match number of residues in sequence",
57 sq.getEnd() - sq.getStart() + 1, sq.getLength());
60 @Test(groups = "Network")
61 public void testFetchPdb()
66 @Test(groups = "Network")
67 public void testFetchEmbl()
72 @Test(groups = "Network")
73 public void testFetchEmblCDS()
78 @Test(groups = "Network")
79 public void testFetchEnsembl()
84 @Test(groups = "Network")
85 public void testFetchEnsemblGenomes()
90 @Test(groups = "Network")
91 public void testFetchPfamSeed()
96 @Test(groups = "Network")
97 public void testFetchPfamFull()
102 @Test(groups = "Network")
103 public void testFetchRfamSeed()
108 @Test(groups = { "Network" })
109 public void testUniprotFreeTextSearch() throws Exception
111 List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
112 FTSRestClientI client = UniProtFTSRestClient.getInstance();
113 wantedFields.add(client.getDataColumnByNameOrCode("id"));
114 wantedFields.add(client.getDataColumnByNameOrCode("entry name"));
115 wantedFields.add(client.getDataColumnByNameOrCode("organism"));
116 wantedFields.add(client.getDataColumnByNameOrCode("reviewed")); // Status
117 wantedFields.add(client.getDataColumnByNameOrCode("length"));
119 FTSRestRequest request = new FTSRestRequest();
120 request.setAllowEmptySeq(false);
121 request.setResponseSize(100);
122 request.setFieldToSearchBy("Search All");
123 request.setSearchTerm("metanephrops"); // lobster!
124 request.setWantedFields(wantedFields);
126 FTSRestResponse response;
127 response = client.executeRequest(request);
128 assertTrue(response.getNumberOfItemsFound() > 20);
129 assertTrue(response.getSearchSummary() != null);
130 assertTrue(response.getSearchSummary().size() > 20);
131 // verify we successfully filtered out the header row (JAL-2485)
132 FTSData header = response.getSearchSummary().iterator().next();
133 assertFalse("Failed to filter out summary header row",
134 header.getSummaryData()[0].toString().equalsIgnoreCase("Entry"));
137 @BeforeMethod(alwaysRun = true)
138 public void setUp() throws Exception
140 Cache.loadProperties("test/jalview/io/testProps.jvprops");
141 // ensure 'add annotation from structure' is selected
142 Cache.applicationProperties.setProperty("STRUCT_FROM_PDB",
143 Boolean.TRUE.toString());
144 Cache.applicationProperties.setProperty("ADD_SS_ANN",
145 Boolean.TRUE.toString());
147 sf = new SequenceFetcher(false);