191 lines
8.8 KiB
Java
191 lines
8.8 KiB
Java
/*
|
|
* Copyright (C) 2014 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.android.email;
|
|
|
|
import android.test.AndroidTestCase;
|
|
|
|
import com.android.emailcommon.internet.MimeBodyPart;
|
|
import com.android.emailcommon.internet.MimeMessage;
|
|
import com.android.emailcommon.mail.Address;
|
|
import com.android.emailcommon.mail.Message.RecipientType;
|
|
import com.android.emailcommon.mail.MessagingException;
|
|
import com.android.emailcommon.mail.Part;
|
|
import com.android.emailcommon.provider.EmailContent;
|
|
import com.android.emailcommon.utility.ConversionUtilities;
|
|
import com.android.emailcommon.utility.ConversionUtilities.BodyFieldData;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
|
|
public class LegacyConversionsTest extends AndroidTestCase {
|
|
|
|
/**
|
|
* Test basic fields conversion from Store message to Provider message.
|
|
*/
|
|
public void testUpdateMessageFields_Basic() throws MessagingException {
|
|
final MimeMessage message = new MimeMessage();
|
|
message.setUid("UID.12345678");
|
|
message.setSentDate(new Date(1));
|
|
message.setMessageId("Test-Message-ID");
|
|
message.setSubject("This is the subject");
|
|
|
|
final EmailContent.Message localMessage = new EmailContent.Message();
|
|
final boolean result = LegacyConversions.updateMessageFields(localMessage, message, 1, 1);
|
|
assertTrue(result);
|
|
|
|
assertEquals(message.getUid(), localMessage.mServerId);
|
|
assertEquals(message.getSubject(), localMessage.mSubject);
|
|
assertEquals(message.getMessageId(), localMessage.mMessageId);
|
|
assertEquals(message.getSentDate().getTime(), localMessage.mTimeStamp);
|
|
}
|
|
|
|
/**
|
|
* Test the conversion of plain ASCII (not MIME-encoded) email addresses.
|
|
*/
|
|
public void testUpdateMessageFields_PlainAddresses() throws MessagingException {
|
|
// create plain ASCII email addresses
|
|
final String fromList = "Sender <sender@droid.com>";
|
|
final String replyToList = "Reply1 <reply1@droid.com>,Reply2 <reply2@droid.com>";
|
|
final String toList = "ToA <toA@droid.com>,ToB <toB@droid.com>";
|
|
final String ccList = "CcA <ccA@droid.com>,CcB <ccB@droid.com>";
|
|
final String bccList = "BccA <bccA@droid.com>,Bcc2 <bccB@droid.com>";
|
|
|
|
// parse the addresses
|
|
final Address from = Address.fromHeader(fromList)[0];
|
|
final Address[] replies = Address.fromHeader(replyToList);
|
|
final Address[] tos = Address.fromHeader(toList);
|
|
final Address[] ccs = Address.fromHeader(ccList);
|
|
final Address[] bccs = Address.fromHeader(bccList);
|
|
|
|
// make a message with the email addresses
|
|
final MimeMessage message = new MimeMessage();
|
|
message.setFrom(from);
|
|
message.setReplyTo(replies);
|
|
message.setRecipients(RecipientType.TO, tos);
|
|
message.setRecipients(RecipientType.CC, ccs);
|
|
message.setRecipients(RecipientType.BCC, bccs);
|
|
|
|
// convert the message to a local message using the conversation method
|
|
final EmailContent.Message localMessage = new EmailContent.Message();
|
|
final boolean result = LegacyConversions.updateMessageFields(localMessage, message, 1, 1);
|
|
assertTrue(result);
|
|
|
|
// verify that we will store the email addresses in decoded form
|
|
assertEquals(fromList, localMessage.mFrom);
|
|
assertEquals(replyToList, localMessage.mReplyTo);
|
|
assertEquals(toList, localMessage.mTo);
|
|
assertEquals(ccList, localMessage.mCc);
|
|
assertEquals(bccList, localMessage.mBcc);
|
|
}
|
|
|
|
/**
|
|
* Test the conversion of MIME-encoded non-ASCII email addresses.
|
|
*/
|
|
public void testUpdateMessageFields_EncodedAddresses() throws MessagingException {
|
|
final String e = "=?EUC-KR?B?uvG50Ln4yKO4pg==?="; // Mime Encoded value of 비밀번호를
|
|
final String d = "\uBE44\uBC00\uBC88\uD638\uB97C"; // Mime Decoded value of e
|
|
|
|
// create the email address in encoded form
|
|
String fromList = String.format("%s <sender@droid.com>", e);
|
|
String replyToList = String.format("%s <reply1@droid.com>,%s <reply2@droid.com>", e, e);
|
|
String toList = String.format("%s <toA@droid.com>,%s <toB@droid.com>", e, e);
|
|
String ccList = String.format("%s <ccA@droid.com>,%s <ccB@droid.com>", e, e);
|
|
String bccList = String.format("%s <bccA@droid.com>,%s <bccB@droid.com>", e, e);
|
|
|
|
// parse the encoded addresses
|
|
final Address from = Address.fromHeader(fromList)[0];
|
|
final Address[] replies = Address.fromHeader(replyToList);
|
|
final Address[] tos = Address.fromHeader(toList);
|
|
final Address[] ccs = Address.fromHeader(ccList);
|
|
final Address[] bccs = Address.fromHeader(bccList);
|
|
|
|
// make a message with the email addresses
|
|
final MimeMessage message = new MimeMessage();
|
|
message.setFrom(from);
|
|
message.setReplyTo(replies);
|
|
message.setRecipients(RecipientType.TO, tos);
|
|
message.setRecipients(RecipientType.CC, ccs);
|
|
message.setRecipients(RecipientType.BCC, bccs);
|
|
|
|
// convert the message to a local message using the conversion method
|
|
final EmailContent.Message localMessage = new EmailContent.Message();
|
|
final boolean result = LegacyConversions.updateMessageFields(localMessage, message, 1, 1);
|
|
assertTrue(result);
|
|
|
|
// verify that we will store the email addresses in decoded form
|
|
String decodedFrom = String.format("%s <sender@droid.com>", d);
|
|
String decodedReply = String.format("%s <reply1@droid.com>,%s <reply2@droid.com>", d, d);
|
|
String decodedTo = String.format("%s <toA@droid.com>,%s <toB@droid.com>", d, d);
|
|
String decodedCc = String.format("%s <ccA@droid.com>,%s <ccB@droid.com>", d, d);
|
|
String decodedBcc = String.format("%s <bccA@droid.com>,%s <bccB@droid.com>", d, d);
|
|
|
|
assertEquals(decodedFrom, localMessage.mFrom);
|
|
assertEquals(decodedReply, localMessage.mReplyTo);
|
|
assertEquals(decodedTo, localMessage.mTo);
|
|
assertEquals(decodedCc, localMessage.mCc);
|
|
assertEquals(decodedBcc, localMessage.mBcc);
|
|
}
|
|
|
|
/**
|
|
* Test basic conversion from Store message to Provider message, when the provider message
|
|
* does not have a proper message-id.
|
|
*/
|
|
public void testUpdateMessageFields_NoMessageId() throws MessagingException {
|
|
final MimeMessage message = new MimeMessage();
|
|
// set, then remove the message id
|
|
message.setMessageId("Test-Message-ID");
|
|
message.removeHeader("Message-ID");
|
|
|
|
// create a local message with an ID
|
|
final EmailContent.Message localMessage = new EmailContent.Message();
|
|
localMessage.mMessageId = "Test-Message-ID-Second";
|
|
|
|
final boolean result = LegacyConversions.updateMessageFields(localMessage, message, 1, 1);
|
|
assertTrue(result);
|
|
assertEquals("Test-Message-ID-Second", localMessage.mMessageId);
|
|
}
|
|
|
|
/**
|
|
* Basic test of body parts conversion from Store message to Provider message.
|
|
* This tests that a null body part simply results in null text, and does not crash
|
|
* or return "null".
|
|
*/
|
|
public void testUpdateBodyFieldsNullText() throws MessagingException {
|
|
ArrayList<Part> viewables = new ArrayList<Part>();
|
|
viewables.add(new MimeBodyPart(null, "text/plain"));
|
|
|
|
// a "null" body part of type text/plain should result in a null mTextContent
|
|
final BodyFieldData data = ConversionUtilities.parseBodyFields(viewables);
|
|
assertNull(data.textContent);
|
|
}
|
|
|
|
public void testStringNotEqual() {
|
|
// Pairs that are "equal"
|
|
assertFalse(LegacyConversions.stringNotEqual(null, null));
|
|
assertFalse(LegacyConversions.stringNotEqual(null, ""));
|
|
assertFalse(LegacyConversions.stringNotEqual("", null));
|
|
assertFalse(LegacyConversions.stringNotEqual("", ""));
|
|
assertFalse(LegacyConversions.stringNotEqual("string-equal", "string-equal"));
|
|
// Pairs that are "inequal"
|
|
assertTrue(LegacyConversions.stringNotEqual(null, "string-inequal"));
|
|
assertTrue(LegacyConversions.stringNotEqual("", "string-inequal"));
|
|
assertTrue(LegacyConversions.stringNotEqual("string-inequal", null));
|
|
assertTrue(LegacyConversions.stringNotEqual("string-inequal", ""));
|
|
assertTrue(LegacyConversions.stringNotEqual("string-inequal-a", "string-inequal-b"));
|
|
}
|
|
}
|