package com.fsck.k9.mail.store.webdav;
import com.fsck.k9.mail.Flag;
import com.fsck.k9.mail.K9LibRobolectricTestRunner;
import com.fsck.k9.mail.MessagingException;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.Collections;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(K9LibRobolectricTestRunner.class)
public class WebDavMessageTest {
private WebDavMessage message;
@Mock
private WebDavFolder mockFolder;
@Mock
private WebDavStore mockStore;
@Mock
private WebDavFolder mockTrashFolder;
@Before
public void before() {
MockitoAnnotations.initMocks(this);
when(mockFolder.getName()).thenReturn("Inbox");
when(mockFolder.getUrl()).thenReturn("http://example.org/Inbox");
message = new WebDavMessage("message1", mockFolder);
}
@Test
public void setUrl_tests() throws MessagingException {
message.setUrl("message.eml");
assertEquals("http://example.org/Inbox/message.eml", message.getUrl());
message.setUrl("mes sage.eml");
assertEquals("http://example.org/Inbox/mes%20sage.eml", message.getUrl());
message.setUrl("/message.eml");
assertEquals("http://example.org/Inbox/message.eml", message.getUrl());
message.setUrl("http://example.com/Inbox/message.eml");
assertEquals("http://example.com/Inbox/message.eml", message.getUrl());
message.setUrl("mes%20sage.eml");
assertEquals("http://example.org/Inbox/mes%20sage.eml", message.getUrl());
message.setUrl("sub%20folder/mes%20sage.eml");
assertEquals("http://example.org/Inbox/sub%20folder/mes%20sage.eml", message.getUrl());
}
@Test
public void delete_asks_folder_to_delete_message() throws MessagingException {
when(mockFolder.getStore()).thenReturn(mockStore);
when(mockStore.getFolder("Trash")).thenReturn(mockTrashFolder);
message.delete("Trash");
verify(mockFolder).moveMessages(Collections.singletonList(message), mockTrashFolder);
}
@Test
public void setNewHeaders_updates_size() throws MessagingException {
ParsedMessageEnvelope parsedMessageEnvelope = new ParsedMessageEnvelope();
parsedMessageEnvelope.addHeader("getcontentlength", "1024");
message.setNewHeaders(parsedMessageEnvelope);
assertEquals(1024, message.getSize());
}
@Test
public void setFlag_asks_folder_to_set_flag() throws MessagingException {
message.setFlag(Flag.FLAGGED, true);
verify(mockFolder).setFlags(Collections.singletonList(message),
Collections.singleton(Flag.FLAGGED), true);
}
}