package de.juwimm.cms.client.util.test; import static junit.framework.Assert.assertEquals; import static org.powermock.api.easymock.PowerMock.createNiceMock; import static org.powermock.api.easymock.PowerMock.createStrictMock; import static org.powermock.api.easymock.PowerMock.expectLastCall; import static org.powermock.api.easymock.PowerMock.expectStrictNew; import static org.powermock.api.easymock.PowerMock.expectNew; import static org.powermock.api.easymock.PowerMock.replayAll; import static org.powermock.api.easymock.PowerMock.verifyAll; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ResourceBundle; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import de.juwimm.cms.common.Constants; import de.juwimm.cms.util.UrlValidator; @RunWith(PowerMockRunner.class) @PrepareForTest( {URL.class, UrlValidator.class}) public class UrlValidatorTest { @Before public void setUp() { Constants.rb = ResourceBundle.getBundle("CMS", Constants.CMS_LOCALE); } @Test public void testValidateHappyFlow() throws Exception { String testLink = "igoogle.com"; URL url = createStrictMock(URL.class); HttpURLConnection conn = createNiceMock(HttpURLConnection.class); expectStrictNew(URL.class, "http://" + testLink).andReturn(url); url.openConnection(); expectLastCall().andReturn(conn); conn.setConnectTimeout(2000); expectLastCall(); conn.setReadTimeout(5000); expectLastCall(); conn.setInstanceFollowRedirects(true); expectLastCall(); conn.setRequestProperty("User-agent", "crawler"); expectLastCall(); conn.connect(); expectLastCall(); conn.getResponseCode(); expectLastCall().andReturn(200); conn.getURL(); expectLastCall().andReturn(url); url.toExternalForm(); expectLastCall().andReturn(testLink); replayAll(); String actual = UrlValidator.validate(testLink); assertEquals(testLink, actual); verifyAll(); } @Test public void testValidateInvalidUrl() throws Exception { String testLink = "cd+45"; URL url = createStrictMock(URL.class); HttpURLConnection conn = createNiceMock(HttpURLConnection.class); expectStrictNew(URL.class, "http://" + testLink).andReturn(url); url.openConnection(); expectLastCall().andThrow(new MalformedURLException()); replayAll(); String actual = UrlValidator.validate(testLink); assertEquals("Invalid URL", actual); verifyAll(); } }