/* * Copyright (C) 2012 Works Applications Co., Ltd. * http://www.worksap.co.jp/ * * Licensed under the MIT License: * http://www.opensource.org/licenses/mit-license.php * */ package jp.co.worksap.message.wrapper; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import java.util.List; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Part; import jp.co.worksap.message.wrapper.MessageWrapper; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class MessageWrapperFileNameTest { private final static String FILENAME_TEST_PATH = "filename/filename_%s.txt"; private final String fileName; private final String expectedFileName; @Parameters public static List<Object[]> prepareMailSource() { Object[][] datas = new Object[][] { //base64; ISO-2022-JP; Can be fixed by setting "mail.mime.decodefilename" as true { "001", "file%test【special characterⅡ】.ods" }, //base64; iso-2022-jp, URLEncode; { "002", "画テスト.svg" }, //base64; iso-2022-jp, URLEncode; { "003", "テスト①②③④⑤⑥⑦⑧⑨testⅠⅡⅢⅣⅤⅥⅦⅧⅨtest髙閒塚德﨑彅弴燁珉鄧テスト㈱.txt" }, //Declared as base64, is 7bit; No char-set, is ISO-2022-JP { "004", "テストファイル.xls" }, //base64; ISO-2022-JP; Not begin with "=?" { "005", "1234_Test file name.xls" }, }; return Arrays.asList(datas); } public MessageWrapperFileNameTest(String fileName, String expectedFileName) { this.fileName = fileName; this.expectedFileName = expectedFileName; } @Test public void testFileName() throws MessagingException, IOException { Message m = createMessage(String.format(FILENAME_TEST_PATH, fileName)); Multipart mp = (Multipart) m.getContent(); Part file = mp.getBodyPart(1); assertThat(file.getFileName(), is(expectedFileName)); } private static Message createMessage(String resourceName) throws MessagingException { InputStream is = MessageWrapperFileNameTest.class.getClassLoader().getResourceAsStream(resourceName); return new MessageWrapper(null, is); } }