Skip to content

Commit 545ed2b

Browse files
author
TanyaEf
committed
Added unit test for JasperserverRestClient
1 parent fe2a6a6 commit 545ed2b

File tree

2 files changed

+127
-5
lines changed

2 files changed

+127
-5
lines changed

src/test/java/com/jaspersoft/jasperserver/jaxrs/client/core/JasperserverRestClientTest.java

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,44 @@
11
package com.jaspersoft.jasperserver.jaxrs.client.core;
22

3+
import com.jaspersoft.jasperserver.jaxrs.client.core.enums.AuthenticationType;
4+
import com.jaspersoft.jasperserver.jaxrs.client.filters.BasicAuthenticationFilter;
5+
import com.jaspersoft.jasperserver.jaxrs.client.filters.SessionOutputFilter;
36
import java.lang.reflect.Field;
7+
import java.net.URI;
8+
import java.util.HashMap;
9+
import javax.ws.rs.client.Entity;
10+
import javax.ws.rs.client.Invocation;
11+
import javax.ws.rs.client.WebTarget;
12+
import javax.ws.rs.core.Cookie;
13+
import javax.ws.rs.core.Form;
14+
import javax.ws.rs.core.MediaType;
15+
import javax.ws.rs.core.NewCookie;
16+
import javax.ws.rs.core.Response;
17+
import org.glassfish.jersey.client.ClientProperties;
418
import org.mockito.Mock;
519
import org.powermock.core.classloader.annotations.PrepareForTest;
620
import org.powermock.modules.testng.PowerMockTestCase;
721
import org.testng.annotations.AfterMethod;
822
import org.testng.annotations.BeforeMethod;
923
import org.testng.annotations.Test;
1024

25+
import static org.mockito.Matchers.any;
26+
import static org.mockito.Matchers.anyBoolean;
27+
import static org.mockito.Matchers.anyString;
28+
import static org.mockito.Matchers.isA;
1129
import static org.mockito.Mockito.doNothing;
30+
import static org.mockito.Mockito.doReturn;
31+
import static org.mockito.Mockito.never;
1232
import static org.mockito.Mockito.reset;
1333
import static org.mockito.Mockito.spy;
34+
import static org.mockito.Mockito.verify;
1435
import static org.mockito.MockitoAnnotations.initMocks;
1536
import static org.powermock.api.mockito.PowerMockito.whenNew;
1637
import static org.powermock.api.support.membermodification.MemberMatcher.field;
1738
import static org.powermock.api.support.membermodification.MemberMatcher.method;
1839
import static org.powermock.api.support.membermodification.MemberModifier.suppress;
1940
import static org.testng.Assert.assertEquals;
41+
import static org.testng.AssertJUnit.assertNotNull;
2042

2143
/**
2244
* Unit tests for {@link JasperserverRestClient}
@@ -34,6 +56,15 @@ public class JasperserverRestClientTest extends PowerMockTestCase {
3456
private Session sessionMock;
3557
@Mock
3658
AnonymousSession anonymousSessionMock;
59+
@Mock
60+
private WebTarget webTargetMock;
61+
@Mock
62+
private WebTarget rootTargetMock;
63+
@Mock
64+
private Invocation.Builder invocationBuilderMock;
65+
@Mock
66+
private Response responseMock;
67+
3768

3869
final String USER_NAME = "John";
3970
final String PASSWORD = "John's_super_secret_password";
@@ -129,6 +160,91 @@ public void should_return_proper_Session_object() throws Exception {
129160
assertEquals(retrieved, sessionMock);
130161
}
131162

163+
@Test
164+
public void should_involve_login_method_and_return_proper_session_object() throws Exception {
165+
// Given
166+
final URI location = new URI("location");
167+
final JasperserverRestClient client = new JasperserverRestClient(configurationMock);
168+
169+
whenNew(AuthenticationCredentials.class)
170+
.withArguments(USER_NAME, PASSWORD)
171+
.thenReturn(credentialsMock);
172+
173+
whenNew(SessionStorage.class)
174+
.withArguments(configurationMock, credentialsMock)
175+
.thenReturn(sessionStorageMock);
176+
doReturn(credentialsMock).when(sessionStorageMock).getCredentials();
177+
doReturn(rootTargetMock).when(sessionStorageMock).getRootTarget();
178+
doReturn(AuthenticationType.SPRING).when(configurationMock).getAuthenticationType();
179+
doReturn(USER_NAME).when(credentialsMock).getUsername();
180+
doReturn(PASSWORD).when(credentialsMock).getPassword();
181+
doReturn(webTargetMock).when(rootTargetMock).path(anyString());
182+
doReturn(webTargetMock).when(webTargetMock).property(anyString(), anyBoolean());
183+
doReturn(invocationBuilderMock).when(webTargetMock).request();
184+
doReturn(responseMock).when(invocationBuilderMock).post(any(Entity.class));
185+
doReturn(location).when(responseMock).getLocation();
186+
doReturn(302).when(responseMock).getStatus();
187+
doReturn(new HashMap<String, NewCookie>() {{
188+
put("JSESSIONID", new NewCookie(new Cookie("JSESSIONID", "AC0C233ED7E9BE5DD0D4A286E6C8BBAE")));
189+
}}).when(responseMock).getCookies();
190+
doReturn(rootTargetMock).when(rootTargetMock).register(any(SessionOutputFilter.class));
191+
192+
// When
193+
Session session = client.authenticate(USER_NAME, PASSWORD);
194+
195+
// Then
196+
assertNotNull(session);
197+
verify(sessionStorageMock).getCredentials();
198+
verify(sessionStorageMock).getRootTarget();
199+
verify(configurationMock).getAuthenticationType();
200+
verify(sessionStorageMock).getCredentials();
201+
verify(rootTargetMock, never()).register(isA(BasicAuthenticationFilter.class));
202+
verify(rootTargetMock).path("/j_spring_security_check");
203+
verify(webTargetMock).property(ClientProperties.FOLLOW_REDIRECTS, Boolean.FALSE);
204+
verify(webTargetMock).request();
205+
verify(invocationBuilderMock).post(Entity.entity(any(Form.class), MediaType.APPLICATION_FORM_URLENCODED_TYPE));
206+
verify(responseMock).getLocation();
207+
verify(responseMock).getCookies();
208+
verify(sessionStorageMock).setSessionId("AC0C233ED7E9BE5DD0D4A286E6C8BBAE");
209+
verify(rootTargetMock).register(isA(SessionOutputFilter.class));
210+
}
211+
212+
@Test
213+
public void should_involve_login_method_and_return_proper_session_object_within_basic_authorization() throws Exception {
214+
// Given
215+
final JasperserverRestClient client = new JasperserverRestClient(configurationMock);
216+
217+
whenNew(AuthenticationCredentials.class)
218+
.withArguments(USER_NAME, PASSWORD)
219+
.thenReturn(credentialsMock);
220+
221+
whenNew(SessionStorage.class)
222+
.withArguments(configurationMock, credentialsMock)
223+
.thenReturn(sessionStorageMock);
224+
doReturn(credentialsMock).when(sessionStorageMock).getCredentials();
225+
doReturn(rootTargetMock).when(sessionStorageMock).getRootTarget();
226+
doReturn(AuthenticationType.BASIC).when(configurationMock).getAuthenticationType();
227+
doReturn(USER_NAME).when(credentialsMock).getUsername();
228+
doReturn(PASSWORD).when(credentialsMock).getPassword();
229+
doReturn(rootTargetMock).when(rootTargetMock).register(isA(BasicAuthenticationFilter.class));
230+
231+
// When
232+
Session session = client.authenticate(USER_NAME, PASSWORD);
233+
234+
// Then
235+
assertNotNull(session);
236+
verify(sessionStorageMock).getCredentials();
237+
verify(sessionStorageMock).getRootTarget();
238+
verify(configurationMock).getAuthenticationType();
239+
verify(sessionStorageMock).getCredentials();
240+
verify(rootTargetMock).register(isA(BasicAuthenticationFilter.class));
241+
verify(rootTargetMock, never()).path("/j_spring_security_check");
242+
verify(webTargetMock, never()).property(ClientProperties.FOLLOW_REDIRECTS, Boolean.FALSE);
243+
verify(webTargetMock, never()).request();
244+
verify(invocationBuilderMock, never()).post(Entity.entity(any(Form.class), MediaType.APPLICATION_FORM_URLENCODED_TYPE));
245+
verify(rootTargetMock, never()).register(isA(SessionOutputFilter.class));
246+
}
247+
132248
@Test
133249
public void should_return_proper_anonymousSession_object() throws Exception {
134250

src/test/java/com/jaspersoft/jasperserver/jaxrs/client/core/SessionStorageTest.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,17 @@
3030
import static org.mockito.Matchers.eq;
3131
import static org.mockito.Mockito.doReturn;
3232
import static org.mockito.Mockito.reset;
33+
import static org.mockito.Mockito.spy;
3334
import static org.mockito.MockitoAnnotations.initMocks;
3435
import static org.powermock.api.support.membermodification.MemberMatcher.method;
36+
import static org.testng.Assert.assertEquals;
3537
import static org.testng.Assert.assertNotNull;
3638

3739
/**
3840
* Unit tests for {@link com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage}
3941
*/
40-
@PrepareForTest({SSLContext.class, EncryptionUtils.class, ClientBuilder.class})
42+
43+
@PrepareForTest({SessionStorage.class, SSLContext.class, EncryptionUtils.class, ClientBuilder.class})
4144
public class SessionStorageTest extends PowerMockTestCase {
4245

4346
@Mock
@@ -73,14 +76,17 @@ public void should_create_new_instance_session_storage() throws Exception {
7376

7477
// Given
7578
PowerMockito.suppress(method(SessionStorage.class, "init"));
76-
doReturn("http").when(configurationMock).getJasperReportsServerUrl();
7779
// When
78-
SessionStorage sessionStorage = new SessionStorage(configurationMock, credentialsMock);
80+
SessionStorage sessionStorageSpy = spy(new SessionStorage(configurationMock, credentialsMock));
7981
// Then
80-
assertNotNull(sessionStorage);
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);
8187
}
8288

83-
@Test(enabled = true)
89+
@Test
8490
public void should_init_ssl() {
8591

8692
/** - mock for static method **/

0 commit comments

Comments
 (0)