package in.partake.controller.api.event;
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 PostCommentAPITest extends APIControllerTest {
@Test
public void testToCommentByOwner() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/postComment");
loginAs(proxy, TestDataProvider.EVENT_OWNER_ID);
addValidSessionTokenToParameter(proxy);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "comment", "comment");
proxy.execute();
assertResultOK(proxy);
}
@Test
public void testToCommentByUnrelatedUser() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/postComment");
loginAs(proxy, TestDataProvider.EVENT_UNRELATED_USER_ID);
addValidSessionTokenToParameter(proxy);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "comment", "comment");
proxy.execute();
assertResultOK(proxy);
}
@Test
public void testToCommentWithoutLogin() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/postComment");
addValidSessionTokenToParameter(proxy);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "comment", "comment");
proxy.execute();
assertResultLoginRequired(proxy);
}
@Test
public void testToCommentWithInvalidSessionToken() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/postComment");
loginAs(proxy, TestDataProvider.EVENT_OWNER_ID);
addInvalidSessionTokenToParameter(proxy);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "comment", "comment");
proxy.execute();
assertResultInvalid(proxy, UserErrorCode.INVALID_SECURITY_CSRF);
}
@Test
public void testToCommentWithInvalidEventId() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/postComment");
loginAs(proxy, TestDataProvider.EVENT_OWNER_ID);
addValidSessionTokenToParameter(proxy);
addFormParameter(proxy, "eventId", TestDataProvider.INVALID_EVENT_ID);
addFormParameter(proxy, "comment", "comment");
proxy.execute();
assertResultInvalid(proxy, UserErrorCode.INVALID_EVENT_ID);
}
@Test
public void testToCommentWithoutEventId() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/postComment");
loginAs(proxy, TestDataProvider.EVENT_OWNER_ID);
addValidSessionTokenToParameter(proxy);
addFormParameter(proxy, "comment", "comment");
proxy.execute();
assertResultInvalid(proxy, UserErrorCode.MISSING_EVENT_ID);
}
@Test
public void testToCommentWithoutComment() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/postComment");
loginAs(proxy, TestDataProvider.EVENT_OWNER_ID);
addValidSessionTokenToParameter(proxy);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
proxy.execute();
assertResultInvalid(proxy, UserErrorCode.MISSING_COMMENT);
}
@Test
public void testToCommentWithEmptyComment() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/postComment");
loginAs(proxy, TestDataProvider.EVENT_OWNER_ID);
addValidSessionTokenToParameter(proxy);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "comment", "");
proxy.execute();
assertResultInvalid(proxy, UserErrorCode.MISSING_COMMENT);
}
@Test
public void testToCommentWithBlankComment() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/postComment");
loginAs(proxy, TestDataProvider.EVENT_OWNER_ID);
addValidSessionTokenToParameter(proxy);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "comment", " ");
proxy.execute();
assertResultInvalid(proxy, UserErrorCode.MISSING_COMMENT);
}
@Test
public void testToCommentWithTooLongComment() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/postComment");
loginAs(proxy, TestDataProvider.EVENT_OWNER_ID);
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < PostCommentAPI.MAX_COMMENT_LENGTH * 2; ++i)
buffer.append((char)((i % 26) + 'a'));
addValidSessionTokenToParameter(proxy);
addFormParameter(proxy, "eventId", TestDataProvider.DEFAULT_EVENT_ID);
addFormParameter(proxy, "comment", buffer.toString());
proxy.execute();
assertResultInvalid(proxy, UserErrorCode.INVALID_COMMENT_TOOLONG);
}
}