Skip to content

Commit 2292ffb

Browse files
author
TanyaEf
committed
Added unit test for SessionStorage
1 parent 545ed2b commit 2292ffb

File tree

1 file changed

+120
-76
lines changed

1 file changed

+120
-76
lines changed
Lines changed: 120 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,49 @@
11
package com.jaspersoft.jasperserver.jaxrs.client.core;//package com.jaspersoft.jasperserver.jaxrs.client.core;
22

3+
import com.fasterxml.jackson.databind.DeserializationFeature;
4+
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
35
import java.security.SecureRandom;
46
import java.security.cert.CertificateException;
57
import java.security.cert.X509Certificate;
6-
import java.util.HashMap;
78
import javax.net.ssl.SSLContext;
89
import javax.net.ssl.TrustManager;
910
import javax.net.ssl.X509TrustManager;
1011
import javax.ws.rs.client.Client;
1112
import javax.ws.rs.client.ClientBuilder;
12-
import javax.ws.rs.client.Entity;
1313
import javax.ws.rs.client.Invocation;
1414
import javax.ws.rs.client.WebTarget;
15-
import javax.ws.rs.core.Cookie;
16-
import javax.ws.rs.core.NewCookie;
1715
import javax.ws.rs.core.Response;
16+
import org.glassfish.jersey.filter.LoggingFilter;
17+
import org.glassfish.jersey.jackson.JacksonFeature;
1818
import org.mockito.Mock;
19-
import org.mockito.Mockito;
2019
import org.mockito.internal.util.reflection.Whitebox;
2120
import org.powermock.api.mockito.PowerMockito;
2221
import org.powermock.core.classloader.annotations.PrepareForTest;
2322
import org.powermock.modules.testng.PowerMockTestCase;
24-
import org.testng.annotations.AfterMethod;
2523
import org.testng.annotations.BeforeMethod;
2624
import org.testng.annotations.Test;
2725

2826
import static org.mockito.Matchers.any;
27+
import static org.mockito.Matchers.anyBoolean;
2928
import static org.mockito.Matchers.anyString;
3029
import static org.mockito.Matchers.eq;
30+
import static org.mockito.Matchers.isA;
3131
import static org.mockito.Mockito.doReturn;
32-
import static org.mockito.Mockito.reset;
33-
import static org.mockito.Mockito.spy;
32+
import static org.mockito.Mockito.never;
33+
import static org.mockito.Mockito.times;
34+
import static org.mockito.Mockito.verify;
35+
import static org.mockito.Mockito.when;
3436
import static org.mockito.MockitoAnnotations.initMocks;
37+
import static org.powermock.api.mockito.PowerMockito.mockStatic;
38+
import static org.powermock.api.mockito.PowerMockito.whenNew;
3539
import static org.powermock.api.support.membermodification.MemberMatcher.method;
40+
import static org.powermock.api.support.membermodification.MemberModifier.suppress;
3641
import static org.testng.Assert.assertEquals;
3742
import static org.testng.Assert.assertNotNull;
3843

3944
/**
4045
* Unit tests for {@link com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage}
4146
*/
42-
4347
@PrepareForTest({SessionStorage.class, SSLContext.class, EncryptionUtils.class, ClientBuilder.class})
4448
public class SessionStorageTest extends PowerMockTestCase {
4549

@@ -60,84 +64,123 @@ public class SessionStorageTest extends PowerMockTestCase {
6064
@Mock
6165
private Response responseMock;
6266
@Mock
63-
public Response.StatusType statusTypeMock;
67+
public SSLContext sslContextMock;
6468

6569
@Mock
66-
public SSLContext sslContextMock;
70+
private JacksonJaxbJsonProvider providerMock;
71+
@Mock
72+
public Response.StatusType statusTypeMock;
6773

6874

6975
@BeforeMethod
7076
public void before() {
7177
initMocks(this);
7278
}
7379

74-
@Test
75-
public void should_create_new_instance_session_storage() throws Exception {
76-
77-
// Given
78-
PowerMockito.suppress(method(SessionStorage.class, "init"));
79-
// When
80-
SessionStorage sessionStorageSpy = spy(new SessionStorage(configurationMock, credentialsMock));
81-
// Then
82-
assertNotNull(sessionStorageSpy);
83-
assertNotNull(Whitebox.getInternalState(sessionStorageSpy, "configuration"));
84-
assertNotNull(Whitebox.getInternalState(sessionStorageSpy, "credentials"));
85-
assertEquals(Whitebox.getInternalState(sessionStorageSpy, "rootTarget"), null);
86-
assertEquals(Whitebox.getInternalState(sessionStorageSpy, "sessionId"), null);
87-
}
88-
8980
@Test
9081
public void should_init_ssl() {
9182

9283
/** - mock for static method **/
93-
PowerMockito.mockStatic(ClientBuilder.class);
94-
Mockito.when(ClientBuilder.newBuilder()).thenReturn(builderMock);
84+
mockStatic(ClientBuilder.class);
85+
when(ClientBuilder.newBuilder()).thenReturn(builderMock);
9586

9687
/** - mocks for {@link SessionStorage#init()} method (no SSL) **/
97-
Mockito.doReturn("https://54.83.98.156/jasperserver-pro").when(configurationMock).getJasperReportsServerUrl();
98-
Mockito.doReturn(10000).when(configurationMock).getConnectionTimeout();
99-
Mockito.doReturn(8000).when(configurationMock).getReadTimeout();
100-
Mockito.doReturn(clientMock).when(builderMock).build();
101-
Mockito.doReturn(targetMock).when(clientMock).target("http://54.83.98.156/jasperserver-pro");
102-
103-
/** - mocks for {@link SessionStorage#getSecurityAttributes()} method (no SSL) **/
104-
Mockito.doReturn("Alex").when(credentialsMock).getUsername();
105-
Mockito.doReturn("oh, yeah!").when(credentialsMock).getPassword();
106-
107-
PowerMockito.mockStatic(EncryptionUtils.class);
108-
PowerMockito.when(EncryptionUtils.parseEncryptionParams(responseMock)).thenReturn(null);
109-
PowerMockito.when(EncryptionUtils.encryptPassword("oh, yeah!", "n_", "e_")).thenReturn("encryptPassword");
110-
111-
Mockito.doReturn(targetMock).when(targetMock).path(anyString());
112-
Mockito.doReturn(invocationBuilderMock).when(targetMock).request();
113-
Mockito.doReturn(responseMock).when(invocationBuilderMock).get();
114-
Mockito.doReturn(new HashMap<String, NewCookie>() {{
115-
put("JSESSIONID", new NewCookie(new Cookie("JSESSIONID", "AC0C233ED7E9BE5DD0D4A286E6C8BBAE")));
116-
}}).when(responseMock).getCookies();
117-
118-
/** - mocks for {@link SessionStorage#login()} method **/
119-
Mockito.doReturn(targetMock).when(targetMock).path(anyString());
120-
Mockito.doReturn(targetMock).when(targetMock).property(anyString(), eq(Boolean.FALSE));
121-
Mockito.doReturn(invocationBuilderMock).when(targetMock).request();
122-
Mockito.doReturn(invocationBuilderMock).when(invocationBuilderMock)
123-
.cookie("JSESSIONID", "AC0C233ED7E9BE5DD0D4A286E6C8BBAE");
124-
Mockito.doReturn(responseMock).when(invocationBuilderMock).post(any(Entity.class));
125-
126-
/** - mocks for {@link SessionStorage#parseSessionId()} method **/
127-
Mockito.doReturn("JSESSIONID=AC0C233ED7E9BE5DD0D4A286E6C8BBAE;")
128-
.when(responseMock)
129-
.getHeaderString("Set-Cookie");
130-
Mockito.doReturn(302).when(responseMock).getStatus();
131-
132-
88+
doReturn("https://54.83.98.156/jasperserver-pro").when(configurationMock).getJasperReportsServerUrl();
89+
doReturn(10000).when(configurationMock).getConnectionTimeout();
90+
doReturn(8000).when(configurationMock).getReadTimeout();
91+
doReturn(clientMock).when(builderMock).build();
92+
doReturn(targetMock).when(clientMock).target("http://54.83.98.156/jasperserver-pro");
13393
try {
13494
new SessionStorage(configurationMock, credentialsMock);
13595
} catch (Exception e) {
136-
//Mockito.verify(logMock, times(1)).error(anyString(), any(NoSuchAlgorithmException.class));
13796
assertNotNull(e);
13897
}
13998
}
14099

100+
@Test
101+
public void should_invoke_init_method_with_default_configuration() throws Exception {
102+
//given
103+
mockStatic(ClientBuilder.class);
104+
when(ClientBuilder.newBuilder()).thenReturn(builderMock);
105+
doReturn("http://54.83.98.156/jasperserver-pro").when(configurationMock).getJasperReportsServerUrl();
106+
doReturn(clientMock).when(builderMock).build();
107+
doReturn(null).when(configurationMock).getConnectionTimeout();
108+
doReturn(null).when(configurationMock).getReadTimeout();
109+
doReturn(targetMock).when(clientMock).target(anyString());
110+
doReturn(targetMock).when(targetMock).register(JacksonFeature.class);
111+
whenNew(JacksonJaxbJsonProvider.class).withNoArguments().thenReturn(providerMock);
112+
PowerMockito.doReturn(providerMock).when(providerMock).configure(eq(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES), anyBoolean());
113+
doReturn(targetMock).when(targetMock).register(providerMock);
114+
doReturn(false).when(configurationMock).getLogHttp();
115+
//when
116+
SessionStorage sessionStorage = new SessionStorage(configurationMock, credentialsMock);
117+
//then
118+
assertEquals(Whitebox.getInternalState(sessionStorage, "configuration"), configurationMock);
119+
assertEquals(Whitebox.getInternalState(sessionStorage, "credentials"), credentialsMock);
120+
verify(configurationMock, times(2)).getJasperReportsServerUrl();
121+
verify(builderMock).build();
122+
verify(configurationMock).getConnectionTimeout();
123+
verify(configurationMock).getReadTimeout();
124+
verify(clientMock).target("http://54.83.98.156/jasperserver-pro");
125+
verify(targetMock).register(JacksonFeature.class);
126+
verify(targetMock).register(providerMock);
127+
verify(configurationMock).getLogHttp();
128+
verify(targetMock, never()).register(LoggingFilter.class);
129+
}
130+
131+
@Test
132+
public void should_invoke_init_method_with_custom_configuration() throws Exception {
133+
//given
134+
mockStatic(ClientBuilder.class);
135+
when(ClientBuilder.newBuilder()).thenReturn(builderMock);
136+
doReturn("http://54.83.98.156/jasperserver-pro").when(configurationMock).getJasperReportsServerUrl();
137+
doReturn(clientMock).when(builderMock).build();
138+
doReturn(1000).when(configurationMock).getConnectionTimeout();
139+
doReturn(clientMock).when(clientMock).property("jersey.config.client.connectTimeout", 1000);
140+
doReturn(200).when(configurationMock).getReadTimeout();
141+
doReturn(clientMock).when(clientMock).property("jersey.config.client.readTimeout", 200);
142+
doReturn(targetMock).when(clientMock).target(anyString());
143+
doReturn(targetMock).when(targetMock).register(JacksonFeature.class);
144+
whenNew(JacksonJaxbJsonProvider.class).withNoArguments().thenReturn(providerMock);
145+
PowerMockito.doReturn(providerMock).when(providerMock).configure(eq(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES), anyBoolean());
146+
doReturn(targetMock).when(targetMock).register(providerMock);
147+
doReturn(true).when(configurationMock).getLogHttp();
148+
doReturn(targetMock).when(targetMock).register(any(LoggingFilter.class));
149+
//when
150+
SessionStorage sessionStorage = new SessionStorage(configurationMock, credentialsMock);
151+
//then
152+
assertEquals(Whitebox.getInternalState(sessionStorage, "configuration"), configurationMock);
153+
assertEquals(Whitebox.getInternalState(sessionStorage, "credentials"), credentialsMock);
154+
verify(configurationMock, times(2)).getJasperReportsServerUrl();
155+
verify(builderMock).build();
156+
verify(configurationMock).getConnectionTimeout();
157+
verify(configurationMock).getReadTimeout();
158+
verify(clientMock).property("jersey.config.client.connectTimeout", 1000);
159+
verify(clientMock).property("jersey.config.client.readTimeout", 200);
160+
verify(clientMock).target("http://54.83.98.156/jasperserver-pro");
161+
verify(targetMock).register(JacksonFeature.class);
162+
verify(targetMock).register(providerMock);
163+
verify(configurationMock).getLogHttp();
164+
verify(targetMock).register(isA(LoggingFilter.class));
165+
}
166+
167+
@Test
168+
public void should_create_new_instance_session_storage() throws Exception {
169+
170+
// Given
171+
suppress(method(SessionStorage.class, "init"));
172+
173+
// When
174+
SessionStorage sessionStorageSpy = new SessionStorage(configurationMock, credentialsMock);
175+
176+
// Then
177+
assertNotNull(sessionStorageSpy);
178+
assertNotNull(Whitebox.getInternalState(sessionStorageSpy, "configuration"));
179+
assertNotNull(Whitebox.getInternalState(sessionStorageSpy, "credentials"));
180+
assertEquals(Whitebox.getInternalState(sessionStorageSpy, "rootTarget"), null);
181+
assertEquals(Whitebox.getInternalState(sessionStorageSpy, "sessionId"), null);
182+
}
183+
141184
@Test(expectedExceptions = RuntimeException.class)
142185
public void should_throw_an_exception_when_unable_to_init_SSL_context() throws Exception {
143186

@@ -158,15 +201,15 @@ public void checkServerTrusted(X509Certificate[] certs, String authType) {
158201
}
159202
}};
160203

161-
PowerMockito.mockStatic(ClientBuilder.class, SSLContext.class);
162-
PowerMockito.when(ClientBuilder.newBuilder()).thenReturn(builderMock);
163-
PowerMockito.when(SSLContext.getInstance("SSL")).thenReturn(ctxMock);
204+
mockStatic(ClientBuilder.class, SSLContext.class);
205+
when(ClientBuilder.newBuilder()).thenReturn(builderMock);
206+
when(SSLContext.getInstance("SSL")).thenReturn(ctxMock);
164207

165208
PowerMockito.when(ctxMock, "init", null, managers, new SecureRandom()).thenThrow(new RuntimeException());
166209

167-
PowerMockito.doReturn("https://abc").when(configurationMock).getJasperReportsServerUrl();
168-
PowerMockito.doReturn(managers).when(configurationMock).getTrustManagers();
169-
PowerMockito.doReturn(100L).when(configurationMock).getReadTimeout();
210+
doReturn("https://abc").when(configurationMock).getJasperReportsServerUrl();
211+
doReturn(managers).when(configurationMock).getTrustManagers();
212+
doReturn(100L).when(configurationMock).getReadTimeout();
170213

171214
// When
172215
SessionStorage sessionStorageSpy = new SessionStorage(configurationMock, credentialsMock);
@@ -178,7 +221,7 @@ public void checkServerTrusted(X509Certificate[] certs, String authType) {
178221
public void should_set_and_get_state_for_object() {
179222

180223
// Given
181-
PowerMockito.suppress(method(SessionStorage.class, "init"));
224+
suppress(method(SessionStorage.class, "init"));
182225
doReturn("http").when(configurationMock).getJasperReportsServerUrl();
183226

184227
SessionStorage sessionStorage = new SessionStorage(configurationMock, credentialsMock);
@@ -193,8 +236,9 @@ public void should_set_and_get_state_for_object() {
193236
assertNotNull(sessionStorage.getSessionId());
194237
}
195238

196-
@AfterMethod
197-
public void after() {
198-
reset(builderMock, configurationMock, credentialsMock, invocationBuilderMock, responseMock, ctxMock, clientMock, targetMock);
199-
}
239+
// @AfterMethod
240+
// public void after() {
241+
// reset(builderMock, configurationMock, credentialsMock, invocationBuilderMock, responseMock, ctxMock, clientMock, targetMock);
242+
243+
200244
}

0 commit comments

Comments
 (0)