package in.partake.controller.api.event;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import in.partake.controller.api.APIControllerTest;
import in.partake.model.dto.Event;
import in.partake.resource.UserErrorCode;
import org.junit.Test;
import in.partake.controller.ActionProxy;
public class PublishAPITest extends APIControllerTest {
@Test
public void testPublish() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/publish");
loginAs(proxy, EVENT_OWNER_ID);
addFormParameter(proxy, "eventId", UNPUBLISHED_EVENT_ID);
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultOK(proxy);
Event event = loadEvent(UNPUBLISHED_EVENT_ID);
assertThat(event.isDraft(), is(false));
}
@Test
public void testPublishEventAlreadyPublished() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/publish");
loginAs(proxy, EVENT_OWNER_ID);
addFormParameter(proxy, "eventId", DEFAULT_EVENT_ID);
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultInvalid(proxy, UserErrorCode.EVENT_ALREADY_PUBLISHED);
}
@Test
public void testPublishWithoutLogin() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/publish");
addFormParameter(proxy, "eventId", UNPUBLISHED_EVENT_ID);
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultLoginRequired(proxy);
}
@Test
public void testPublishWithEditor() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/publish");
loginAs(proxy, EVENT_EDITOR_ID);
addFormParameter(proxy, "eventId", UNPUBLISHED_EVENT_ID);
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultForbidden(proxy, UserErrorCode.FORBIDDEN_EVENT_EDIT);
}
@Test
public void testPublishWithUnrelatedUser() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/publish");
loginAs(proxy, EVENT_UNRELATED_USER_ID);
addFormParameter(proxy, "eventId", UNPUBLISHED_EVENT_ID);
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultForbidden(proxy, UserErrorCode.FORBIDDEN_EVENT_EDIT);
}
@Test
public void testPublishWithInvalidSessionToken() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/publish");
loginAs(proxy, EVENT_OWNER_ID);
addFormParameter(proxy, "eventId", UNPUBLISHED_EVENT_ID);
proxy.execute();
assertResultInvalid(proxy, UserErrorCode.INVALID_SECURITY_CSRF);
}
@Test
public void testPublishWithInvalidEventId() throws Exception {
ActionProxy proxy = getActionProxy(POST, "/api/event/publish");
loginAs(proxy, EVENT_OWNER_ID);
addFormParameter(proxy, "eventId", INVALID_EVENT_ID);
addValidSessionTokenToParameter(proxy);
proxy.execute();
assertResultInvalid(proxy, UserErrorCode.INVALID_EVENT_ID);
}
}