Package in.partake.controller.api.ticket

Source Code of in.partake.controller.api.ticket.ApplyAPITest

package in.partake.controller.api.ticket;

import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import in.partake.controller.api.APIControllerTest;
import in.partake.model.dto.UserTicket;
import in.partake.model.dto.auxiliary.ParticipationStatus;
import in.partake.resource.UserErrorCode;

import org.junit.Test;

import in.partake.controller.ActionProxy;

public class ApplyAPITest extends APIControllerTest {

    @Test
    public void testEnroll() throws Exception {
        ActionProxy proxy = getActionProxy(POST, API_EVENT_APPLY);
        loginAs(proxy, DEFAULT_USER_ID);
        addFormParameter(proxy, "status", "enroll");
        addFormParameter(proxy, "ticketId", DEFAULT_EVENT_TICKET_ID.toString());
        addFormParameter(proxy, "comment", "comment");
        addValidSessionTokenToParameter(proxy);

        proxy.execute();
        assertResultOK(proxy);

        UserTicket enrollment = loadEnrollment(DEFAULT_USER_ID, DEFAULT_EVENT_TICKET_ID);
        assertThat(enrollment.getStatus(), is(ParticipationStatus.ENROLLED));
    }

    @Test
    public void testReserve() throws Exception {
        ActionProxy proxy = getActionProxy(POST, API_EVENT_APPLY);
        loginAs(proxy, DEFAULT_USER_ID);
        addFormParameter(proxy, "status", "reserve");
        addFormParameter(proxy, "ticketId", DEFAULT_EVENT_TICKET_ID.toString());
        addFormParameter(proxy, "comment", "comment");
        addValidSessionTokenToParameter(proxy);

        proxy.execute();
        assertResultOK(proxy);

        UserTicket enrollment = loadEnrollment(DEFAULT_USER_ID, DEFAULT_EVENT_TICKET_ID);
        assertThat(enrollment.getStatus(), is(ParticipationStatus.RESERVED));
    }

    @Test
    public void testCancel() throws Exception {
        ActionProxy proxy = getActionProxy(POST, API_EVENT_APPLY);
        loginAs(proxy, DEFAULT_USER_ID);
        addFormParameter(proxy, "status", "cancel");
        addFormParameter(proxy, "ticketId", DEFAULT_EVENT_TICKET_ID.toString());
        addFormParameter(proxy, "comment", "comment");
        addValidSessionTokenToParameter(proxy);

        proxy.execute();
        assertResultOK(proxy);

        UserTicket enrollment = loadEnrollment(DEFAULT_USER_ID, DEFAULT_EVENT_TICKET_ID);
        assertThat(enrollment.getStatus(), is(ParticipationStatus.CANCELLED));
    }

    @Test
    public void testWithInvalidStatus() throws Exception {
        ActionProxy proxy = getActionProxy(POST, API_EVENT_APPLY);
        loginAs(proxy, DEFAULT_USER_ID);
        addFormParameter(proxy, "status", "invalid");
        addFormParameter(proxy, "ticketId", DEFAULT_EVENT_TICKET_ID.toString());
        addFormParameter(proxy, "comment", "comment");
        addValidSessionTokenToParameter(proxy);

        proxy.execute();
        assertResultInvalid(proxy, UserErrorCode.INVALID_ENROLL_STATUS);
    }

    @Test
    public void testEnrollWithoutComment() throws Exception {
        ActionProxy proxy = getActionProxy(POST, API_EVENT_APPLY);
        loginAs(proxy, DEFAULT_USER_ID);
        addFormParameter(proxy, "status", "enroll");
        addFormParameter(proxy, "ticketId", DEFAULT_EVENT_TICKET_ID.toString());
        addValidSessionTokenToParameter(proxy);

        proxy.execute();
        assertResultOK(proxy);

        UserTicket enrollment = loadEnrollment(DEFAULT_USER_ID, DEFAULT_EVENT_TICKET_ID);
        assertThat(enrollment.getStatus(), is(ParticipationStatus.ENROLLED));
        assertThat(enrollment.getComment(), is(""));
    }

    @Test
    public void testEnrollWithLongComment() throws Exception {
        ActionProxy proxy = getActionProxy(POST, API_EVENT_APPLY);
        loginAs(proxy, DEFAULT_USER_ID);
        addFormParameter(proxy, "status", "enroll");
        addFormParameter(proxy, "ticketId", DEFAULT_EVENT_TICKET_ID.toString());
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < 1025; ++i)
            builder.append('a');
        addFormParameter(proxy, "comment", builder.toString());
        addValidSessionTokenToParameter(proxy);

        proxy.execute();
        assertResultInvalid(proxy, UserErrorCode.INVALID_COMMENT_TOOLONG);
    }

    @Test
    public void testEnrollWontChangeEnrolledAt() throws Exception {
        ActionProxy proxy = getActionProxy(POST, API_EVENT_APPLY);
        loginAs(proxy, EVENT_RESERVED_USER_ID);
        addFormParameter(proxy, "status", "enroll");
        addFormParameter(proxy, "ticketId", DEFAULT_EVENT_TICKET_ID.toString());
        addFormParameter(proxy, "comment", "comment");
        addValidSessionTokenToParameter(proxy);

        UserTicket original = loadEnrollment(EVENT_RESERVED_USER_ID, DEFAULT_EVENT_TICKET_ID);

        proxy.execute();
        assertResultOK(proxy);

        UserTicket enrollment = loadEnrollment(EVENT_RESERVED_USER_ID, DEFAULT_EVENT_TICKET_ID);

        assertThat(enrollment.getStatus(), is(ParticipationStatus.ENROLLED));
        assertThat(enrollment.getModifiedAt(), is(original.getModifiedAt()));
    }

    @Test
    public void testWithoutValidSessionToken() throws Exception {
        ActionProxy proxy = getActionProxy(POST, API_EVENT_APPLY);
        loginAs(proxy, DEFAULT_USER_ID);
        addFormParameter(proxy, "status", "enroll");
        addFormParameter(proxy, "ticketId", DEFAULT_EVENT_TICKET_ID.toString());
        addFormParameter(proxy, "comment", "comment");

        proxy.execute();
        assertResultInvalid(proxy, UserErrorCode.INVALID_SECURITY_CSRF);
    }

    @Test
    public void testWithoutLogin() throws Exception {
        ActionProxy proxy = getActionProxy(POST, API_EVENT_APPLY);
        addFormParameter(proxy, "status", "enroll");
        addFormParameter(proxy, "ticketId", DEFAULT_EVENT_TICKET_ID.toString());
        addFormParameter(proxy, "comment", "comment");

        proxy.execute();
        assertResultLoginRequired(proxy);
    }
}
TOP

Related Classes of in.partake.controller.api.ticket.ApplyAPITest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.