Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 27bc8354 authored by Adam Szewera's avatar Adam Szewera
Browse files

Refactor MailToTest class from Java to Kotlin

parent b1b4c4ed
Loading
Loading
Loading
Loading
+113 −137
Original line number Diff line number Diff line
package com.fsck.k9.helper;
package com.fsck.k9.helper

import android.net.Uri
import app.k9mail.core.android.testing.RobolectricTest
import com.fsck.k9.helper.MailTo.CaseInsensitiveParamWrapper
import junit.framework.Assert
import org.hamcrest.CoreMatchers
import org.junit.Rule
import org.junit.Test
import org.junit.rules.ExpectedException

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import android.net.Uri;

import app.k9mail.core.android.testing.RobolectricTest;
import com.fsck.k9.helper.MailTo.CaseInsensitiveParamWrapper;
import com.fsck.k9.mail.Address;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;


public class MailToTest extends RobolectricTest {
    @Rule
    public ExpectedException exception = ExpectedException.none();

class MailToTest : RobolectricTest() {
    @get:Rule
    val exception: ExpectedException = ExpectedException.none()

    @Test
    public void testIsMailTo_validMailToURI() {
        Uri uri = Uri.parse("mailto:nobody");

        boolean result = MailTo.isMailTo(uri);
    fun testIsMailTo_validMailToURI() {
        val uri = Uri.parse("mailto:nobody")
        val result = MailTo.isMailTo(uri)

        assertTrue(result);
        Assert.assertTrue(result)
    }

    @Test
    public void testIsMailTo_invalidMailToUri() {
        Uri uri = Uri.parse("http://example.org/");
    fun testIsMailTo_invalidMailToUri() {
        val uri = Uri.parse("http://example.org/")
        val result = MailTo.isMailTo(uri)

        boolean result = MailTo.isMailTo(uri);

        assertFalse(result);
        Assert.assertFalse(result)
    }

    @SuppressWarnings("ConstantConditions")
    @Test
    public void testIsMailTo_nullArgument() {
        Uri uri = null;

        boolean result = MailTo.isMailTo(uri);
    fun testIsMailTo_nullArgument() {
        val uri: Uri? = null
        val result = MailTo.isMailTo(uri)

        assertFalse(result);
        Assert.assertFalse(result)
    }

    @Test
    public void parse_withNullArgument_shouldThrow() throws Exception {
        exception.expect(NullPointerException.class);
        exception.expectMessage("Argument 'uri' must not be null");
    @Throws(Exception::class)
    fun parse_withNullArgument_shouldThrow() {
        exception.expect(NullPointerException::class.java)
        exception.expectMessage("Argument 'uri' must not be null")

        MailTo.parse(null);
        MailTo.parse(null)
    }

    @Test
    public void parse_withoutMailtoUri_shouldThrow() throws Exception {
        exception.expect(IllegalArgumentException.class);
        exception.expectMessage("Not a mailto scheme");
    @Throws(Exception::class)
    fun parse_withoutMailtoUri_shouldThrow() {
        exception.expect(IllegalArgumentException::class.java)
        exception.expectMessage("Not a mailto scheme")
        val uri = Uri.parse("http://example.org/")

        Uri uri = Uri.parse("http://example.org/");

        MailTo.parse(uri);
        MailTo.parse(uri)
    }

    @Test
    public void testGetTo_singleEmailAddress() {
        Uri uri = Uri.parse("mailto:test@abc.com");
        MailTo mailToHelper = MailTo.parse(uri);
    fun testGetTo_singleEmailAddress() {
        val uri = Uri.parse("mailto:test@abc.com")
        val mailToHelper = MailTo.parse(uri)

        Address[] emailAddressList = mailToHelper.getTo();
        val emailAddressList = mailToHelper.to

        assertEquals(emailAddressList[0].getAddress(), "test@abc.com");
        Assert.assertEquals(emailAddressList[0].address, "test@abc.com")
    }

    @Test
    public void testGetTo_multipleEmailAddress() {
        Uri uri = Uri.parse("mailto:test1@abc.com?to=test2@abc.com");
        MailTo mailToHelper = MailTo.parse(uri);
    fun testGetTo_multipleEmailAddress() {
        val uri = Uri.parse("mailto:test1@abc.com?to=test2@abc.com")
        val mailToHelper = MailTo.parse(uri)

        Address[] emailAddressList = mailToHelper.getTo();
        val emailAddressList = mailToHelper.to

        assertEquals(emailAddressList[0].getAddress(), "test1@abc.com");
        assertEquals(emailAddressList[1].getAddress(), "test2@abc.com");
        Assert.assertEquals(emailAddressList[0].address, "test1@abc.com")
        Assert.assertEquals(emailAddressList[1].address, "test2@abc.com")
    }

    @Test
    public void testGetCc_singleEmailAddress() {
        Uri uri = Uri.parse("mailto:test1@abc.com?cc=test3@abc.com");
        MailTo mailToHelper = MailTo.parse(uri);
    fun testGetCc_singleEmailAddress() {
        val uri = Uri.parse("mailto:test1@abc.com?cc=test3@abc.com")
        val mailToHelper = MailTo.parse(uri)

        Address[] emailAddressList = mailToHelper.getCc();
        val emailAddressList = mailToHelper.cc

        assertEquals(emailAddressList[0].getAddress(), "test3@abc.com");
        Assert.assertEquals(emailAddressList[0].address, "test3@abc.com")
    }

    @Test
    public void testGetCc_multipleEmailAddress() {
        Uri uri = Uri.parse("mailto:test1@abc.com?cc=test3@abc.com,test4@abc.com");
        MailTo mailToHelper = MailTo.parse(uri);
    fun testGetCc_multipleEmailAddress() {
        val uri = Uri.parse("mailto:test1@abc.com?cc=test3@abc.com,test4@abc.com")
        val mailToHelper = MailTo.parse(uri)

        Address[] emailAddressList = mailToHelper.getCc();
        val emailAddressList = mailToHelper.cc

        assertEquals(emailAddressList[0].getAddress(), "test3@abc.com");
        assertEquals(emailAddressList[1].getAddress(), "test4@abc.com");
        Assert.assertEquals(emailAddressList[0].address, "test3@abc.com")
        Assert.assertEquals(emailAddressList[1].address, "test4@abc.com")
    }

    @Test
    public void testGetBcc_singleEmailAddress() {
        Uri uri = Uri.parse("mailto:?bcc=test3@abc.com");
        MailTo mailToHelper = MailTo.parse(uri);
    fun testGetBcc_singleEmailAddress() {
        val uri = Uri.parse("mailto:?bcc=test3@abc.com")
        val mailToHelper = MailTo.parse(uri)

        Address[] emailAddressList = mailToHelper.getBcc();
        val emailAddressList = mailToHelper.bcc

        assertEquals(emailAddressList[0].getAddress(), "test3@abc.com");
        Assert.assertEquals(emailAddressList[0].address, "test3@abc.com")
    }

    @Test
    public void testGetBcc_multipleEmailAddress() {
        Uri uri = Uri.parse("mailto:?bcc=test3@abc.com&bcc=test4@abc.com");
        MailTo mailToHelper = MailTo.parse(uri);

        Address[] emailAddressList = mailToHelper.getBcc();
    fun testGetBcc_multipleEmailAddress() {
        val uri = Uri.parse("mailto:?bcc=test3@abc.com&bcc=test4@abc.com")
        val mailToHelper = MailTo.parse(uri)
        val emailAddressList = mailToHelper.bcc

        assertEquals(emailAddressList[0].getAddress(), "test3@abc.com");
        assertEquals(emailAddressList[1].getAddress(), "test4@abc.com");
        Assert.assertEquals(emailAddressList[0].address, "test3@abc.com")
        Assert.assertEquals(emailAddressList[1].address, "test4@abc.com")
    }

    @Test
    public void testGetSubject() {
        Uri uri = Uri.parse("mailto:?subject=Hello");
        MailTo mailToHelper = MailTo.parse(uri);
    fun testGetSubject() {
        val uri = Uri.parse("mailto:?subject=Hello")
        val mailToHelper = MailTo.parse(uri)

        String subject = mailToHelper.getSubject();
        val subject = mailToHelper.subject

        assertEquals(subject, "Hello");
        Assert.assertEquals(subject, "Hello")
    }

    @Test
    public void testGetBody() {
        Uri uri = Uri.parse("mailto:?body=Test%20Body&something=else");
        MailTo mailToHelper = MailTo.parse(uri);
    fun testGetBody() {
        val uri = Uri.parse("mailto:?body=Test%20Body&something=else")
        val mailToHelper = MailTo.parse(uri)

        String subject = mailToHelper.getBody();
        val subject = mailToHelper.body

        assertEquals(subject, "Test Body");
        Assert.assertEquals(subject, "Test Body")
    }

    @Test
    public void testCaseInsensitiveParamWrapper() {
        Uri uri = Uri.parse("scheme://authority?a=one&b=two&c=three");
        CaseInsensitiveParamWrapper caseInsensitiveParamWrapper = new CaseInsensitiveParamWrapper(uri);

        List<String> result = caseInsensitiveParamWrapper.getQueryParameters("b");
    fun testCaseInsensitiveParamWrapper() {
        val uri = Uri.parse("scheme://authority?a=one&b=two&c=three")
        val caseInsensitiveParamWrapper = CaseInsensitiveParamWrapper(uri)
        val result = caseInsensitiveParamWrapper.getQueryParameters("b")

        assertThat(Collections.singletonList("two"), is(result));
        org.junit.Assert.assertThat(listOf("two"), CoreMatchers.`is`(result))
    }

    @Test
    public void testCaseInsensitiveParamWrapper_multipleMatchingQueryParameters() {
        Uri uri = Uri.parse("scheme://authority?xname=one&name=two&Name=Three&NAME=FOUR");
        CaseInsensitiveParamWrapper caseInsensitiveParamWrapper = new CaseInsensitiveParamWrapper(uri);
    fun testCaseInsensitiveParamWrapper_multipleMatchingQueryParameters() {
        val uri = Uri.parse("scheme://authority?xname=one&name=two&Name=Three&NAME=FOUR")
        val caseInsensitiveParamWrapper = CaseInsensitiveParamWrapper(uri)
        val result = caseInsensitiveParamWrapper.getQueryParameters("name")

        List<String> result = caseInsensitiveParamWrapper.getQueryParameters("name");

        assertThat(Arrays.asList("two", "Three", "FOUR"), is(result));
        org.junit.Assert.assertThat<List<String>>(mutableListOf("two", "Three", "FOUR"), CoreMatchers.`is`(result))
    }

    @Test
    public void testCaseInsensitiveParamWrapper_withoutQueryParameters() {
        Uri uri = Uri.parse("scheme://authority");
        CaseInsensitiveParamWrapper caseInsensitiveParamWrapper = new CaseInsensitiveParamWrapper(uri);

        List<String> result = caseInsensitiveParamWrapper.getQueryParameters("name");
    fun testCaseInsensitiveParamWrapper_withoutQueryParameters() {
        val uri = Uri.parse("scheme://authority")
        val caseInsensitiveParamWrapper = CaseInsensitiveParamWrapper(uri)
        val result = caseInsensitiveParamWrapper.getQueryParameters("name")

        assertThat(Collections.<String>emptyList(), is(result));
        org.junit.Assert.assertThat(emptyList(), CoreMatchers.`is`(result))
    }

    @Test
    public void testGetInReplyTo_singleMessageId() {
        Uri uri = Uri.parse("mailto:?in-reply-to=%3C7C72B202-73F3@somewhere%3E");
    fun testGetInReplyTo_singleMessageId() {
        val uri = Uri.parse("mailto:?in-reply-to=%3C7C72B202-73F3@somewhere%3E")
        val mailToHelper = MailTo.parse(uri)

        MailTo mailToHelper = MailTo.parse(uri);

        assertEquals("<7C72B202-73F3@somewhere>", mailToHelper.getInReplyTo());
        Assert.assertEquals("<7C72B202-73F3@somewhere>", mailToHelper.inReplyTo)
    }

    @Test
    public void testGetInReplyTo_multipleMessageIds() {
        Uri uri = Uri.parse("mailto:?in-reply-to=%3C7C72B202-73F3@somewhere%3E%3C8A39-1A87CB40C114@somewhereelse%3E");
    fun testGetInReplyTo_multipleMessageIds() {
        val uri = Uri.parse("mailto:?in-reply-to=%3C7C72B202-73F3@somewhere%3E%3C8A39-1A87CB40C114@somewhereelse%3E")

        MailTo mailToHelper = MailTo.parse(uri);
        val mailToHelper = MailTo.parse(uri)

        assertEquals("<7C72B202-73F3@somewhere>", mailToHelper.getInReplyTo());
        Assert.assertEquals("<7C72B202-73F3@somewhere>", mailToHelper.inReplyTo)
    }


    @Test
    public void testGetInReplyTo_RFC6068Example() {
        Uri uri = Uri.parse("mailto:list@example.org?In-Reply-To=%3C3469A91.D10AF4C@example.com%3E");
    fun testGetInReplyTo_RFC6068Example() {
        val uri = Uri.parse("mailto:list@example.org?In-Reply-To=%3C3469A91.D10AF4C@example.com%3E")

        MailTo mailToHelper = MailTo.parse(uri);
        val mailToHelper = MailTo.parse(uri)

        assertEquals("<3469A91.D10AF4C@example.com>", mailToHelper.getInReplyTo());
        Assert.assertEquals("<3469A91.D10AF4C@example.com>", mailToHelper.inReplyTo)
    }

    @Test
    public void testGetInReplyTo_invalid() {
        Uri uri = Uri.parse("mailto:?in-reply-to=7C72B202-73F3somewhere");
    fun testGetInReplyTo_invalid() {
        val uri = Uri.parse("mailto:?in-reply-to=7C72B202-73F3somewhere")

        MailTo mailToHelper = MailTo.parse(uri);
        val mailToHelper = MailTo.parse(uri)

        assertEquals(null, mailToHelper.getInReplyTo());
        Assert.assertEquals(null, mailToHelper.inReplyTo)
    }

    @Test
    public void testGetInReplyTo_empty() {
        Uri uri = Uri.parse("mailto:?in-reply-to=");
    fun testGetInReplyTo_empty() {
        val uri = Uri.parse("mailto:?in-reply-to=")

        MailTo mailToHelper = MailTo.parse(uri);

        assertEquals(null, mailToHelper.getInReplyTo());
        val mailToHelper = MailTo.parse(uri)

        Assert.assertEquals(null, mailToHelper.inReplyTo)
    }

}