public class TestEmlsPlugin extends LockssTestCase { private DefinablePlugin plugin; static final String BASE_URL_KEY = ConfigParamDescr.BASE_URL.getKey(); static final String VOL_KEY = ConfigParamDescr.VOLUME_NUMBER.getKey(); public void setUp() throws Exception { super.setUp(); plugin = new DefinablePlugin(); plugin.initPlugin(getMockLockssDaemon(), "org.lockss.plugin.emls.EmlsPlugin"); } public void testGetAuNullConfig() throws ArchivalUnit.ConfigurationException { try { plugin.configureAu(null, null); fail("Didn't throw ArchivalUnit.ConfigurationException"); } catch (ArchivalUnit.ConfigurationException e) { } } private DefinableArchivalUnit makeAuFromProps(Properties props) throws ArchivalUnit.ConfigurationException { Configuration config = ConfigurationUtil.fromProps(props); return (DefinableArchivalUnit) plugin.configureAu(config, null); } public void testGetAuHandlesBadUrl() throws ArchivalUnit.ConfigurationException, MalformedURLException { Properties props = new Properties(); props.setProperty(BASE_URL_KEY, "blah"); props.setProperty(VOL_KEY, "3"); try { DefinableArchivalUnit au = makeAuFromProps(props); fail("Didn't throw InstantiationException when given a bad url"); } catch (ArchivalUnit.ConfigurationException auie) { ConfigParamDescr.InvalidFormatException murle = (ConfigParamDescr.InvalidFormatException) auie.getCause(); assertNotNull(auie.getCause()); } } public void testGetAuConstructsProperAu() throws ArchivalUnit.ConfigurationException, MalformedURLException { Properties props = new Properties(); props.setProperty(BASE_URL_KEY, "http://extra.shu.ac.uk/emls/"); props.setProperty(VOL_KEY, "3"); DefinableArchivalUnit au = makeAuFromProps(props); assertEquals( "Early Modern Literary Studies Plugin, Base URL http://extra.shu.ac.uk/emls/, Volume 3", au.getName()); } public void testGetPluginId() { assertEquals("org.lockss.plugin.emls.EmlsPlugin", plugin.getPluginId()); } public void testGetAuConfigProperties() { for (Iterator iter = plugin.getLocalAuConfigDescrs().iterator(); iter.hasNext(); ) { ConfigParamDescr desc = (ConfigParamDescr) iter.next(); if (desc.equals(ConfigParamDescr.BASE_URL)) { continue; } if (desc.equals(ConfigParamDescr.VOLUME_NUMBER)) { continue; } if ("issues".equals(desc.getKey())) { assertEquals(ConfigParamDescr.TYPE_SET, desc.getType()); assertFalse(desc.isDefinitional()); continue; } fail("Unexpected config param: " + desc.getKey()); } } }
public class TestHighWireDrupalPlugin extends LockssTestCase { static final String BASE_URL_KEY = ConfigParamDescr.BASE_URL.getKey(); static final String VOL_KEY = ConfigParamDescr.VOLUME_NAME.getKey(); private MockLockssDaemon theDaemon; private DefinablePlugin plugin; public TestHighWireDrupalPlugin(String msg) { super(msg); } @Override public void setUp() throws Exception { super.setUp(); setUpDiskSpace(); theDaemon = getMockLockssDaemon(); plugin = new DefinablePlugin(); plugin.initPlugin(getMockLockssDaemon(), "org.lockss.plugin.highwire.HighWireDrupalPlugin"); } public void testGetAuNullConfig() throws ArchivalUnit.ConfigurationException { try { plugin.configureAu(null, null); fail("Didn't throw ArchivalUnit.ConfigurationException"); } catch (ArchivalUnit.ConfigurationException e) { } } public void testCreateAu() throws ConfigurationException { Properties props = new Properties(); props.setProperty(BASE_URL_KEY, "http://www.example.com/"); props.setProperty(VOL_KEY, "32"); makeAuFromProps(props); } private DefinableArchivalUnit makeAuFromProps(Properties props) throws ArchivalUnit.ConfigurationException { Configuration config = ConfigurationUtil.fromProps(props); return (DefinableArchivalUnit) plugin.configureAu(config, null); } public void testGetAuConstructsProperAu() throws ArchivalUnit.ConfigurationException, MalformedURLException { Properties props = new Properties(); props.setProperty(VOL_KEY, "303"); props.setProperty(BASE_URL_KEY, "http://www.example.com/"); String starturl = "http://www.example.com/lockss-manifest/vol_303_manifest.html"; DefinableArchivalUnit au = makeAuFromProps(props); assertEquals( "HighWire Drupal Plugin, Base URL http://www.example.com/, Volume 303", au.getName()); assertEquals(ListUtil.list(starturl), au.getStartUrls()); } public void testGetPluginId() { assertEquals("org.lockss.plugin.highwire.HighWireDrupalPlugin", plugin.getPluginId()); } public void testGetAuConfigProperties() { assertEquals( ListUtil.list(ConfigParamDescr.BASE_URL, ConfigParamDescr.VOLUME_NAME), plugin.getLocalAuConfigDescrs()); } public void testHandles500Result() throws Exception { Properties props = new Properties(); props.setProperty(VOL_KEY, "322"); props.setProperty(BASE_URL_KEY, "http://www.example.com/"); String starturl = "http://www.example.com/lockss-manifest/vol_322_manifest.html"; DefinableArchivalUnit au = makeAuFromProps(props); MockLockssUrlConnection conn = new MockLockssUrlConnection(); conn.setURL("http://uuu17/"); CacheException exc = ((HttpResultMap) plugin.getCacheResultMap()).mapException(au, conn, 500, "foo"); assertClass(CacheException.RetryDeadLinkException.class, exc); conn.setURL(starturl); exc = ((HttpResultMap) plugin.getCacheResultMap()).mapException(au, conn, 500, "foo"); assertClass(CacheException.RetrySameUrlException.class, exc); } // Test the crawl rules for eLife public void testShouldCacheProperPages() throws Exception { String ROOT_URL = "http://highwire.org/"; Properties props = new Properties(); props.setProperty(BASE_URL_KEY, ROOT_URL); props.setProperty(VOL_KEY, "2015"); DefinableArchivalUnit au = null; try { au = makeAuFromProps(props); } catch (ConfigurationException ex) { } theDaemon.getLockssRepository(au); // Test for pages that should get crawled or not // permission page/start url shouldCacheTest(ROOT_URL + "lockss-manifest/vol_2015_manifest.html", true, au); shouldCacheTest(ROOT_URL + "clockss-manifest/vol_2015_manifest.html", false, au); shouldCacheTest(ROOT_URL + "manifest/year=2015", false, au); // toc page for a volume, issue shouldCacheTest(ROOT_URL + "content/2015", false, au); shouldCacheTest(ROOT_URL + "content/2015/1", true, au); shouldCacheTest(ROOT_URL + "content/2015/2.toc", true, au); // article files shouldCacheTest(ROOT_URL + "content/2015/1/2", true, au); shouldCacheTest(ROOT_URL + "content/2015/1/2.abstract", true, au); shouldCacheTest(ROOT_URL + "content/2015/1/2.extract", true, au); shouldCacheTest(ROOT_URL + "content/2015/1/2.full", true, au); shouldCacheTest(ROOT_URL + "content/2015/1/2.full.pdf", true, au); shouldCacheTest(ROOT_URL + "content/2015/1/2.full.pdf+html", true, au); shouldCacheTest(ROOT_URL + "content/2015/1/2.full-text.pdf+html", true, au); shouldCacheTest(ROOT_URL + "content/2015/1/2/DC1", true, au); shouldCacheTest(ROOT_URL + "content/2015/1/2.print", false, au); shouldCacheTest(ROOT_URL + "content/2015/1/2.explore", false, au); shouldCacheTest(ROOT_URL + "content/2015/1/2/article-info", false, au); shouldCacheTest(ROOT_URL + "content/2015/1/2/submit?param=12", false, au); shouldCacheTest(ROOT_URL + "panels_ajax_tab/hw_tab_data/node:80746/1", true, au); shouldCacheTest(ROOT_URL + "panels_ajax_tab/hw_tab_art/node:80746/1", false, au); shouldCacheTest(ROOT_URL + "highwire/citation/12/ris", true, au); shouldCacheTest(ROOT_URL + "highwire/citation/9/1/ris", false, au); shouldCacheTest(ROOT_URL + "highwire/markup/113/expansion", true, au); shouldCacheTest(ROOT_URL + "sites/all/libraries/modernizr/modernizr.min.js", true, au); shouldCacheTest(ROOT_URL + "sites/default/files/js/js_0j8_f76rvZ212f4rg.js", true, au); shouldCacheTest(ROOT_URL + "sites/default/themes/hw/font/fontawesome-webfont.eot", true, au); shouldCacheTest(ROOT_URL + "sites/default/themes/font/fontawesome-webfont.eot", true, au); shouldCacheTest( ROOT_URL + "content/hw/suppl/2014/04/23/hw.02130.DC1/hw02130_Supplemental_files.zip", true, au); shouldCacheTest("http://cdn.cloudfront.net/content/2015/1/3/F1.medium.gif", true, au); shouldCacheTest("http://cdn.mathjax.org/mathjax/latest/MathJax.js", true, au); shouldCacheTest("https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js", true, au); shouldCacheTest("", false, au); // should not get crawled - LOCKSS shouldCacheTest("http://lockss.stanford.edu", false, au); } private void shouldCacheTest(String url, boolean shouldCache, ArchivalUnit au) { log.info("shouldCacheTest url: " + url); assertEquals(shouldCache, au.shouldBeCached(url)); } }