package fi.otavanopisto.pyramus.rest; import static com.jayway.restassured.RestAssured.given; 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.ModulePermissions; import fi.otavanopisto.pyramus.rest.model.Module; @RunWith(Parameterized.class) public class ModulePermissionsTestsIT extends AbstractRESTPermissionsTest { private ModulePermissions modulePermissions = new ModulePermissions(); @Parameters public static List<Object[]> generateData() { return getGeneratedRoleData(); } public ModulePermissionsTestsIT(String role) { this.role = role; } @Test public void testCreateModule() throws NoSuchFieldException { Module module = new Module(null, "Create test", null, null, "Course for testing course creation", Boolean.FALSE, 111, 222l, null, null, 1l, null, 1d, 1l, null); Response response = given().headers(getAuthHeaders()) .contentType("application/json") .body(module) .post("/modules/modules/"); assertOk(response, modulePermissions, ModulePermissions.CREATE_MODULE, 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("/modules/modules/{ID}?permanent=true", id); } } } @Test public void testPermissionsListModules() throws NoSuchFieldException { Response response = given().headers(getAuthHeaders()) .get("/modules/modules"); assertOk(response, modulePermissions, ModulePermissions.LIST_MODULES, 200); } @Test public void testPermissionsFindModule() throws NoSuchFieldException { Response response = given().headers(getAuthHeaders()) .get("/modules/modules/{ID}", 1); assertOk(response, modulePermissions, ModulePermissions.FIND_MODULE, 200); } @Test public void testPermissionsUpdateModule() throws NoSuchFieldException { Module module = new Module(null, "not updated", null, null, "not updated module", Boolean.FALSE, 111, 222l, null, null, 1l, null, 1d, 1l, null); Response response = given().headers(getAdminAuthHeaders()) .contentType("application/json") .body(module) .post("/modules/modules"); Long id = new Long(response.body().jsonPath().getInt("id")); try { Module updateModule = new Module(id, "updated", null, null, "updated module", Boolean.FALSE, 222, 333l, null, null, 2l, null, 2d, 2l, null); Response updateResponse = given().headers(getAuthHeaders()) .contentType("application/json") .body(updateModule) .put("/modules/modules/{ID}", id); assertOk(updateResponse, modulePermissions, ModulePermissions.UPDATE_MODULE, 200); } finally { given().headers(getAdminAuthHeaders()) .delete("/modules/modules/{ID}?permanent=true", id); } } @Test public void testPermissionsDeleteModule() throws NoSuchFieldException { Module module = new Module(null, "not updated", OffsetDateTime.now(), OffsetDateTime.now(), "not updated module", Boolean.FALSE, 111, 222l, 1l, 1l, 1l, null, 1d, 1l, null); Response response = given().headers(getAdminAuthHeaders()) .contentType("application/json") .body(module) .post("/modules/modules"); Long id = new Long(response.body().jsonPath().getInt("id")); Response deleteResponse = given().headers(getAuthHeaders()) .delete("/modules/modules/{ID}", id); assertOk(deleteResponse, modulePermissions, ModulePermissions.DELETE_MODULE, 204); given().headers(getAdminAuthHeaders()) .delete("/modules/modules/{ID}?permanent=true", id); } @Test public void testPermissionsListCoursesByModule() throws NoSuchFieldException { Response response = given().headers(getAuthHeaders()) .get("/modules/modules/{MODULEID}/courses", 1l); assertOk(response, modulePermissions, ModulePermissions.LIST_COURSESBYMODULE, 200); } @Test public void testPermissionsListProjectsByModule() throws NoSuchFieldException { Response response = given().headers(getAuthHeaders()) .get("/modules/modules/{MODULEID}/projects", 1l); assertOk(response, modulePermissions, ModulePermissions.LIST_PROJECTSBYMODULE, 200); } }