package in.partake.controller.api.ticket; import in.partake.controller.api.APIControllerTest; import in.partake.model.dto.UserTicket; import in.partake.model.dto.auxiliary.AttendanceStatus; import in.partake.model.fixture.TestDataProvider; import in.partake.resource.UserErrorCode; import junit.framework.Assert; import org.junit.Test; import in.partake.controller.ActionProxy; public class AttendAPITest extends APIControllerTest { @Test public void testShouldChangeToPresence() throws Exception { // { UserTicket enrollment = loadEnrollment(TestDataProvider.ATTENDANCE_ABSENT_USER_ID, TestDataProvider.DEFAULT_EVENT_TICKET_ID); Assert.assertEquals(AttendanceStatus.ABSENT, enrollment.getAttendanceStatus()); } ActionProxy proxy = getActionProxy(POST, API_EVENT_ATTEND_URL); loginAs(proxy, TestDataProvider.EVENT_OWNER_ID); addFormParameter(proxy, "userId", TestDataProvider.ATTENDANCE_ABSENT_USER_ID); addFormParameter(proxy, "ticketId", TestDataProvider.DEFAULT_EVENT_TICKET_ID.toString()); addFormParameter(proxy, "status", "present"); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultOK(proxy); // Check status is changed. { UserTicket enrollment = loadEnrollment(TestDataProvider.ATTENDANCE_ABSENT_USER_ID, TestDataProvider.DEFAULT_EVENT_TICKET_ID); Assert.assertEquals(AttendanceStatus.PRESENT, enrollment.getAttendanceStatus()); } } @Test public void testShouldChangeToAbsence() throws Exception { // { UserTicket enrollment = loadEnrollment(TestDataProvider.ATTENDANCE_UNKNOWN_USER_ID, TestDataProvider.DEFAULT_EVENT_TICKET_ID); Assert.assertEquals(AttendanceStatus.UNKNOWN, enrollment.getAttendanceStatus()); } ActionProxy proxy = getActionProxy(POST, API_EVENT_ATTEND_URL); loginAs(proxy, TestDataProvider.EVENT_OWNER_ID); addFormParameter(proxy, "userId", ATTENDANCE_UNKNOWN_USER_ID); addFormParameter(proxy, "ticketId", DEFAULT_EVENT_TICKET_ID.toString()); addFormParameter(proxy, "status", "absent"); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultOK(proxy); // Check status is changed. { UserTicket enrollment = loadEnrollment(ATTENDANCE_UNKNOWN_USER_ID, DEFAULT_EVENT_TICKET_ID); Assert.assertEquals(AttendanceStatus.ABSENT, enrollment.getAttendanceStatus()); } } @Test public void testShouldChangeToUnknown() throws Exception { // { UserTicket enrollment = loadEnrollment(TestDataProvider.ATTENDANCE_PRESENT_USER_ID, TestDataProvider.DEFAULT_EVENT_TICKET_ID); Assert.assertEquals(AttendanceStatus.PRESENT, enrollment.getAttendanceStatus()); } ActionProxy proxy = getActionProxy(POST, API_EVENT_ATTEND_URL); loginAs(proxy, TestDataProvider.EVENT_OWNER_ID); addFormParameter(proxy, "userId", TestDataProvider.ATTENDANCE_PRESENT_USER_ID); addFormParameter(proxy, "ticketId", TestDataProvider.DEFAULT_EVENT_TICKET_ID.toString()); addFormParameter(proxy, "status", "unknown"); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultOK(proxy); // Check status is changed. { UserTicket enrollment = loadEnrollment(TestDataProvider.ATTENDANCE_PRESENT_USER_ID, TestDataProvider.DEFAULT_EVENT_TICKET_ID); Assert.assertEquals(AttendanceStatus.UNKNOWN, enrollment.getAttendanceStatus()); } } @Test public void testLoginRequired() throws Exception { ActionProxy proxy = getActionProxy(POST, API_EVENT_ATTEND_URL); addFormParameter(proxy, "userId", TestDataProvider.ATTENDANCE_UNKNOWN_USER_ID); addFormParameter(proxy, "ticketId", TestDataProvider.DEFAULT_EVENT_TICKET_ID.toString()); addFormParameter(proxy, "status", "present"); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultLoginRequired(proxy); } @Test public void testUserIdRequired() throws Exception { ActionProxy proxy = getActionProxy(POST, API_EVENT_ATTEND_URL); loginAs(proxy, TestDataProvider.EVENT_OWNER_ID); // addFormParameter(proxy, "userId", TestDataProvider.ATTENDANCE_UNKNOWN_USER_ID); addFormParameter(proxy, "ticketId", TestDataProvider.DEFAULT_EVENT_TICKET_ID.toString()); addFormParameter(proxy, "status", "present"); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultInvalid(proxy, UserErrorCode.MISSING_USER_ID); } @Test public void testEventIdRequired() throws Exception { ActionProxy proxy = getActionProxy(POST, API_EVENT_ATTEND_URL); loginAs(proxy, TestDataProvider.EVENT_OWNER_ID); addFormParameter(proxy, "userId", TestDataProvider.ATTENDANCE_UNKNOWN_USER_ID); // addFormParameter(proxy, "ticketId", TestDataProvider.DEFAULT_EVENT_TICKET_ID.toString()); addFormParameter(proxy, "status", "present"); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultInvalid(proxy, UserErrorCode.MISSING_TICKET_ID); } @Test public void testStatusRequired() throws Exception { ActionProxy proxy = getActionProxy(POST, API_EVENT_ATTEND_URL); loginAs(proxy, TestDataProvider.EVENT_OWNER_ID); addFormParameter(proxy, "userId", TestDataProvider.ATTENDANCE_UNKNOWN_USER_ID); addFormParameter(proxy, "ticketId", TestDataProvider.DEFAULT_EVENT_TICKET_ID.toString()); // addFormParameter(proxy, "status", "present"); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultInvalid(proxy, UserErrorCode.MISSING_ATTENDANCE_STATUS); } @Test public void testInvalidOwner() throws Exception { ActionProxy proxy = getActionProxy(POST, API_EVENT_ATTEND_URL); loginAs(proxy, TestDataProvider.EVENT_UNRELATED_USER_ID); addFormParameter(proxy, "userId", TestDataProvider.ATTENDANCE_UNKNOWN_USER_ID); addFormParameter(proxy, "ticketId", TestDataProvider.DEFAULT_EVENT_TICKET_ID.toString()); addFormParameter(proxy, "status", "present"); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultForbidden(proxy); } @Test public void testInvalidArgument() throws Exception { ActionProxy proxy = getActionProxy(POST, API_EVENT_ATTEND_URL); loginAs(proxy, TestDataProvider.EVENT_OWNER_ID); addFormParameter(proxy, "userId", TestDataProvider.ATTENDANCE_PRESENT_USER_ID); addFormParameter(proxy, "ticketId", TestDataProvider.DEFAULT_EVENT_TICKET_ID.toString()); addFormParameter(proxy, "status", "hogehoge"); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultInvalid(proxy, UserErrorCode.INVALID_ATTENDANCE_STATUS); } @Test public void testInvalidSessionToken() throws Exception { ActionProxy proxy = getActionProxy(POST, API_EVENT_ATTEND_URL); loginAs(proxy, TestDataProvider.EVENT_OWNER_ID); addFormParameter(proxy, "userId", TestDataProvider.ATTENDANCE_UNKNOWN_USER_ID); addFormParameter(proxy, "ticketId", TestDataProvider.DEFAULT_EVENT_TICKET_ID.toString()); addFormParameter(proxy, "status", "present"); addInvalidSessionTokenToParameter(proxy); proxy.execute(); assertResultInvalid(proxy, UserErrorCode.INVALID_SECURITY_CSRF); } }