package com.zegoggles.smssync.mail; import android.provider.CallLog; import android.provider.Telephony; import com.fsck.k9.mail.Message; import com.fsck.k9.mail.internet.MimeMessage; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import java.util.Date; import java.util.HashMap; import java.util.Map; import static com.zegoggles.smssync.mail.Headers.get; import static org.fest.assertions.api.Assertions.assertThat; @RunWith(RobolectricTestRunner.class) public class HeaderGeneratorTest { private HeaderGenerator generator; @Before public void before() { generator = new HeaderGenerator("ref", "1.0"); } @Test public void testShouldGenerateStandardHeaders() throws Exception { Message message = new MimeMessage(); Map<String, String> map = new HashMap<String, String>(); Date sent = new Date(); PersonRecord person = new PersonRecord(0, null, null, null); generator.setHeaders(message, map, DataType.SMS, "1234", person, sent, 0); assertThat(get(message, Headers.ADDRESS)).isEqualTo("1234"); assertThat(get(message, Headers.DATATYPE)).isEqualTo("SMS"); assertThat(get(message, Headers.BACKUP_TIME)).isNotEmpty(); assertThat(get(message, Headers.VERSION)).isNotEmpty(); assertThat(message.getMessageId()).contains("sms-backup-plus.local"); assertThat(message.getSentDate()).isEqualTo(sent); assertThat(message.getReferences()).isNotEmpty(); } @Test public void testShouldGenerateSMSHeaders() throws Exception { Message message = new MimeMessage(); Map<String, String> map = new HashMap<String, String>(); Date sent = new Date(); PersonRecord person = new PersonRecord(0, null, null, null); map.put(android.provider.BaseColumns._ID, "someId"); map.put(Telephony.TextBasedSmsColumns.TYPE, "type"); map.put(Telephony.TextBasedSmsColumns.DATE, "date"); map.put(Telephony.TextBasedSmsColumns.THREAD_ID, "tid"); map.put(Telephony.TextBasedSmsColumns.READ, "read"); map.put(Telephony.TextBasedSmsColumns.STATUS, "status"); map.put(Telephony.TextBasedSmsColumns.PROTOCOL, "protocol"); map.put(Telephony.TextBasedSmsColumns.SERVICE_CENTER, "svc"); generator.setHeaders(message, map, DataType.SMS, "1234", person, sent, 0); assertThat(get(message, Headers.ID)).isEqualTo("someId"); assertThat(get(message, Headers.TYPE)).isEqualTo("type"); assertThat(get(message, Headers.DATE)).isEqualTo("date"); assertThat(get(message, Headers.THREAD_ID)).isEqualTo("tid"); assertThat(get(message, Headers.READ)).isEqualTo("read"); assertThat(get(message, Headers.STATUS)).isEqualTo("status"); assertThat(get(message, Headers.PROTOCOL)).isEqualTo("protocol"); assertThat(get(message, Headers.SERVICE_CENTER)).isEqualTo("svc"); } @Test public void testShouldGenerateCallLogHeaders() throws Exception { Message message = new MimeMessage(); Map<String, String> map = new HashMap<String, String>(); Date sent = new Date(); PersonRecord person = new PersonRecord(0, null, null, null); map.put(CallLog.Calls._ID, "id"); map.put(CallLog.Calls.TYPE, "type"); map.put(CallLog.Calls.DURATION, "duration"); map.put(CallLog.Calls.DATE, "date"); generator.setHeaders(message, map, DataType.CALLLOG, "1234", person, sent, 0); assertThat(get(message, Headers.ID)).isEqualTo("id"); assertThat(get(message, Headers.TYPE)).isEqualTo("type"); assertThat(get(message, Headers.DURATION)).isEqualTo("duration"); assertThat(get(message, Headers.DATE)).isEqualTo("date"); } @Test public void testShouldGenerateMMSHeaders() throws Exception { Message message = new MimeMessage(); Map<String, String> map = new HashMap<String, String>(); Date sent = new Date(); PersonRecord person = new PersonRecord(0, null, null, null); map.put(Telephony.BaseMmsColumns._ID, "id"); map.put(Telephony.BaseMmsColumns.MESSAGE_TYPE, "type"); map.put(Telephony.BaseMmsColumns.THREAD_ID, "tid"); map.put(Telephony.BaseMmsColumns.DATE, "date"); map.put(Telephony.BaseMmsColumns.READ, "read"); generator.setHeaders(message, map, DataType.MMS, "1234", person, sent, 0); assertThat(get(message, Headers.ID)).isEqualTo("id"); assertThat(get(message, Headers.TYPE)).isEqualTo("type"); assertThat(get(message, Headers.THREAD_ID)).isEqualTo("tid"); assertThat(get(message, Headers.READ)).isEqualTo("read"); assertThat(get(message, Headers.DATE)).isEqualTo("date"); } @Test public void testShouldSetHeadersWithNullAddress() throws Exception { Message message = new MimeMessage(); Map<String, String> map = new HashMap<String, String>(); Date sent = new Date(); PersonRecord person = new PersonRecord(0, null, null, null); generator.setHeaders(message, map, DataType.SMS, null, person, sent, 0); } }