/* * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) * Copyright (C) $$Year-Rel$$ 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.io; import jalview.gui.JvOptionPane; import jalview.json.binding.biojs.BioJSReleasePojo; import jalview.json.binding.biojs.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.testng.Assert; import org.testng.AssertJUnit; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class BioJsHTMLOutputTest { @BeforeClass(alwaysRun = true) public void setUpJvOptionPane() { JvOptionPane.setInteractiveMode(false); JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } @Test(groups = { "Functional" }) public void getJalviewAlignmentAsJsonString() { 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 = HTMLOutput.readFileAsString( BioJsHTMLOutput.getCurrentBJSTemplateFile()); // System.out.println(bjsTemplate); } catch (IOException e) { e.printStackTrace(); } Assert.assertNotNull(bjsTemplate); } @Test( groups = { "Functional" }, expectedExceptions = NullPointerException.class) public void expectedNullPointerException() { try { BioJsHTMLOutput.refreshVersionInfo(null); } catch (URISyntaxException e) { AssertJUnit.fail("Expception occured while testing!"); e.printStackTrace(); } } @Test(groups = { "Functional" }) public void getBioJsMSAVersions() { TreeMap versions = null; try { BioJsHTMLOutput.refreshVersionInfo( BioJsHTMLOutput.BJS_TEMPLATES_LOCAL_DIRECTORY); versions = BioJsHTMLOutput.getBioJsMSAVersions(); } catch (URISyntaxException e) { AssertJUnit.fail("Expception occured while testing!"); e.printStackTrace(); } AssertJUnit.assertNotNull("No versions found", versions); AssertJUnit.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()); AssertJUnit.assertNotNull("Latest BioJsMSA version NOT found!", BioJsHTMLOutput.getCurrentBJSTemplateFile()); } @Test(groups = { "Network" }) public void testBioJsUpdate() { String url = BioJsHTMLOutput.BJS_TEMPLATE_GIT_REPO; AssertJUnit.assertTrue("URL not reacable : " + url, urlIsReachable(url)); String response = BioJsHTMLOutput.getURLContentAsString(url); AssertJUnit.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; } } }