package jalview.io; import jalview.json.binding.v1.BioJSReleasePojo; import jalview.json.binding.v1.BioJSRepositoryPojo; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; import java.util.TreeMap; import org.junit.Assert; import org.junit.Test; public class BioJsHTMLOutputTest { @Test public void getJalviewAlignmentAsJsonString() { BioJsHTMLOutput bioJsHtmlOutput = new BioJsHTMLOutput(null, null); String bjsTemplate = null; try { bioJsHtmlOutput.updateBioJS(); try { // allow the update some three seconds to complete before getting latest // version of BioJS template Thread.sleep(1000 * 3); } catch (InterruptedException e) { e.printStackTrace(); } bjsTemplate = BioJsHTMLOutput.getBioJsTemplateAsString(); // System.out.println(bjsTemplate); } catch (IOException e) { e.printStackTrace(); } Assert.assertNotNull(bjsTemplate); } @Test(expected = NullPointerException.class) public void expectedNullPointerException() { BioJsHTMLOutput bjs = new BioJsHTMLOutput(null, null); try { bjs.refreshBioJSVersionsInfo(null); } catch (URISyntaxException e) { Assert.fail("Expception occured while testing!"); e.printStackTrace(); } } @Test public void getBioJsMSAVersions() { BioJsHTMLOutput bjs = new BioJsHTMLOutput(null, null); TreeMap versions = null; try { bjs.refreshBioJSVersionsInfo(BioJsHTMLOutput.BJS_TEMPLATES_LOCAL_DIRECTORY); versions = BioJsHTMLOutput.getBioJsMSAVersions(); } catch (URISyntaxException e) { Assert.fail("Expception occured while testing!"); e.printStackTrace(); } Assert.assertNotNull("No versions found", versions); Assert.assertTrue("One or more Templates required", versions.size() > 0); System.out .println("Number of discovered versions : " + versions.size()); for (String v : versions.keySet()) { System.out.println("version : " + v); System.out.println("File : " + versions.get(v)); } System.out.println("\nCurrent latest version : " + BioJsHTMLOutput.getCurrentBJSTemplateFile()); Assert.assertNotNull("Latest BioJsMSA version NOT found!", BioJsHTMLOutput.getCurrentBJSTemplateFile()); } @Test public void testBioJsUpdate() { String url = BioJsHTMLOutput.BJS_TEMPLATE_GIT_REPO; Assert.assertTrue("URL not reacable : " + url, urlIsReachable(url)); String response = BioJsHTMLOutput.getURLContentAsString(url); Assert.assertNotNull("Null response read from url!", response); BioJSRepositoryPojo repository = new BioJSRepositoryPojo(response); System.out.println(">>> description : " + repository.getDescription()); System.out .println(">>> latest version : " + repository.getLatestReleaseVersion()); System.out.println(">>> repo count : " + repository.getReleases().size()); for (BioJSReleasePojo release : repository.getReleases()) { System.out.println("repo type : " + release.getType()); System.out.println("url : " + release.getUrl()); System.out.println("release version : " + release.getVersion()); } } private static boolean urlIsReachable(String urlString) { try { final URL url = new URL(urlString); final URLConnection conn = url.openConnection(); conn.connect(); return true; } catch (MalformedURLException e) { throw new RuntimeException(e); } catch (IOException e) { return false; } } }