package com.ibm.sbt.services.client.email; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.HashMap; import java.util.Map; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.ibm.commons.util.io.json.JsonJavaObject; import com.ibm.commons.util.io.json.JsonObject; public class MimePartTest { private Map<String, String> headers = new HashMap<String, String>(); private MimePart partWithHeaders; private MimePart partWithOutHeaders; private MimePart partWithOutContent; private MimePart jsonPartWithHeaders; private MimePart jsonPartWithOutHeaders; private MimePart jsonPartWithOutContent; private MimePart jsonPartWithInvalidTypes; private MimePart jsonPartWithJsonContent; private JsonObject jsonWithHeaders; private JsonObject jsonWithOutHeaders; private JsonObject jsonWithOutContent; private JsonObject jsonWithInvalidTypes; private JsonObject jsonWithJsonContent; private JsonObject jsonContent; @Before public void setUp() throws Exception { headers.put("header1", "value1"); headers.put("header2", "value2"); jsonContent = new JsonJavaObject(); jsonContent.putJsonProperty("hello", "wold"); jsonWithHeaders = new JsonJavaObject(); jsonWithHeaders.putJsonProperty(MimePart.MIME_TYPE, "some/type"); jsonWithHeaders.putJsonProperty(MimePart.CONTENT, "more content"); jsonWithHeaders.putJsonProperty(MimePart.HEADERS, headers); jsonPartWithHeaders = new MimePart(jsonWithHeaders); jsonWithOutHeaders = new JsonJavaObject(); jsonWithOutHeaders.putJsonProperty(MimePart.MIME_TYPE, "some/type"); jsonWithOutHeaders.putJsonProperty(MimePart.CONTENT, "more content"); jsonPartWithOutHeaders = new MimePart(jsonWithOutHeaders); jsonWithOutContent = new JsonJavaObject(); jsonWithOutContent.putJsonProperty(MimePart.MIME_TYPE, "some/type"); jsonPartWithOutContent = new MimePart(jsonWithOutContent); jsonWithInvalidTypes = new JsonJavaObject(); jsonWithInvalidTypes.putJsonProperty(MimePart.MIME_TYPE, "some/type"); jsonWithInvalidTypes.putJsonProperty(MimePart.CONTENT, 123); jsonWithInvalidTypes.putJsonProperty(MimePart.HEADERS, 123); jsonPartWithInvalidTypes = new MimePart(jsonWithInvalidTypes); jsonWithJsonContent = new JsonJavaObject(); jsonWithJsonContent.putJsonProperty(MimePart.MIME_TYPE, "some/type"); jsonWithJsonContent.putJsonProperty(MimePart.CONTENT, jsonContent); jsonPartWithJsonContent = new MimePart(jsonWithJsonContent); partWithHeaders = new MimePart("some/type", "more content", headers); partWithOutHeaders = new MimePart("some/type", "more content", null); partWithOutContent = new MimePart("some/type", null, null); } @After public void tearDown() throws Exception { partWithHeaders = null; partWithOutHeaders = null; partWithOutContent = null; jsonPartWithHeaders = null; jsonPartWithOutHeaders = null; jsonPartWithOutContent = null; jsonPartWithInvalidTypes = null; jsonPartWithJsonContent = null; jsonWithHeaders = null; jsonWithOutHeaders = null; jsonWithOutContent = null; jsonWithInvalidTypes = null; jsonWithJsonContent = null; jsonContent = null; } @Test (expected = MimeEmailException.class) public void testMimePartNullMimeType() throws Exception { new MimePart(null, "more content", headers); } @Test (expected = MimeEmailException.class) public void testMimePartEmptyMimeType() throws Exception { new MimePart("", "more content", headers); } @Test (expected = MimeEmailException.class) public void testMimePartJsonObject() throws Exception { new MimePart(new JsonJavaObject()); } @Test (expected = MimeEmailException.class) public void testMimePartJsonNonString() throws Exception { JsonObject json = new JsonJavaObject(); json.putJsonProperty(MimePart.MIME_TYPE, 123); new MimePart(json); } @Test public void testGetMimeType() { assertEquals("some/type", partWithHeaders.getMimeType()); assertEquals("some/type", partWithOutHeaders.getMimeType()); assertEquals("some/type", partWithOutContent.getMimeType()); assertEquals("some/type", jsonPartWithHeaders.getMimeType()); assertEquals("some/type", jsonPartWithOutHeaders.getMimeType()); assertEquals("some/type", jsonPartWithOutContent.getMimeType()); assertEquals("some/type", jsonPartWithInvalidTypes.getMimeType()); assertEquals("some/type", jsonPartWithJsonContent.getMimeType()); } @Test (expected = MimeEmailException.class) public void testSetMimeTypeNull() throws Exception { partWithHeaders.setMimeType(null); } @Test (expected = MimeEmailException.class) public void testSetMimeTypeEmpty() throws Exception { partWithHeaders.setMimeType(""); } @Test public void testSetMimeType() throws Exception { partWithHeaders.setMimeType("another/type"); assertEquals("another/type", partWithHeaders.getMimeType()); } @Test public void testGetContent() { assertEquals("more content", partWithHeaders.getContent()); assertEquals("more content", partWithOutHeaders.getContent()); assertEquals("", partWithOutContent.getContent()); assertEquals("more content", jsonPartWithHeaders.getContent()); assertEquals("more content", jsonPartWithOutHeaders.getContent()); assertEquals("", jsonPartWithOutContent.getContent()); assertEquals("", jsonPartWithInvalidTypes.getContent()); assertEquals(jsonContent.toString(), jsonPartWithJsonContent.getContent()); } @Test public void testSetContent() { partWithOutContent.setContent("here is some content"); assertEquals("here is some content", partWithOutContent.getContent()); partWithHeaders.setContent("{\"hello\":\"world\"}"); assertEquals("{\"hello\":\"world\"}", partWithHeaders.getContent()); } @Test public void testGetHeaders() { assertEquals(headers, partWithHeaders.getHeaders()); assertEquals(new HashMap<String, String>(), partWithOutHeaders.getHeaders()); assertEquals(new HashMap<String, String>(), partWithOutContent.getHeaders()); assertEquals(headers, jsonPartWithHeaders.getHeaders()); assertEquals(new HashMap<String, String>(), jsonPartWithOutHeaders.getHeaders()); assertEquals(new HashMap<String, String>(), jsonPartWithOutContent.getHeaders()); assertEquals(new HashMap<String, String>(), jsonPartWithInvalidTypes.getHeaders()); assertEquals(new HashMap<String, String>(), jsonPartWithJsonContent.getHeaders()); } @Test public void testSetHeaders() { Map<String, String> headers = new HashMap<String, String>(); headers.put("myheader", "myValue"); headers.put("myheader2", "myValue2"); partWithOutContent.setHeaders(headers); assertEquals(headers, partWithOutContent.getHeaders()); } @Test public void testEqualsObject() { assertTrue(partWithHeaders.equals(jsonPartWithHeaders)); assertTrue(partWithOutHeaders.equals(jsonPartWithOutHeaders)); assertTrue(partWithOutContent.equals(jsonPartWithOutContent)); assertFalse(partWithHeaders.equals(jsonPartWithOutHeaders)); assertFalse(partWithHeaders.equals(null)); } }