Skip to content

Commit 46cc098

Browse files
authored
Merge pull request #67 from amatiushkin/callback
Add tests for callback interceptor #60
2 parents 4213237 + 52ff901 commit 46cc098

File tree

3 files changed

+180
-0
lines changed

3 files changed

+180
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.intuit.ipp.interceptors;
2+
3+
import com.intuit.ipp.data.CDCResponse;
4+
import com.intuit.ipp.data.IntuitResponse;
5+
import com.intuit.ipp.exception.FMSException;
6+
import com.intuit.ipp.services.CDCQueryResult;
7+
import com.intuit.ipp.services.CallbackHandler;
8+
import com.intuit.ipp.services.CallbackMessage;
9+
10+
import java.util.List;
11+
12+
public class CallbackHandlerBase {
13+
14+
private static CallbackHandlerInterceptor interceptor = new CallbackHandlerInterceptor();
15+
16+
17+
protected List<CDCQueryResult> invokeCDC(List<CDCResponse> cdcResponse) throws FMSException {
18+
final IntuitResponse response = new IntuitResponse();
19+
response.setCDCResponse(cdcResponse);
20+
return invokeInterceptor(response).getCDCQueryResults();
21+
}
22+
23+
protected CallbackMessage invokeInterceptor(final IntuitResponse response) throws FMSException {
24+
final CallbackMessage message = new CallbackMessage();
25+
IntuitMessage m = new IntuitMessage();
26+
m.getResponseElements().setResponse(response);
27+
m.getResponseElements().setCallbackMessage(message);
28+
m.getRequestElements().setCallbackHandler(new CallbackHandler() {
29+
@Override
30+
public void execute(CallbackMessage callbackMessage) {
31+
32+
}
33+
} );
34+
interceptor.execute(m);
35+
return message;
36+
}
37+
38+
public static CallbackHandlerInterceptor callback() {
39+
return interceptor;
40+
}
41+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.intuit.ipp.interceptors;
2+
3+
import com.intuit.ipp.data.CDCResponse;
4+
import com.intuit.ipp.exception.FMSException;
5+
import com.intuit.ipp.services.CDCQueryResult;
6+
import org.testng.annotations.Test;
7+
8+
import java.util.Collections;
9+
import java.util.List;
10+
11+
import static org.testng.Assert.assertEquals;
12+
import static org.testng.Assert.assertFalse;
13+
import static org.testng.Assert.assertNotNull;
14+
import static org.testng.Assert.assertNull;
15+
16+
public class CallbackHandlerInterceptorCDCTest extends CallbackHandlerBase {
17+
18+
19+
@Test
20+
public void emptyListIsOk() throws FMSException {
21+
final List<CDCQueryResult> results = invokeCDC(Collections.<CDCResponse>emptyList());
22+
assertNull(results);
23+
}
24+
25+
@Test
26+
public void singleItemIsOk() throws FMSException {
27+
final List<CDCQueryResult> results = invokeCDC(Collections.singletonList(new CDCResponse()));
28+
29+
assertNotNull(results);
30+
assertFalse(results.isEmpty());
31+
assertEquals(1, results.size());
32+
}
33+
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
package com.intuit.ipp.interceptors;
2+
3+
4+
import com.intuit.ipp.core.Response;
5+
import com.intuit.ipp.data.IntuitEntity;
6+
import com.intuit.ipp.data.IntuitResponse;
7+
import com.intuit.ipp.data.QueryResponse;
8+
import com.intuit.ipp.exception.FMSException;
9+
import com.intuit.ipp.services.CallbackHandler;
10+
import com.intuit.ipp.services.CallbackMessage;
11+
import org.testng.annotations.Test;
12+
13+
import javax.xml.bind.JAXBElement;
14+
import javax.xml.namespace.QName;
15+
16+
import static org.testng.Assert.*;
17+
18+
public class CallbackHandlerInterceptorTest extends CallbackHandlerBase {
19+
20+
21+
@Test(expectedExceptions = NullPointerException.class)
22+
public void nullMessageNotOK() throws FMSException {
23+
callback().execute(null);
24+
}
25+
26+
@Test(expectedExceptions = NullPointerException.class)
27+
public void emptyMessageNotOK() throws FMSException {
28+
callback().execute(new IntuitMessage());
29+
}
30+
31+
@Test(expectedExceptions = ClassCastException.class)
32+
public void arbitraryResponseNotOk() throws FMSException {
33+
IntuitMessage m = new IntuitMessage();
34+
m.getResponseElements().setResponse(new Response() {});
35+
callback().execute(m);
36+
}
37+
38+
@Test(expectedExceptions = NullPointerException.class)
39+
public void noCallBackMessageNotOk() throws FMSException {
40+
IntuitMessage m = new IntuitMessage();
41+
m.getResponseElements().setResponse(new IntuitResponse());
42+
callback().execute(m);
43+
}
44+
45+
@Test(expectedExceptions = NullPointerException.class)
46+
public void noCallBackHandlerNotOk() throws FMSException {
47+
IntuitMessage m = new IntuitMessage();
48+
m.getResponseElements().setResponse(new IntuitResponse());
49+
m.getResponseElements().setCallbackMessage(new CallbackMessage());
50+
callback().execute(m);
51+
}
52+
53+
/**
54+
* This test demonstrates minimum required setup
55+
* for interceptor to successfully execute on request
56+
*
57+
* @throws FMSException
58+
*/
59+
@Test
60+
public void stubOK() throws FMSException {
61+
IntuitMessage m = new IntuitMessage();
62+
m.getResponseElements().setResponse(new IntuitResponse());
63+
final CallbackMessage message = new CallbackMessage();
64+
m.getResponseElements().setCallbackMessage(message);
65+
m.getRequestElements().setCallbackHandler(new CallbackHandler() {
66+
@Override
67+
public void execute(CallbackMessage callbackMessage) {
68+
assertEquals(message,callbackMessage, "Callback message is not the same as one in response");
69+
}
70+
});
71+
callback().execute(m);
72+
}
73+
74+
@Test
75+
public void entityIsOk() throws FMSException {
76+
final IntuitResponse response = new IntuitResponse();
77+
response.setIntuitObject(getDummyTestEntity());
78+
79+
final CallbackMessage message = invokeInterceptor(response);
80+
assertNotNull(message.getEntity());
81+
assertTrue(message.getEntity() instanceof IntuitTestEntity);
82+
}
83+
84+
@Test
85+
public void queryIsOk() throws FMSException {
86+
87+
final QueryResponse value = new QueryResponse();
88+
value.setMaxResults(10);
89+
90+
final IntuitResponse response = new IntuitResponse();
91+
response.setQueryResponse(value);
92+
93+
final CallbackMessage message = invokeInterceptor(response);
94+
assertNotNull(message.getQueryResult());
95+
assertEquals(10, (int)message.getQueryResult().getMaxResults());
96+
}
97+
98+
99+
100+
public class IntuitTestEntity extends IntuitEntity {}
101+
102+
public JAXBElement<? extends IntuitEntity> getDummyTestEntity() {
103+
QName qname = new QName("http://www.example.com", "interceptor-test");
104+
return new JAXBElement<>(qname, IntuitTestEntity.class, new IntuitTestEntity());
105+
}
106+
}

0 commit comments

Comments
 (0)