JAL-4409 Allow more URI schemes (e.g. file) to filter through to Jalview
[jalview.git] / test / jalview / util / HttpUtilsTest.java
1 package jalview.util;
2
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;
8 import java.net.URL;
9 import java.util.Locale;
10
11 import org.testng.Assert;
12 import org.testng.annotations.DataProvider;
13 import org.testng.annotations.Test;
14
15 public class HttpUtilsTest
16 {
17   @Test(groups = { "Network" }, dataProvider = "urlTargetsAndDestinations")
18   public void testFollowConnection(String targetUrl, String finalUrl,
19           String notUsed0, String notUsed1) throws IOException
20   {
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.");
27   }
28
29   @Test(groups = { "Network" }, dataProvider = "urlTargetsAndDestinations")
30   public void testOpenConnection(String targetUrl, String finalUrl,
31           String notUsed0, String notUsed1) throws IOException
32   {
33     URL tUrl = new URL(targetUrl);
34     URL fUrl = new URL(finalUrl);
35     HttpURLConnection conn1 = (HttpURLConnection) HttpUtils
36             .openConnection(tUrl);
37     URL url1 = conn1.getURL();
38     Assert.assertEquals(url1, fUrl, "Final URL is not the same.");
39   }
40
41   @Test(groups = { "Network" }, dataProvider = "urlTargetsAndDestinations")
42   public void testOpenStream(String targetUrl, String finalUrl,
43           String inFirstLine, String inDocument) throws IOException
44   {
45     URL tUrl = new URL(targetUrl);
46     URL fUrl = new URL(finalUrl);
47     InputStream is1 = HttpUtils.openStream(tUrl);
48     BufferedReader br1 = new BufferedReader(new InputStreamReader(is1));
49     String firstLine = br1.readLine().toLowerCase(Locale.ROOT);
50     Assert.assertTrue(
51             firstLine.contains(inFirstLine.toLowerCase(Locale.ROOT)),
52             "First line of text '" + firstLine + "' does not contain '"
53                     + inFirstLine + "'");
54     String inDocumentLC = inDocument.toLowerCase(Locale.ROOT);
55     boolean found = false;
56     String line = null;
57     while ((line = br1.readLine()) != null)
58     {
59       if (line.toLowerCase(Locale.ROOT).contains(inDocumentLC))
60       {
61         found = true;
62         break;
63       }
64     }
65     Assert.assertTrue(found,
66             "Text '" + inDocument + "' not found in '" + finalUrl + "'");
67   }
68
69   @DataProvider(name = "urlTargetsAndDestinations")
70   public Object[][] urlTargetsAndDestinations()
71   {
72     /*
73     String targetUrl, // the URL you ask for
74     String finalUrl, // the URL you end up at
75     String foundInFirstLine, // some text found in the first line
76     String foundInDocument, // some text found in the document (and won't be in an error page)
77     */
78     return new Object[][] {
79         //
80         /*
81          */
82         { "http://jalview.org/", "https://www.jalview.org/", "<!doctype",
83             "Jalview is a" },
84         { "http://www.jalview.org/", "https://www.jalview.org/",
85             "<!doctype", "Jalview is a" },
86         { "https://jalview.org", "https://www.jalview.org/", "<!doctype",
87             "Jalview is a" },
88         /*
89          */
90         //
91     };
92   }
93
94 }