11package com .jaspersoft .jasperserver .jaxrs .client .core ;//package com.jaspersoft.jasperserver.jaxrs.client.core;
22
3- import org .mockito .Mock ;
4- import org .mockito .internal .util .reflection .Whitebox ;
5- import org .powermock .api .mockito .PowerMockito ;
6- import org .powermock .core .classloader .annotations .PrepareForTest ;
7- import org .powermock .modules .testng .PowerMockTestCase ;
8- import org .testng .annotations .AfterMethod ;
9- import org .testng .annotations .BeforeMethod ;
10- import org .testng .annotations .Test ;
11-
3+ import java .security .SecureRandom ;
4+ import java .security .cert .CertificateException ;
5+ import java .security .cert .X509Certificate ;
6+ import java .util .HashMap ;
127import javax .net .ssl .SSLContext ;
138import javax .net .ssl .TrustManager ;
149import javax .net .ssl .X509TrustManager ;
1510import javax .ws .rs .client .Client ;
1611import javax .ws .rs .client .ClientBuilder ;
12+ import javax .ws .rs .client .Entity ;
1713import javax .ws .rs .client .Invocation ;
1814import javax .ws .rs .client .WebTarget ;
15+ import javax .ws .rs .core .Cookie ;
16+ import javax .ws .rs .core .NewCookie ;
1917import javax .ws .rs .core .Response ;
20- import java .security .SecureRandom ;
21- import java .security .cert .CertificateException ;
22- import java .security .cert .X509Certificate ;
18+ import org .mockito .Mock ;
19+ import org .mockito .Mockito ;
20+ import org .mockito .internal .util .reflection .Whitebox ;
21+ import org .powermock .api .mockito .PowerMockito ;
22+ import org .powermock .core .classloader .annotations .PrepareForTest ;
23+ import org .powermock .modules .testng .PowerMockTestCase ;
24+ import org .testng .annotations .AfterMethod ;
25+ import org .testng .annotations .BeforeMethod ;
26+ import org .testng .annotations .Test ;
2327
28+ import static org .mockito .Matchers .any ;
29+ import static org .mockito .Matchers .anyString ;
30+ import static org .mockito .Matchers .eq ;
2431import static org .mockito .Mockito .doReturn ;
2532import static org .mockito .Mockito .reset ;
2633import static org .mockito .MockitoAnnotations .initMocks ;
@@ -49,6 +56,12 @@ public class SessionStorageTest extends PowerMockTestCase {
4956 private Invocation .Builder invocationBuilderMock ;
5057 @ Mock
5158 private Response responseMock ;
59+ @ Mock
60+ public Response .StatusType statusTypeMock ;
61+
62+ @ Mock
63+ public SSLContext sslContextMock ;
64+
5265
5366 @ BeforeMethod
5467 public void before () {
@@ -67,6 +80,58 @@ public void should_create_new_instance_session_storage() throws Exception {
6780 assertNotNull (sessionStorage );
6881 }
6982
83+ @ Test (enabled = true )
84+ public void should_init_ssl () {
85+
86+ /** - mock for static method **/
87+ PowerMockito .mockStatic (ClientBuilder .class );
88+ Mockito .when (ClientBuilder .newBuilder ()).thenReturn (builderMock );
89+
90+ /** - mocks for {@link SessionStorage#init()} method (no SSL) **/
91+ Mockito .doReturn ("https://54.83.98.156/jasperserver-pro" ).when (configurationMock ).getJasperReportsServerUrl ();
92+ Mockito .doReturn (10000 ).when (configurationMock ).getConnectionTimeout ();
93+ Mockito .doReturn (8000 ).when (configurationMock ).getReadTimeout ();
94+ Mockito .doReturn (clientMock ).when (builderMock ).build ();
95+ Mockito .doReturn (targetMock ).when (clientMock ).target ("http://54.83.98.156/jasperserver-pro" );
96+
97+ /** - mocks for {@link SessionStorage#getSecurityAttributes()} method (no SSL) **/
98+ Mockito .doReturn ("Alex" ).when (credentialsMock ).getUsername ();
99+ Mockito .doReturn ("oh, yeah!" ).when (credentialsMock ).getPassword ();
100+
101+ PowerMockito .mockStatic (EncryptionUtils .class );
102+ PowerMockito .when (EncryptionUtils .parseEncryptionParams (responseMock )).thenReturn (null );
103+ PowerMockito .when (EncryptionUtils .encryptPassword ("oh, yeah!" , "n_" , "e_" )).thenReturn ("encryptPassword" );
104+
105+ Mockito .doReturn (targetMock ).when (targetMock ).path (anyString ());
106+ Mockito .doReturn (invocationBuilderMock ).when (targetMock ).request ();
107+ Mockito .doReturn (responseMock ).when (invocationBuilderMock ).get ();
108+ Mockito .doReturn (new HashMap <String , NewCookie >() {{
109+ put ("JSESSIONID" , new NewCookie (new Cookie ("JSESSIONID" , "AC0C233ED7E9BE5DD0D4A286E6C8BBAE" )));
110+ }}).when (responseMock ).getCookies ();
111+
112+ /** - mocks for {@link SessionStorage#login()} method **/
113+ Mockito .doReturn (targetMock ).when (targetMock ).path (anyString ());
114+ Mockito .doReturn (targetMock ).when (targetMock ).property (anyString (), eq (Boolean .FALSE ));
115+ Mockito .doReturn (invocationBuilderMock ).when (targetMock ).request ();
116+ Mockito .doReturn (invocationBuilderMock ).when (invocationBuilderMock )
117+ .cookie ("JSESSIONID" , "AC0C233ED7E9BE5DD0D4A286E6C8BBAE" );
118+ Mockito .doReturn (responseMock ).when (invocationBuilderMock ).post (any (Entity .class ));
119+
120+ /** - mocks for {@link SessionStorage#parseSessionId()} method **/
121+ Mockito .doReturn ("JSESSIONID=AC0C233ED7E9BE5DD0D4A286E6C8BBAE;" )
122+ .when (responseMock )
123+ .getHeaderString ("Set-Cookie" );
124+ Mockito .doReturn (302 ).when (responseMock ).getStatus ();
125+
126+
127+ try {
128+ new SessionStorage (configurationMock , credentialsMock );
129+ } catch (Exception e ) {
130+ //Mockito.verify(logMock, times(1)).error(anyString(), any(NoSuchAlgorithmException.class));
131+ assertNotNull (e );
132+ }
133+ }
134+
70135 @ Test (expectedExceptions = RuntimeException .class )
71136 public void should_throw_an_exception_when_unable_to_init_SSL_context () throws Exception {
72137
@@ -109,15 +174,17 @@ public void should_set_and_get_state_for_object() {
109174 // Given
110175 PowerMockito .suppress (method (SessionStorage .class , "init" ));
111176 doReturn ("http" ).when (configurationMock ).getJasperReportsServerUrl ();
112- SessionStorage sessionStorageSpy = PowerMockito .spy (new SessionStorage (configurationMock , credentialsMock ));
177+
178+ SessionStorage sessionStorage = new SessionStorage (configurationMock , credentialsMock );
179+
113180 // When
114- Whitebox .setInternalState (sessionStorageSpy , "rootTarget" , targetMock );
115- Whitebox .setInternalState (sessionStorageSpy , "sessionId" , "sessionId" );
181+ Whitebox .setInternalState (sessionStorage , "rootTarget" , targetMock );
182+ Whitebox .setInternalState (sessionStorage , "sessionId" , "sessionId" );
116183 // Then
117- assertNotNull (sessionStorageSpy .getConfiguration ());
118- assertNotNull (sessionStorageSpy .getCredentials ());
119- assertNotNull (sessionStorageSpy .getRootTarget ());
120- assertNotNull (sessionStorageSpy .getSessionId ());
184+ assertNotNull (sessionStorage .getConfiguration ());
185+ assertNotNull (sessionStorage .getCredentials ());
186+ assertNotNull (sessionStorage .getRootTarget ());
187+ assertNotNull (sessionStorage .getSessionId ());
121188 }
122189
123190 @ AfterMethod
0 commit comments