package se.pp.gustafson.marten.mime.tests;
import static org.mockito.Matchers.eq;
import static org.mockito.Matchers.isA;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.ByteArrayInputStream;
import javax.activation.MimeType;
import javax.activation.MimeTypeParseException;
import org.junit.Test;
import se.pp.gustafson.marten.mime.HandlerMap;
import se.pp.gustafson.marten.mime.MimeTypeHandler;
import se.pp.gustafson.marten.mime.MultipartMixed;
import com.sun.mail.util.BASE64DecoderStream;
public class MultipartMixedIntegrationTest
{
@Test
public void octetStream_textPlainPassedAsString_octetStreamPassedAsBASE64DecoderStream() throws MimeTypeParseException
{
final MimeType octetStream = new MimeType("application/octet-stream");
final MimeType textPlain = new MimeType("text/plain");
final MimeTypeHandler<String> plainTextHandler = mock(MimeTypeHandler.class);
when(plainTextHandler.appliesTo()).thenReturn(new MimeType[] { textPlain });
final MimeTypeHandler<BASE64DecoderStream> octetStreamHandler = mock(MimeTypeHandler.class);
when(octetStreamHandler.appliesTo()).thenReturn(new MimeType[] { octetStream });
new MultipartMixed(new HandlerMap(plainTextHandler, octetStreamHandler)).process(TestUtil.readTestFile(TestUtil.Files.OCTET_STREAM_FILE));
verify(plainTextHandler).process(eq("This is the body of the message."));
verify(octetStreamHandler).process(isA(BASE64DecoderStream.class));
}
@Test
public void riakLink_jsonPassedAsByteArrayInputStream() throws MimeTypeParseException
{
final MimeType json = new MimeType("application/json");
final MimeTypeHandler<ByteArrayInputStream> handler = mock(MimeTypeHandler.class);
when(handler.appliesTo()).thenReturn(new MimeType[] { json });
new MultipartMixed(new HandlerMap(handler)).process(TestUtil.readTestFile(TestUtil.Files.RIAK_LINK_WALKING_FILE));
verify(handler, times(2)).process(isA(ByteArrayInputStream.class));
}
}