package com.mozu.client; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.InputStream; import java.util.HashMap; import java.util.concurrent.CountDownLatch; import mockit.Expectations; import mockit.Mock; import mockit.MockUp; import mockit.Mocked; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; import org.apache.http.RequestLine; import org.apache.http.StatusLine; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.concurrent.FutureCallback; import org.apache.http.impl.nio.client.CloseableHttpAsyncClient; import org.apache.http.message.BasicHttpEntityEnclosingRequest; import org.apache.http.util.EntityUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.mozu.api.ApiContext; import com.mozu.api.ApiException; import com.mozu.api.AsyncCallback; import com.mozu.api.MozuConfig; import com.mozu.api.MozuUrl; import com.mozu.api.cache.CacheManager; import com.mozu.api.cache.CacheManagerFactory; import com.mozu.api.cache.impl.CacheItem; import com.mozu.api.contracts.tenant.Tenant; import com.mozu.api.resources.platform.TenantResource; import com.mozu.api.security.AppAuthenticator; import com.mozu.api.security.AuthTicket; import com.mozu.api.security.AuthenticationProfile; import com.mozu.api.security.UserAuthenticator; import com.mozu.api.utils.MozuHttpClientPool; public final class MozuClientUnitTest { private static final Integer TENANT_ID = new Integer(11); private static final Integer SITE_ID = new Integer(22); private static final Integer MASTER_CATALOG_ID = new Integer(33); private static final Integer CATALOG_ID = new Integer(44); private static final String TENANT_URL = "http://TenantUrl"; private static final String BASE_URL = "http://BaseUrl"; private static final String BASE_PCI_URL = "http://BasePciUrl"; private static final String BASE_DEV_PCI_URL = "http://BaseDevPciUrl"; protected static final String AUTH_ACCESS_TOKEN = "AuthAccessToken"; private static final String BODY_STRING = "{\"body\": [{\"key1\":\"value1\"}, {\"key2\":\"value2\"}]}"; private static final String TENANT_DOMAIN = "TenantDomain"; private static final String LOCALE = "en_US"; private static final String CURRENCY = "USD"; @Mocked ApiContext mockApiContext; @Mocked MozuUrl mockResourceUrl; @Mocked AppAuthenticator mockAppAuthenticator; @Mocked AuthTicket mockAuthTicket; @Mocked AuthenticationProfile mockAuthenticationProfile; @Mocked InputStream mockInStream; @Mocked HttpResponse mockHttpResponse; @Mocked TenantResource mockTenantResource; @Mocked Tenant mockTenant; @Mocked BasicHttpEntityEnclosingRequest mockHttpRequest; @Mocked CloseableHttpAsyncClient mockHttpClient; @Mocked UserAuthenticator mockUserAuthenticator; @Mocked StatusLine mockStatusLine; @Mocked HttpEntity mockHttpEntity; @Mocked InputStream mockInputStream; @Mocked RequestLine mockRequestLine; @Mocked CacheManager<CacheItem> mockCacheManager; @Mocked MozuHttpClientPool mockClientPool; @Mocked CountDownLatch mockLatch; @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void setContextTest() throws Exception { new Expectations() { // setContext { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2; } { mockApiContext.getCurrency(); result=CURRENCY; times=2; } // validateContext { AppAuthenticator.getInstance(); result=mockAppAuthenticator; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.TENANT_POD; } { mockApiContext.getTenantId(); result=TENANT_ID; } { mockApiContext.getTenantUrl(); result=TENANT_URL; times=2; } }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); mozuClient.validateContext(); } @Test public void setContextEmptyUrlTest() throws Exception { new MockUp<TenantResource>() { @Mock void $init() {} @Mock Tenant getTenant(Integer tenantId) throws Exception { return mockTenant; } }; new Expectations() { // setContext { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2; } { mockApiContext.getCurrency(); result=CURRENCY; times=2; } // validateContext { AppAuthenticator.getInstance(); result=mockAppAuthenticator; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.TENANT_POD; } { mockApiContext.getTenantId(); result=TENANT_ID; } { mockApiContext.getTenantUrl(); result=""; } { mockApiContext.getTenantId(); result=TENANT_ID; } { mockTenant.getDomain(); result=TENANT_DOMAIN; } { AppAuthenticator.isUseSSL(); result=anyBoolean; } }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); mozuClient.validateContext(); } @Test public void setContextBadTenantIdTest() { new Expectations() { { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} { AppAuthenticator.getInstance(); result=mockAppAuthenticator; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.TENANT_POD; } { mockApiContext.getTenantId(); result=new Integer(0); } }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); try { mozuClient.validateContext(); fail("ApiException expected"); } catch (ApiException apiException) { // expected assertEquals("TenantId is missing", apiException.getMessage()); } catch (Exception e) { fail("Context failed validation: " + e.getMessage()); } } @Test public void setContextBadResourceUrlTest() { new Expectations() { { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} { AppAuthenticator.getInstance(); result=mockAppAuthenticator; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.HOME_POD; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.HOME_POD; } }; MozuConfig.setBaseUrl(BASE_URL); MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); try { mozuClient.validateContext(); } catch (Exception e) { fail("Context failed validation " + e.getMessage()); } } @Test public void setBlankAppAuthenticatorTest() { new Expectations() { { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} { AppAuthenticator.getInstance(); result=null; } }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); try { mozuClient.validateContext(); fail("ApiException expected"); } catch (ApiException apiException) { // expected assertEquals("Application has not been authorized to access Mozu.", apiException.getMessage()); } catch (Exception e) { fail("Context failed validation " + e.getMessage()); } } @Test public void setContextBlankAuthBaseUrlTest() { new Expectations() { { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} { AppAuthenticator.getInstance(); result=mockAppAuthenticator; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.HOME_POD; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.HOME_POD; } { MozuConfig.getBaseUrl(); result=""; } }; MozuConfig.setBaseUrl(""); MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); try { mozuClient.validateContext(); fail("ApiException expected"); } catch (ApiException apiException) { // expected assertEquals("Authentication.Instance.BaseUrl is missing", apiException.getMessage()); } catch (Exception e) { fail("Context failed validation " + e.getMessage()); } } @Test public void setContextBlankBasePciUrlTest() { new Expectations() { { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} { AppAuthenticator.getInstance(); result=mockAppAuthenticator; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.PCI_POD; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.PCI_POD; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.PCI_POD; } { mockApiContext.getTenantId(); result=TENANT_ID; } }; MozuConfig.setBasePciUrl(""); MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); //mozuClient.set mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); try { mozuClient.validateContext(); fail("ApiException expected"); } catch (ApiException apiException) { // expected assertEquals("Authentication.Instance.BasePciUrl is missing", apiException.getMessage()); } catch (Exception e) { fail("Context failed validation " + e.getMessage()); } } @Test public void setContextBasePciUrlTest() { new MockUp<TenantResource>() { @Mock void $init() {} @Mock Tenant getTenant(Integer tenantId) throws Exception { return mockTenant; } }; new Expectations() { { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} { AppAuthenticator.getInstance(); result=mockAppAuthenticator; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.PCI_POD; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.PCI_POD; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.PCI_POD; } { mockApiContext.getTenantId(); result=TENANT_ID; } { mockApiContext.getTenantId(); result=TENANT_ID; } { mockTenant.getIsDevTenant(); result=false;} }; MozuConfig.setBasePciUrl(BASE_PCI_URL); MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); try { mozuClient.validateContext(); } catch (Exception e) { fail("Context failed validation " + e.getMessage()); } } @Test public void setContextBaseDevPciUrl() { new MockUp<TenantResource>() { @Mock void $init() {} @Mock Tenant getTenant(Integer tenantId) throws Exception { return mockTenant; } }; new Expectations() { { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} { AppAuthenticator.getInstance(); result=mockAppAuthenticator; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.PCI_POD; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.PCI_POD; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.PCI_POD; } { mockApiContext.getTenantId(); result=TENANT_ID; } { mockApiContext.getTenantId(); result=TENANT_ID; } { mockTenant.getIsDevTenant(); result=true;} }; MozuConfig.setBaseDevPciUrl(BASE_DEV_PCI_URL); MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); try { mozuClient.validateContext(); } catch (Exception e) { fail("Context failed validation " + e.getMessage()); } } @Test public void executeRequestGetTest() throws Exception { new MockUp<BasicHttpEntityEnclosingRequest>() { @Mock void $init(String method, String uri) {} @Mock void setEntity(HttpEntity entity) {} @Mock void setHeader(String name, String value) {} @Mock void addHeader(String name, String value) {} }; new MockUp<org.apache.commons.io.IOUtils>() { @Mock String toString(InputStream inStream, String type) { return "{}"; } }; new Expectations() { // setContext { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} // validateContext { AppAuthenticator.getInstance(); result=mockAppAuthenticator; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.TENANT_POD; } { mockApiContext.getTenantId(); result=TENANT_ID; } { mockApiContext.getTenantUrl(); result=TENANT_URL; times=2; } {MozuHttpClientPool.getInstance(); result=mockClientPool;} {mockClientPool.getHttpClient(); result=mockHttpClient;} // buildRequest { mockResourceUrl.getUrl(); result=TENANT_URL; } { mockApiContext.getUserAuthTicket(); result=null; } { AppAuthenticator.addAuthHeader(); result=anyString; } {mockHttpRequest.getRequestLine(); result=mockRequestLine;} {mockRequestLine.getUri(); result="SomeString";} { mockApiContext.getSiteId(); result=SITE_ID; times=2; } {mockApiContext.getCurrency(); result=null;} {mockApiContext.getLocale(); result=null;} { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=2; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=2; } {mockHttpRequest.containsHeader(anyString); result=false;} // Execute request {CacheManagerFactory.getCacheManager(); result=null;} {new CountDownLatch(1); result=mockLatch;} {mockHttpClient.execute((HttpHost)any, (HttpRequest)any, (FutureCallback<HttpResponse>)any);} {mockLatch.await();} }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); mozuClient.setBaseAddress(BASE_URL); mozuClient.setVerb("GET"); mozuClient.setBody(BODY_STRING); mozuClient.executeRequest(); mozuClient.getResult(); } @Test public void executeRequestGetExceptionTest() throws Exception { new MockUp<BasicHttpEntityEnclosingRequest>() { @Mock void $init(String method, String uri) {} @Mock void setEntity(HttpEntity entity) {} @Mock void setHeader(String name, String value) {} @Mock void addHeader(String name, String value) {} }; new MockUp<org.apache.commons.io.IOUtils>() { @Mock String toString(InputStream inStream, String type) { return "{}"; } }; new Expectations() { // setContext { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} // validateContext { AppAuthenticator.getInstance(); result=mockAppAuthenticator; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.TENANT_POD; } { mockApiContext.getTenantId(); result=TENANT_ID; } { mockApiContext.getTenantUrl(); result=TENANT_URL; times=2; } {MozuHttpClientPool.getInstance(); result=mockClientPool;} {mockClientPool.getHttpClient(); result=mockHttpClient;} // buildRequest { mockResourceUrl.getUrl(); result=TENANT_URL; } { mockApiContext.getUserAuthTicket(); result=null; } { AppAuthenticator.addAuthHeader(); result=anyString; } {mockHttpRequest.getRequestLine(); result=mockRequestLine;} {mockRequestLine.getUri(); result="SomeString";} { mockApiContext.getSiteId(); result=SITE_ID; times=2; } {mockApiContext.getCurrency(); result=null;} {mockApiContext.getLocale(); result=null;} { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=2; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=2; } {mockHttpRequest.containsHeader(anyString); result=false;} // Execute request {CacheManagerFactory.getCacheManager(); result=null;} {new CountDownLatch(1); result=mockLatch;} {mockHttpClient.execute((HttpHost)any, (HttpRequest)any, (FutureCallback<HttpResponse>)any); result=new ApiException("Error returned from Mozu");} }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); mozuClient.setBaseAddress(BASE_URL); mozuClient.setVerb("GET"); mozuClient.setBody(BODY_STRING); try { mozuClient.executeRequest(); fail("404 Test Exception expected"); } catch (ApiException ae) { // expected assertTrue(ae.getMessage().contains("Error returned from Mozu")); } } @Test public void executeRequestPostTest() throws Exception { new MockUp<HttpPost>() { @Mock void $init(String method) {} @Mock void setEntity(HttpEntity entity) {} @Mock void setHeader(String name, String value) {} @Mock void addHeader(String name, String value) {} }; new Expectations() { // setContext { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} {new CountDownLatch(1); result=mockLatch;} {MozuHttpClientPool.getInstance(); result=mockClientPool;} {mockClientPool.getHttpClient(); result=mockHttpClient;} // Execute request {mockHttpClient.execute((HttpEntityEnclosingRequestBase)any, (FutureCallback<HttpResponse>)any);} {mockLatch.await();} }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); mozuClient.executePostRequest(BODY_STRING, BASE_URL, new HashMap<String, String>()); } @Test public void executeRequestPutTest() throws Exception { new MockUp<HttpPut>() { @Mock void $init(String method) {} @Mock void setEntity(HttpEntity entity) {} @Mock void setHeader(String name, String value) {} @Mock void addHeader(String name, String value) {} }; new Expectations() { // setContext { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} {new CountDownLatch(1); result=mockLatch;} {MozuHttpClientPool.getInstance(); result=mockClientPool;} {mockClientPool.getHttpClient(); result=mockHttpClient;} // Execute request {mockHttpClient.execute((HttpEntityEnclosingRequestBase)any, (FutureCallback<HttpResponse>)any);} {mockLatch.await();} }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); mozuClient.executePutRequest(BODY_STRING, BASE_URL, new HashMap<String, String>()); } @Test public void executeRequestDeleteTest() throws Exception { new MockUp<HttpDelete>() { @Mock void $init(String method) {} @Mock void setHeader(String name, String value) {} @Mock void addHeader(String name, String value) {} }; new Expectations() { // setContext { mockApiContext.getTenantId(); result=TENANT_ID; times=2; } { mockApiContext.getSiteId(); result=SITE_ID; times=3; } { mockApiContext.getMasterCatalogId(); result=MASTER_CATALOG_ID; times=3; } { mockApiContext.getCatalogId(); result=CATALOG_ID; times=3; } { mockApiContext.getLocale(); result=LOCALE; times=2;} { mockApiContext.getCurrency(); result=CURRENCY; times=2;} {new CountDownLatch(1); result=mockLatch;} {MozuHttpClientPool.getInstance(); result=mockClientPool;} {mockClientPool.getHttpClient(); result=mockHttpClient;} // Execute request {mockHttpClient.execute((HttpRequestBase)any, (FutureCallback<HttpResponse>)any);} {mockLatch.await();} }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); mozuClient.executeDeleteRequest(BASE_URL, new HashMap<String, String>()); } @Mocked AsyncCallback<InputStream> mockCallback; @Test public void callbackTest() throws Exception { new MockUp<EntityUtils>() { @Mock void consume(HttpEntity entity) {} }; new Expectations() { // EnsureSuccess {mockHttpRequest.getRequestLine(); result=mockRequestLine;} { mockHttpResponse.getStatusLine(); result=mockStatusLine; } { mockStatusLine.getStatusCode(); result=200; } {mockHttpResponse.containsHeader(anyString); result=false;} // SetCache {mockHttpResponse.containsHeader(anyString); result=false;} // GetResult {mockHttpResponse.getStatusLine();result=mockStatusLine;} {mockStatusLine.getStatusCode();result=200;} {mockHttpResponse.getEntity(); result=mockHttpEntity;} {mockHttpEntity.getContent(); result=mockInputStream;} {mockHttpResponse.getEntity(); result=mockHttpEntity;} {mockCallback.success((InputStream)any);} }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(InputStream.class); MozuClientImpl<InputStream>.BaseCallbackHandler callbackHandler = mozuClient.new BaseCallbackHandler(mockCallback, mockLatch, mockHttpRequest); callbackHandler.completed(mockHttpResponse); } }