View Javadoc

1   package com.atlassian.sal.core.net;
2   
3   import org.junit.Test;
4   
5   import javax.net.ssl.SSLContext;
6   
7   import java.security.NoSuchAlgorithmException;
8   import java.util.Arrays;
9   
10  import static org.junit.Assert.assertEquals;
11  import static org.junit.Assert.assertFalse;
12  import static org.junit.Assert.assertArrayEquals;
13  import static org.junit.Assert.assertTrue;
14  import static org.junit.Assert.assertThat;
15  import static org.hamcrest.CoreMatchers.not;
16  import static org.hamcrest.Matchers.arrayContaining;
17  
18  public class TestCustomSSLProtocolSocketFactory
19  {
20      @Test
21      public void testCheckDefaultProtocols() throws NoSuchAlgorithmException
22      {
23          CustomSSLProtocolSocketFactory sslProtocolSocketFactory = new CustomSSLProtocolSocketFactory(null);
24          String [] protocols = SSLContext.getDefault()
25              .getSupportedSSLParameters().getProtocols();
26          int startAt = Arrays.asList(protocols).indexOf("TLSv1");
27          protocols = Arrays.copyOfRange(protocols, startAt, protocols.length);
28          assertArrayEquals(protocols, sslProtocolSocketFactory.getProtocols());
29          assertTrue(Arrays.asList(sslProtocolSocketFactory.getProtocols())
30              .containsAll(Arrays.asList("TLSv1")));
31      }
32  
33      @Test
34      public void testCheckDefaultProtocolsDoesNotContainSSLv2Hello()
35      {
36          CustomSSLProtocolSocketFactory sslProtocolSocketFactory =
37              new CustomSSLProtocolSocketFactory(null);
38          assertFalse(Arrays.asList(sslProtocolSocketFactory.getProtocols())
39              .contains("SSLv2Hello"));
40      }
41  
42      @Test
43      public void testCheckDefaultProtocolsDoesNotContainSSLv3()
44      {
45          CustomSSLProtocolSocketFactory sslProtocolSocketFactory =
46              new CustomSSLProtocolSocketFactory(null);
47          assertThat(sslProtocolSocketFactory.getProtocols(), not(arrayContaining("SSLv3")));
48      }
49  
50      @Test
51      public void testCheckDefaultProtocolsDoesNotEndWithAComma()
52      {
53          assertFalse(CustomSSLProtocolSocketFactory.getSupportedTLSProtocols()
54              .endsWith(","));
55      }
56  
57      @Test
58      public void testUseProtocolParameter()
59      {
60          CustomSSLProtocolSocketFactory sslProtocolSocketFactory = new CustomSSLProtocolSocketFactory("TLSv1");
61  
62          assertEquals(1, sslProtocolSocketFactory.getProtocols().length);
63          assertEquals("TLSv1", sslProtocolSocketFactory.getProtocols()[0]);
64      }
65  
66      @Test
67      public void testProtocolsSystemPropertyOverridesParameter()
68      {
69          try
70          {
71              System.setProperty("https.protocols", "TLSv1");
72              CustomSSLProtocolSocketFactory sslProtocolSocketFactory = new CustomSSLProtocolSocketFactory("SSLv3");
73  
74              assertEquals(1, sslProtocolSocketFactory.getProtocols().length);
75              assertEquals("TLSv1", sslProtocolSocketFactory.getProtocols()[0]);
76          }
77          finally
78          {
79              System.clearProperty("https.protocols");
80          }
81  
82      }
83  }