3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.net.HttpURLConnection;
9 import java.util.Locale;
11 import org.testng.Assert;
12 import org.testng.annotations.DataProvider;
13 import org.testng.annotations.Test;
15 public class HttpUtilsTest
17 @Test(groups = { "Network" }, dataProvider = "urlTargetsAndDestinations")
18 public void testFollowConnection(String targetUrl, String finalUrl,
19 String notUsed0, String notUsed1) throws IOException
21 URL tUrl = new URL(targetUrl);
22 URL fUrl = new URL(finalUrl);
23 HttpURLConnection conn1 = HttpUtils
24 .followConnection((HttpURLConnection) tUrl.openConnection());
25 URL url1 = conn1.getURL();
26 Assert.assertEquals(url1, fUrl, "Final URL is not the same.");
29 @Test(groups = { "Network" }, dataProvider = "urlTargetsAndDestinations")
30 public void testOpenConnection(String targetUrl, String finalUrl,
31 String notUsed0, String notUsed1) throws IOException
33 URL tUrl = new URL(targetUrl);
34 URL fUrl = new URL(finalUrl);
35 HttpURLConnection conn1 = HttpUtils.openConnection(tUrl);
36 URL url1 = conn1.getURL();
37 Assert.assertEquals(url1, fUrl, "Final URL is not the same.");
40 @Test(groups = { "Network" }, dataProvider = "urlTargetsAndDestinations")
41 public void testOpenStream(String targetUrl, String finalUrl,
42 String inFirstLine, String inDocument) throws IOException
44 URL tUrl = new URL(targetUrl);
45 URL fUrl = new URL(finalUrl);
46 InputStream is1 = HttpUtils.openStream(tUrl);
47 BufferedReader br1 = new BufferedReader(new InputStreamReader(is1));
48 String firstLine = br1.readLine().toLowerCase(Locale.ROOT);
50 firstLine.contains(inFirstLine.toLowerCase(Locale.ROOT)),
51 "First line of text '" + firstLine + "' does not contain '"
53 String inDocumentLC = inDocument.toLowerCase(Locale.ROOT);
54 boolean found = false;
56 while ((line = br1.readLine()) != null)
58 if (line.toLowerCase(Locale.ROOT).contains(inDocumentLC))
64 Assert.assertTrue(found,
65 "Text '" + inDocument + "' not found in '" + finalUrl + "'");
68 @DataProvider(name = "urlTargetsAndDestinations")
69 public Object[][] urlTargetsAndDestinations()
72 String targetUrl, // the URL you ask for
73 String finalUrl, // the URL you end up at
74 String foundInFirstLine, // some text found in the first line
75 String foundInDocument, // some text found in the document (and won't be in an error page)
77 return new Object[][] {
81 { "http://jalview.org/", "https://www.jalview.org/", "<!doctype",
83 { "http://www.jalview.org/", "https://www.jalview.org/",
84 "<!doctype", "Jalview is a" },
85 { "https://jalview.org", "https://www.jalview.org/", "<!doctype",