Skip to content

Commit e17c89e

Browse files
author
TanyaEf
committed
Updated unit testr for UserService
1 parent 0a5a4f0 commit e17c89e

File tree

4 files changed

+242
-557
lines changed

4 files changed

+242
-557
lines changed

src/main/java/com/jaspersoft/jasperserver/jaxrs/client/apiadapters/authority/users/UsersService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@ public UsersService forOrganization(ClientTenant organization) {
4747
}
4848

4949
public SingleUserRequestAdapter user(ClientUser user) {
50-
if (organizationId != null && (user.getTenantId() == null || !user.getTenantId().equals(organizationId))) {
50+
if (organizationId != null && user.getTenantId() == null) {
5151
user.setTenantId(organizationId);
5252
}
5353
return new SingleUserRequestAdapter(sessionStorage, user);
5454
}
5555

5656
public SingleUserRequestAdapter user(String userId) {
57-
return new SingleUserRequestAdapter(sessionStorage, new ClientUser().setUsername(userId).setTenantId(organizationId));
57+
return this.user(new ClientUser().setUsername(userId));
5858
}
5959

6060
public BatchUsersRequestAdapter allUsers() {
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.authority.users;
2+
3+
import com.jaspersoft.jasperserver.dto.authority.UsersListWrapper;
4+
import com.jaspersoft.jasperserver.jaxrs.client.core.Callback;
5+
import com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest;
6+
import com.jaspersoft.jasperserver.jaxrs.client.core.RequestExecution;
7+
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
8+
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.handling.DefaultErrorHandler;
9+
import com.jaspersoft.jasperserver.jaxrs.client.core.operationresult.OperationResult;
10+
import java.util.concurrent.atomic.AtomicInteger;
11+
import javax.ws.rs.core.MultivaluedHashMap;
12+
import javax.ws.rs.core.MultivaluedMap;
13+
import org.mockito.Mock;
14+
import org.powermock.core.classloader.annotations.PrepareForTest;
15+
import org.powermock.modules.testng.PowerMockTestCase;
16+
import org.testng.Assert;
17+
import org.testng.annotations.AfterMethod;
18+
import org.testng.annotations.BeforeMethod;
19+
import org.testng.annotations.Test;
20+
21+
import static com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest.buildRequest;
22+
import static org.mockito.Matchers.any;
23+
import static org.mockito.Matchers.eq;
24+
import static org.mockito.Mockito.times;
25+
import static org.mockito.Mockito.verify;
26+
import static org.mockito.Mockito.when;
27+
import static org.mockito.MockitoAnnotations.initMocks;
28+
import static org.powermock.api.mockito.PowerMockito.doReturn;
29+
import static org.powermock.api.mockito.PowerMockito.mockStatic;
30+
import static org.powermock.api.mockito.PowerMockito.spy;
31+
import static org.powermock.reflect.internal.WhiteboxImpl.getInternalState;
32+
import static org.testng.AssertJUnit.assertEquals;
33+
import static org.testng.AssertJUnit.assertNotNull;
34+
import static org.testng.AssertJUnit.assertNotSame;
35+
import static org.testng.AssertJUnit.assertSame;
36+
import static org.testng.AssertJUnit.assertTrue;
37+
38+
/**
39+
* Unit tests for {@link com.jaspersoft.jasperserver.jaxrs.client.apiadapters.authority.organizations.BatchOrganizationsAdapter}
40+
*/
41+
@SuppressWarnings("unchecked")
42+
@PrepareForTest({BatchUsersRequestAdapter.class, JerseyRequest.class})
43+
public class BatchUsersRequestAdapterTest extends PowerMockTestCase {
44+
@Mock
45+
private SessionStorage sessionStorageMock;
46+
@Mock
47+
private JerseyRequest<UsersListWrapper> requestMock;
48+
@Mock
49+
private OperationResult<UsersListWrapper> operationResultMock;
50+
51+
@BeforeMethod
52+
public void before() {
53+
initMocks(this);
54+
}
55+
56+
@Test
57+
public void should_pass_proper_session_storage_to_parent_class_and_set_own_fields() {
58+
59+
// When
60+
BatchUsersRequestAdapter adapter = spy(new BatchUsersRequestAdapter(sessionStorageMock, null));
61+
62+
// Then
63+
Assert.assertNotNull(adapter);
64+
assertEquals(sessionStorageMock, getInternalState(adapter, "sessionStorage"));
65+
}
66+
67+
68+
@Test
69+
/**
70+
* for {@link com.jaspersoft.jasperserver.jaxrs.client.apiadapters.authority.organizations.BatchOrganizationsAdapter#asyncGet(com.jaspersoft.jasperserver.jaxrs.client.core.Callback)}
71+
*/
72+
public void should_run_get_method_asynchronously() throws Exception {
73+
74+
// Given
75+
mockStatic(JerseyRequest.class);
76+
when(buildRequest(eq(sessionStorageMock), eq(UsersListWrapper.class), eq(new String[]{"users/"}), any(DefaultErrorHandler.class))).thenReturn(requestMock);
77+
doReturn(operationResultMock).when(requestMock).get();
78+
BatchUsersRequestAdapter adapterSpy = spy(new BatchUsersRequestAdapter(sessionStorageMock, null));
79+
80+
final AtomicInteger newThreadId = new AtomicInteger();
81+
final int currentThreadId = (int) Thread.currentThread().getId();
82+
83+
final Callback<OperationResult<UsersListWrapper>, Void> callback = spy(new Callback<OperationResult<UsersListWrapper>, Void>() {
84+
@Override
85+
public Void execute(OperationResult<UsersListWrapper> data) {
86+
newThreadId.set((int) Thread.currentThread().getId());
87+
synchronized (this) {
88+
this.notifyAll();
89+
}
90+
return null;
91+
}
92+
});
93+
94+
doReturn(null).when(callback).execute(operationResultMock);
95+
96+
// When
97+
RequestExecution retrieved = adapterSpy.asyncGet(callback);
98+
99+
synchronized (callback) {
100+
callback.wait(1000);
101+
}
102+
103+
// Then
104+
verify(requestMock).get();
105+
verify(callback).execute(operationResultMock);
106+
assertNotNull(retrieved);
107+
assertNotSame(currentThreadId, newThreadId.get());
108+
}
109+
110+
@Test
111+
public void should_get_resource() {
112+
// Given
113+
MultivaluedMap<String, String> params = new MultivaluedHashMap<String, String>();
114+
mockStatic(JerseyRequest.class);
115+
when(buildRequest(eq(sessionStorageMock), eq(UsersListWrapper.class), eq(new String[]{"users/"}), any(DefaultErrorHandler.class))).thenReturn(requestMock);
116+
doReturn(operationResultMock).when(requestMock).get();
117+
doReturn(requestMock).when(requestMock).addParams(params);
118+
BatchUsersRequestAdapter adapterSpy = spy(new BatchUsersRequestAdapter(sessionStorageMock, null));
119+
//When
120+
OperationResult<UsersListWrapper> retrievedResult = adapterSpy.get();
121+
// Then
122+
assertSame(retrievedResult, operationResultMock);
123+
verify(requestMock, times(1)).get();
124+
verify(requestMock, times(1)).addParams(params);
125+
}
126+
127+
@Test
128+
public void should_get_resource_with_params() {
129+
// Given
130+
BatchUsersRequestAdapter adapterSpy = spy(new BatchUsersRequestAdapter(sessionStorageMock, null));
131+
mockStatic(JerseyRequest.class);
132+
when(buildRequest(eq(sessionStorageMock), eq(UsersListWrapper.class), eq(new String[]{"users/"}), any(DefaultErrorHandler.class))).thenReturn(requestMock);
133+
doReturn(requestMock).when(requestMock).addParams(any(MultivaluedHashMap.class));
134+
doReturn(operationResultMock).when(requestMock).get();
135+
// When
136+
OperationResult<UsersListWrapper> retrievedResult = adapterSpy.param(UsersParameter.INCLUDE_SUB_ORGS, "true").get();
137+
// Then
138+
assertSame(retrievedResult, operationResultMock);
139+
verify(requestMock, times(1)).get();
140+
assertTrue(((MultivaluedHashMap<String, String>)getInternalState(adapterSpy, "params")).size()== 1);
141+
verify(requestMock, times(1)).addParams(any(MultivaluedHashMap.class));
142+
}
143+
144+
@AfterMethod
145+
public void after() {
146+
sessionStorageMock = null;
147+
requestMock = null;
148+
operationResultMock = null;
149+
}
150+
}

0 commit comments

Comments
 (0)