package com.github.markusbernhardt.proxy.selector.pac; import java.io.File; import java.net.MalformedURLException; import java.util.Calendar; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import com.github.markusbernhardt.proxy.TestUtil; import com.github.markusbernhardt.proxy.selector.pac.JavaxPacScriptParser; import com.github.markusbernhardt.proxy.selector.pac.PacScriptParser; import com.github.markusbernhardt.proxy.selector.pac.UrlPacScriptSource; import com.github.markusbernhardt.proxy.util.ProxyException; /***************************************************************************** * Tests for the javax.script PAC script parser. * * @author Markus Bernhardt, Copyright 2016 * @author Bernd Rosstauscher, Copyright 2009 ****************************************************************************/ public class JavaxPacScriptParserTest { /************************************************************************* * Set calendar for date and time base tests. Current date for all tests is: * 15. December 1994 12:00.00 its a Thursday ************************************************************************/ @BeforeClass public static void setup() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 1994); cal.set(Calendar.MONTH, Calendar.DECEMBER); cal.set(Calendar.DAY_OF_MONTH, 15); cal.set(Calendar.HOUR_OF_DAY, 12); cal.set(Calendar.MINUTE, 00); cal.set(Calendar.SECOND, 00); cal.set(Calendar.MILLISECOND, 00); // TODO Rossi 26.08.2010 need to fake time // JavaxPacScriptParser.setCurrentTime(cal); } /************************************************************************* * Cleanup after the tests. ************************************************************************/ @AfterClass public static void teadDown() { // JavaxPacScriptParser.setCurrentTime(null); } /************************************************************************* * Test method * * @throws ProxyException * on proxy detection error. * @throws MalformedURLException * on URL erros ************************************************************************/ @Test public void testScriptExecution() throws ProxyException, MalformedURLException { PacScriptParser p = new JavaxPacScriptParser(new UrlPacScriptSource(toUrl("test1.pac"))); p.evaluate(TestUtil.HTTP_TEST_URI.toString(), "host1.unit-test.invalid"); } /************************************************************************* * Test method * * @throws ProxyException * on proxy detection error. * @throws MalformedURLException * on URL erros ************************************************************************/ @Test public void testCommentsInScript() throws ProxyException, MalformedURLException { PacScriptParser p = new JavaxPacScriptParser(new UrlPacScriptSource(toUrl("test2.pac"))); p.evaluate(TestUtil.HTTP_TEST_URI.toString(), "host1.unit-test.invalid"); } /************************************************************************* * Test method * * @throws ProxyException * on proxy detection error. * @throws MalformedURLException * on URL erros ************************************************************************/ @Test @Ignore // Test deactivated because it will not run in Java 1.5 and time // based test are unstable public void testScriptWeekDayScript() throws ProxyException, MalformedURLException { PacScriptParser p = new JavaxPacScriptParser(new UrlPacScriptSource(toUrl("testWeekDay.pac"))); p.evaluate(TestUtil.HTTP_TEST_URI.toString(), "host1.unit-test.invalid"); } /************************************************************************* * Test method * * @throws ProxyException * on proxy detection error. * @throws MalformedURLException * on URL erros ************************************************************************/ @Test @Ignore // Test deactivated because it will not run in Java 1.5 and time // based test are unstable public void testDateRangeScript() throws ProxyException, MalformedURLException { PacScriptParser p = new JavaxPacScriptParser(new UrlPacScriptSource(toUrl("testDateRange.pac"))); p.evaluate(TestUtil.HTTP_TEST_URI.toString(), "host1.unit-test.invalid"); } /************************************************************************* * Test method * * @throws ProxyException * on proxy detection error. * @throws MalformedURLException * on URL erros ************************************************************************/ @Test @Ignore // Test deactivated because it will not run in Java 1.5 and time // based test are unstable public void testTimeRangeScript() throws ProxyException, MalformedURLException { PacScriptParser p = new JavaxPacScriptParser(new UrlPacScriptSource(toUrl("testTimeRange.pac"))); p.evaluate(TestUtil.HTTP_TEST_URI.toString(), "host1.unit-test.invalid"); } /************************************************************************* * Test method * * @throws ProxyException * on proxy detection error. * @throws MalformedURLException * on URL erros ************************************************************************/ @Test public void methodsShouldReturnJsStrings() throws ProxyException, MalformedURLException { PacScriptParser p = new JavaxPacScriptParser(new UrlPacScriptSource(toUrl("testReturnTypes.pac"))); String actual = p.evaluate(TestUtil.HTTP_TEST_URI.toString(), "host1.unit-test.invalid"); Assert.assertEquals("number boolean string", actual); } /************************************************************************* * Helper method to build the url to the given test file * * @param testFile * the name of the test file. * @return the URL. * @throws MalformedURLException ************************************************************************/ private String toUrl(String testFile) throws MalformedURLException { return new File(TestUtil.TEST_DATA_FOLDER + "pac", testFile).toURI().toURL().toString(); } }