package com.mozu.api;
import static org.junit.Assert.*;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import mockit.*;
import com.mozu.api.contracts.tenant.Site;
import com.mozu.api.contracts.tenant.Tenant;
import com.mozu.api.security.AppAuthenticator;
public class MozuApiContextTest {
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 = "TenantUrl";
private static final String SITE_URL = "SiteUrl";
private static final String FULL_TENANT_URL = "http://TenantUrl";
private static final String FULL_SITE_URL = "http://SiteUrl";
private static final String CORRELATION_ID = "Correlation ID";
private static final String HMAC_SHA256 = "hmac sha256";
private static final String HEADER_DATE = "Tue, 31 Dec 2013 06:26:07 GMT";
private static final String LOCALE = "en_US";
private static final String CURRENCY = "USD";
@Mocked Tenant mockTenant;
@Mocked Site mockSite;
@Mocked Map<String, String> mockHeaders;
@Mocked HttpServletRequest mockServletRequest;
@Mocked AppAuthenticator mockAppAuthenticator;
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testMozuApiContextAllIds() {
MozuApiContext context = new MozuApiContext(TENANT_ID, SITE_ID, MASTER_CATALOG_ID, CATALOG_ID);
assertEquals(TENANT_ID, context.getTenantId());
assertEquals(SITE_ID, context.getSiteId());
assertEquals(MASTER_CATALOG_ID, context.getMasterCatalogId());
assertEquals(CATALOG_ID, context.getCatalogId());
}
@Test
public void testMozuApiContextTenantId() {
MozuApiContext context = new MozuApiContext(TENANT_ID);
assertEquals(TENANT_ID, context.getTenantId());
assertNull(context.getSiteId());
assertNull(context.getMasterCatalogId());
assertNull(context.getCatalogId());
}
@Test
public void testMozuApiContextTenantSiteId() {
MozuApiContext context = new MozuApiContext(TENANT_ID, SITE_ID);
assertEquals(TENANT_ID, context.getTenantId());
assertEquals(SITE_ID, context.getSiteId());
assertNull(context.getMasterCatalogId());
assertNull(context.getCatalogId());
}
@Test
public void testMozuApiContextObjs() {
new Expectations() {
{ mockTenant.getId(); result=TENANT_ID; }
{ mockSite.getId(); result=SITE_ID; }
{ mockTenant.getId(); result=TENANT_ID; }
{ mockTenant.getDomain(); result=TENANT_URL; }
{ mockSite.getId(); result=SITE_ID; }
{ mockSite.getDomain(); result=SITE_URL; }
};
MozuApiContext context = new MozuApiContext(mockTenant, mockSite, MASTER_CATALOG_ID, CATALOG_ID);
assertEquals(TENANT_ID, context.getTenantId());
assertEquals(SITE_ID, context.getSiteId());
assertEquals(MASTER_CATALOG_ID, context.getMasterCatalogId());
assertEquals(CATALOG_ID, context.getCatalogId());
assertEquals(FULL_TENANT_URL, context.getTenantUrl());
assertEquals(FULL_SITE_URL, context.getSiteUrl());
}
@Test
public void testMozuApiContextObjsNullSite() {
new Expectations() {
{ mockTenant.getId(); result=TENANT_ID; }
{ mockTenant.getId(); result=TENANT_ID; }
{ mockTenant.getDomain(); result=TENANT_URL; }
};
MozuApiContext context = new MozuApiContext(mockTenant, null, MASTER_CATALOG_ID, CATALOG_ID);
assertEquals(TENANT_ID, context.getTenantId());
assertNull(context.getSiteId());
assertEquals(MASTER_CATALOG_ID, context.getMasterCatalogId());
assertEquals(CATALOG_ID, context.getCatalogId());
assertEquals(FULL_TENANT_URL, context.getTenantUrl());
assertNull(context.getSiteUrl());
}
@Test
public void testMozuApiContextNullUrls() {
new Expectations() {
{ mockTenant.getId(); result=TENANT_ID; }
{ mockSite.getId(); result=SITE_ID; }
{ mockTenant.getId(); result=TENANT_ID; }
{ mockTenant.getDomain(); result=null; }
{ mockSite.getId(); result=SITE_ID; }
{ mockSite.getDomain(); result=null; }
};
MozuApiContext context = new MozuApiContext(mockTenant, mockSite, MASTER_CATALOG_ID, CATALOG_ID);
assertEquals(TENANT_ID, context.getTenantId());
assertEquals(SITE_ID, context.getSiteId());
assertEquals(MASTER_CATALOG_ID, context.getMasterCatalogId());
assertEquals(CATALOG_ID, context.getCatalogId());
assertNull(context.getTenantUrl());
assertNull(context.getSiteUrl());
}
@Test
public void testMozuApiContextNullTenant() {
new Expectations() {
{ mockSite.getId(); result=SITE_ID; }
{ mockSite.getId(); result=SITE_ID; }
{ mockSite.getDomain(); result=SITE_URL; }
};
MozuApiContext context = new MozuApiContext(null, mockSite, MASTER_CATALOG_ID, CATALOG_ID);
assertNull(context.getTenantId());
assertEquals(SITE_ID, context.getSiteId());
assertEquals(MASTER_CATALOG_ID, context.getMasterCatalogId());
assertEquals(CATALOG_ID, context.getCatalogId());
assertNull(context.getTenantUrl());
assertEquals(FULL_SITE_URL, context.getSiteUrl());
}
@Test
public void testMozuApiContextObjsNoTenant() {
new Expectations() {
{ mockSite.getId(); result=SITE_ID; }
{ mockSite.getId(); result=SITE_ID; }
{ mockSite.getDomain(); result=SITE_URL; }
{ mockSite.getTenantId(); result=TENANT_ID; }
};
MozuApiContext context = new MozuApiContext(mockSite, MASTER_CATALOG_ID, CATALOG_ID);
assertEquals(TENANT_ID, context.getTenantId());
assertEquals(SITE_ID, context.getSiteId());
assertEquals(MASTER_CATALOG_ID, context.getMasterCatalogId());
assertEquals(CATALOG_ID, context.getCatalogId());
assertNull(context.getTenantUrl());
assertEquals(FULL_SITE_URL, context.getSiteUrl());
}
@Test
public void testMozuApiContextHeaders() {
new Expectations() {
{ mockHeaders.get(Headers.X_VOL_TENANT_DOMAIN); result=TENANT_URL; }
{ mockHeaders.get(Headers.X_VOL_SITE_DOMAIN); result=SITE_URL; }
{ mockHeaders.get(Headers.X_VOL_TENANT); result=TENANT_ID.toString(); }
{ mockHeaders.get(Headers.X_VOL_SITE); result=SITE_ID.toString(); }
{ mockHeaders.get(Headers.X_VOL_CORRELATION); result=CORRELATION_ID; }
{ mockHeaders.get(Headers.X_VOL_HMAC_SHA256); result=HMAC_SHA256; }
{ mockHeaders.get(Headers.X_VOL_MASTER_CATALOG); result=MASTER_CATALOG_ID.toString(); }
{ mockHeaders.get(Headers.X_VOL_CATALOG); result=CATALOG_ID.toString(); }
{ mockHeaders.get(Headers.DATE); result=HEADER_DATE.toString(); }
{ mockHeaders.get(Headers.X_VOL_LOCALE); result=LOCALE; }
{ mockHeaders.get(Headers.X_VOL_CURRENCY); result=CURRENCY; }
};
MozuApiContext context = new MozuApiContext(mockHeaders);
assertEquals(TENANT_ID, context.getTenantId());
assertEquals(SITE_ID, context.getSiteId());
assertEquals(MASTER_CATALOG_ID, context.getMasterCatalogId());
assertEquals(CATALOG_ID, context.getCatalogId());
assertEquals(FULL_TENANT_URL, context.getTenantUrl());
assertEquals(FULL_SITE_URL, context.getSiteUrl());
}
@Test
public void testMozuApiContextHeadersContentNull() {
new Expectations() {
{ mockHeaders.get(Headers.X_VOL_TENANT_DOMAIN); result=null; }
{ mockHeaders.get(Headers.X_VOL_SITE_DOMAIN); result=null; }
{ mockHeaders.get(Headers.X_VOL_TENANT); result=null; }
{ mockHeaders.get(Headers.X_VOL_SITE); result=null; }
{ mockHeaders.get(Headers.X_VOL_CORRELATION); result=null; }
{ mockHeaders.get(Headers.X_VOL_HMAC_SHA256); result=null; }
{ mockHeaders.get(Headers.X_VOL_MASTER_CATALOG); result=null; }
{ mockHeaders.get(Headers.X_VOL_CATALOG); result=null; }
{ mockHeaders.get(Headers.DATE); result=null; }
{ mockHeaders.get(Headers.DATE.toLowerCase()); result=null; }
{ mockHeaders.get(Headers.X_VOL_LOCALE); result=null; }
{ mockHeaders.get(Headers.X_VOL_CURRENCY); result=null; }
};
MozuApiContext context = new MozuApiContext(mockHeaders);
assertNull(context.getTenantId());
assertNull(context.getSiteId());
assertNull(context.getMasterCatalogId());
assertNull(context.getCatalogId());
assertNull(context.getTenantUrl());
assertNull(context.getSiteUrl());
assertNull(context.getLocale());
assertNull(context.getCurrency());
}
@Test
public void testMozuApiContextServletRequest() {
new Expectations() {
{ mockServletRequest.getHeader(Headers.X_VOL_TENANT_DOMAIN); result=TENANT_URL; }
{ mockServletRequest.getHeader(Headers.X_VOL_SITE_DOMAIN); result=SITE_URL; }
{ mockServletRequest.getIntHeader(Headers.X_VOL_TENANT); result=TENANT_ID; }
{ mockServletRequest.getIntHeader(Headers.X_VOL_SITE); result=SITE_ID; }
{ mockServletRequest.getHeader(Headers.X_VOL_CORRELATION); result=CORRELATION_ID; }
{ mockServletRequest.getHeader(Headers.X_VOL_HMAC_SHA256); result=HMAC_SHA256; }
{ mockServletRequest.getIntHeader(Headers.X_VOL_MASTER_CATALOG); result=MASTER_CATALOG_ID; }
{ mockServletRequest.getIntHeader(Headers.X_VOL_CATALOG); result=CATALOG_ID; }
{ mockServletRequest.getHeader(Headers.DATE); result=HEADER_DATE; }
};
MozuApiContext context = new MozuApiContext(mockServletRequest);
assertEquals(TENANT_ID, context.getTenantId());
assertEquals(SITE_ID, context.getSiteId());
assertEquals(MASTER_CATALOG_ID, context.getMasterCatalogId());
assertEquals(CATALOG_ID, context.getCatalogId());
assertEquals(FULL_TENANT_URL, context.getTenantUrl());
assertEquals(FULL_SITE_URL, context.getSiteUrl());
}
@Test
public void testMozuApiContextServletRequestNulls() {
new Expectations() {
{ mockServletRequest.getHeader(Headers.X_VOL_TENANT_DOMAIN); result=null; }
{ mockServletRequest.getHeader(Headers.X_VOL_SITE_DOMAIN); result=null; }
{ mockServletRequest.getIntHeader(Headers.X_VOL_TENANT); result=-1; }
{ mockServletRequest.getIntHeader(Headers.X_VOL_SITE); result=-1; }
{ mockServletRequest.getHeader(Headers.X_VOL_CORRELATION); result=null; }
{ mockServletRequest.getHeader(Headers.X_VOL_HMAC_SHA256); result=null; }
{ mockServletRequest.getIntHeader(Headers.X_VOL_MASTER_CATALOG); result=-1; }
{ mockServletRequest.getIntHeader(Headers.X_VOL_CATALOG); result=-1; }
{ mockServletRequest.getHeader(Headers.DATE); result=null; }
{ mockServletRequest.getHeader(Headers.DATE.toLowerCase()); result=null; }
};
MozuApiContext context = new MozuApiContext(mockServletRequest);
assertNull(context.getTenantId());
assertNull(context.getSiteId());
assertNull(context.getMasterCatalogId());
assertNull(context.getCatalogId());
assertNull(context.getTenantUrl());
assertNull(context.getSiteUrl());
}
}