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