package fi.otavanopisto.pyramus.rest; import static com.jayway.restassured.RestAssured.given; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import java.util.Arrays; import java.util.List; import java.time.OffsetDateTime; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import com.jayway.restassured.response.Response; import fi.otavanopisto.pyramus.rest.controller.permissions.CalendarPermissions; import fi.otavanopisto.pyramus.rest.model.AcademicTerm; @RunWith(Parameterized.class) public class CalendarPermissionsTestsIT extends AbstractRESTPermissionsTest { private CalendarPermissions calendarPermissions = new CalendarPermissions(); @Parameters public static List<Object[]> generateData() { return getGeneratedRoleData(); } public CalendarPermissionsTestsIT(String role) { this.role = role; } @Test public void testPermissionsCreateAcademicTerm() throws NoSuchFieldException { OffsetDateTime start = getDate(2010, 02, 03); OffsetDateTime end = getDate(2010, 06, 12); AcademicTerm academicTerm = new AcademicTerm(null, "create test", start, end, Boolean.FALSE); Response response = given().headers(getAuthHeaders()) .contentType("application/json") .body(academicTerm) .post("/calendar/academicTerms"); assertOk(response, calendarPermissions, CalendarPermissions.CREATE_ACADEMICTERM, 200); Long statusCode = new Long(response.statusCode()); Long id; if(statusCode.toString().equals("200")){ id = new Long(response.body().jsonPath().getInt("id")); if (!id.equals(null)) { given().headers(getAdminAuthHeaders()) .delete("/calendar/academicTerms/{ID}?permanent=true", id); } } } @Test public void testPermissionsListAcademicTerms() throws NoSuchFieldException { String[] permissions = new CalendarPermissions().getDefaultRoles(fi.otavanopisto.pyramus.rest.controller.permissions.CalendarPermissions.LIST_ACADEMICTERMS); List<String> allowedRolesList = Arrays.asList(permissions); assertOk("/calendar/academicTerms", allowedRolesList); } @Test public void testPermissionsFindAcademicTerm() throws NoSuchFieldException{ String[] permissions = new CalendarPermissions().getDefaultRoles(fi.otavanopisto.pyramus.rest.controller.permissions.CalendarPermissions.FIND_ACADEMICTERM); List<String> allowedRolesList = Arrays.asList(permissions); assertOk("/calendar/academicTerms/1", allowedRolesList); } @Test public void testPermissionsUpdateAcademicTerm() throws NoSuchFieldException{ AcademicTerm academicTerm = new AcademicTerm(null, "not updated", getDate(2010, 02, 03), getDate(2010, 06, 12), Boolean.FALSE); Response response = given().headers(getAdminAuthHeaders()) .contentType("application/json") .body(academicTerm) .post("/calendar/academicTerms"); Long id = new Long(response.body().jsonPath().getInt("id")); try { response.then().body("id", not(is((Long) null))).body("name", is(academicTerm.getName())).body("startDate", is(academicTerm.getStartDate().toString())) .body("endDate", is(academicTerm.getEndDate().toString())).body("archived", is(academicTerm.getArchived())); AcademicTerm updateAcademicTerm = new AcademicTerm(id, "updated", getDate(2010, 03, 04), getDate(2010, 07, 13), Boolean.FALSE); Response updateResponse = given().headers(getAuthHeaders()) .contentType("application/json") .body(updateAcademicTerm) .put("/calendar/academicTerms/{ID}", id); assertOk(updateResponse, calendarPermissions, CalendarPermissions.UPDATE_ACADEMICTERM, 200); } finally { given().headers(getAdminAuthHeaders()).delete("/calendar/academicTerms/{ID}?permanent=true", id); } } @Test public void testPermissionsDeleteAcademicTerm() throws NoSuchFieldException{ AcademicTerm academicTerm = new AcademicTerm(null, "to be deleted", getDate(2010, 02, 03), getDate(2010, 06, 12), Boolean.FALSE); Response response = given().headers(getAdminAuthHeaders()) .contentType("application/json") .body(academicTerm) .post("/calendar/academicTerms"); Long id = new Long(response.body().jsonPath().getInt("id")); Response deleteResponse = given().headers(getAuthHeaders()).delete("/calendar/academicTerms/{ID}", id); assertOk(deleteResponse, calendarPermissions, CalendarPermissions.DELETE_ACADEMICTERM, 204); given().headers(getAdminAuthHeaders()).delete("/calendar/academicTerms/{ID}?permanent=true", id); } @Test public void testPermissionsCoursesByTerm() throws NoSuchFieldException { AcademicTerm academicTerm = new AcademicTerm(null, "2010 spring", getDate(2010, 01, 01), getDate(2010, 06, 1), Boolean.FALSE); Response response = given().headers(getAdminAuthHeaders()).contentType("application/json").body(academicTerm) .post("/calendar/academicTerms"); Long id = new Long(response.body().jsonPath().getInt("id")); Response courseByTermResponse = given().headers(getAuthHeaders()).get("/calendar/academicTerms/{ID}/courses", id); assertOk(courseByTermResponse, calendarPermissions, CalendarPermissions.FIND_COURSESBYACADEMICTERM, 200); given().headers(getAdminAuthHeaders()).delete("/calendar/academicTerms/{ID}?permanent=true", id); } }