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.Map; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; import org.apache.http.RequestLine; import org.apache.http.StatusLine; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.impl.client.CloseableHttpClient; 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.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 java.lang.reflect.Field; import mockit.Expectations; import mockit.Mock; import mockit.MockUp; import mockit.Mocked; 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 CloseableHttpResponse mockHttpResponse; @Mocked TenantResource mockTenantResource; @Mocked Tenant mockTenant; @Mocked BasicHttpEntityEnclosingRequest mockHttpRequest; @Mocked CloseableHttpClient mockHttpClient; @Mocked UserAuthenticator mockUserAuthenticator; @Mocked StatusLine mockStatusLine; @Mocked HttpEntity mockHttpEntity; @Mocked InputStream mockInputStream; @Mocked RequestLine mockRequestLine; @Mocked CacheManager<CacheItem> mockCacheManager; @Mocked Map<String, String> mockCustomHeader; static { try { Class clss = Class.forName("javax.crypto.JceSecurity"); Field field = clss.getDeclaredField("isRestricted"); field.setAccessible(true); field.set(null, java.lang.Boolean.FALSE); } catch (Exception ex) { System.out.println("javax.crypto.JceSecurity policy issue: " + ex.getMessage()); } } @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; } { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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; } { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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;} { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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;} { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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;} { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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;} { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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;} { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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;} { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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;} { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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 MockUp<EntityUtils>() { @Mock void consume(HttpEntity entity) {} }; 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;} { mockApiContext.getCustomHeaders(); result=null; } // validateContext { AppAuthenticator.getInstance(); result=mockAppAuthenticator; } { mockResourceUrl.getLocation(); result=MozuUrl.UrlLocation.TENANT_POD; } { mockApiContext.getTenantId(); result=TENANT_ID; } { mockApiContext.getTenantUrl(); result=TENANT_URL; times=2; } // 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;} { mockHttpClient.execute((HttpHost)any, (HttpRequest)any); result=mockHttpResponse; } {mockHttpRequest.getRequestLine(); result=mockRequestLine;} { mockHttpResponse.getStatusLine(); result=mockStatusLine; } { mockStatusLine.getStatusCode(); result=200; } {mockHttpResponse.containsHeader(anyString); result=false;} {mockHttpResponse.containsHeader(anyString); result=false;} { mockHttpResponse.getStatusLine(); result=mockStatusLine; } { mockStatusLine.getStatusCode(); result=200; } { mockHttpResponse.getEntity(); result=mockHttpEntity; } { mockHttpResponse.close(); } }; 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 MockUp<EntityUtils>() { @Mock void consume(HttpEntity entity) {} }; 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;} { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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; } // 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;} { mockHttpClient.execute((HttpHost)any, (HttpRequest)any); result=mockHttpResponse; } {mockHttpRequest.getRequestLine(); result=mockRequestLine;} { mockHttpResponse.getStatusLine(); result=mockStatusLine; } { mockStatusLine.getStatusCode(); result=404; } {mockHttpResponse.containsHeader(anyString); result=false;} {mockRequestLine.getUri(); result="SomeString";} { mockHttpResponse.getEntity(); result=mockHttpEntity; } { mockHttpResponse.close(); } }; 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<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 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;} { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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; } // 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;} { mockHttpClient.execute((HttpHost)any, (HttpRequest)any); result=mockHttpResponse; } {mockHttpRequest.getRequestLine(); result=mockRequestLine;} { mockHttpResponse.getStatusLine(); result=mockStatusLine; } { mockStatusLine.getStatusCode(); result=200; } {mockHttpResponse.containsHeader(anyString); result=false;} {mockHttpResponse.containsHeader(anyString); result=false;} }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); mozuClient.setBaseAddress(BASE_URL); mozuClient.setBody(BODY_STRING); mozuClient.setVerb("POST"); mozuClient.executeRequest(); } @Test public void executeRequestPutTest() 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 MockUp<EntityUtils>() { @Mock void consume(HttpEntity entity) {} }; 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;} { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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; } // 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;} { mockHttpClient.execute((HttpHost)any, (HttpRequest)any); result=mockHttpResponse; } {mockHttpRequest.getRequestLine(); result=mockRequestLine;} { mockHttpResponse.getStatusLine(); result=mockStatusLine; } { mockStatusLine.getStatusCode(); result=200; } {mockHttpResponse.containsHeader(anyString); result=false;} {mockHttpResponse.containsHeader(anyString); result=false;} { mockHttpResponse.getStatusLine(); result=mockStatusLine; } { mockStatusLine.getStatusCode(); result=200; } { mockHttpResponse.getEntity(); result=mockHttpEntity; } { mockHttpResponse.close(); } }; CacheManagerFactory.setCacheManager(mockCacheManager);; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); mozuClient.setBaseAddress(BASE_URL); mozuClient.setBody(BODY_STRING); mozuClient.setVerb("PUT"); mozuClient.executeRequest(); mozuClient.getResult(); } @Test public void executeRequestDeleteTest() 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 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;} { mockApiContext.getCustomHeaders(); result=mockCustomHeader; 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; } // 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;} { mockHttpClient.execute((HttpHost)any, (HttpRequest)any); result=mockHttpResponse; } {mockHttpRequest.getRequestLine(); result=mockRequestLine;} { mockHttpResponse.getStatusLine(); result=mockStatusLine; } { mockStatusLine.getStatusCode(); result=200; } {mockHttpResponse.containsHeader(anyString); result=false;} {mockHttpResponse.containsHeader(anyString); result=false;} }; MozuClientImpl<InputStream> mozuClient = new MozuClientImpl<InputStream>(); mozuClient.setContext(mockApiContext); mozuClient.setResourceUrl(mockResourceUrl); mozuClient.setBaseAddress(BASE_URL); mozuClient.setVerb("DELETE"); mozuClient.executeRequest(); } }