package in.partake.controller.api.event;
import in.partake.base.Util;
import in.partake.controller.api.APIControllerTest;
import in.partake.model.fixture.TestDataProvider;
import in.partake.resource.UserErrorCode;
import org.junit.Test;
import in.partake.controller.ActionProxy;
public class SendMessageAPITest extends APIControllerTest {
@Test
public void testToSendMessageForOwnedEvent() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/sendMessage");
loginAs(proxy, TestDataProvider.EVENT_OWNER_ID);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "subject", "subject");
addFormParameter(proxy, "body", "message");
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultOK(proxy);
// TODO: Check DB.
}
@Test
public void testToSendLongMessage() throws Exception {
String longMessage = Util.randomString(800);
ActionProxy proxy = getActionProxy(POST, "/api/event/sendMessage");
loginAs(proxy, TestDataProvider.EVENT_OWNER_ID);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "subject", "subject");
addFormParameter(proxy, "body", longMessage);
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultOK(proxy);
// TODO: Check DB.
}
@Test
public void testToSendMessageForManagedEvent() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/sendMessage");
loginAs(proxy, TestDataProvider.EVENT_EDITOR_ID);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "subject", "subject");
addFormParameter(proxy, "body", "hogehogehoge");
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultOK(proxy);
}
@Test
public void testToSendMessageForNotOwnedEvent() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/sendMessage");
loginAs(proxy, TestDataProvider.EVENT_UNRELATED_USER_ID);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "subject", "subject");
addFormParameter(proxy, "body", "hogehogehoge");
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultForbidden(proxy);
}
@Test
public void testToSendMessageWithoutLogin() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/sendMessage");
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "subject", "subject");
addFormParameter(proxy, "body", "hogehogehoge");
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultLoginRequired(proxy);
}
@Test
public void testToSendMessageWithoutTitle() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/sendMessage");
loginAs(proxy, TestDataProvider.EVENT_UNRELATED_USER_ID);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "body", "hogehogehoge");
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultInvalid(proxy, UserErrorCode.MISSING_MESSAGE_SUBJECT);
}
}