// Copyright © 2015 HSL <https://www.hsl.fi> // This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses. package fi.hsl.parkandride.itest; import com.jayway.restassured.http.ContentType; import fi.hsl.parkandride.core.service.reporting.ReportParameters; import fi.hsl.parkandride.front.UrlSchema; import org.junit.Test; import org.springframework.http.HttpStatus; import static com.jayway.restassured.RestAssured.given; import static fi.hsl.parkandride.front.ReportController.MEDIA_TYPE_EXCEL; public class GenericReportITest extends AbstractReportingITest { @Test public void report_accessDenied() { given().contentType(ContentType.JSON) .accept(MEDIA_TYPE_EXCEL) .header(authorization(devHelper.login(apiUser.username).token)) .body(new ReportParameters()) .when() .post(UrlSchema.REPORT, "FacilityUsage") .then() .assertThat().statusCode(HttpStatus.FORBIDDEN.value()); } @Test public void report_withException_resultsInBadRequest() { // Negative interval should throw exception final ReportParameters params = baseParams(); params.interval = -1; given().contentType(ContentType.JSON) .accept(MEDIA_TYPE_EXCEL) .header(authorization(devHelper.login(adminUser.username).token)) .body(params) .when() .post(UrlSchema.REPORT, "FacilityUsage") .then() .assertThat().statusCode(HttpStatus.BAD_REQUEST.value()); } @Test public void report_withConflictingDates_resultsInBadRequest() { // No params given -> IllegalArgumentException from fi.hsl.parkandride.core.service.reporting.FacilityUsageReportService final ReportParameters params = baseParams(); params.interval = 100; params.startDate = BASE_DATE; params.endDate = BASE_DATE.minusDays(1); given().contentType(ContentType.JSON) .accept(MEDIA_TYPE_EXCEL) .header(authorization(devHelper.login(adminUser.username).token)) .body(params) .when() .post(UrlSchema.REPORT, "FacilityUsage") .then() .assertThat().statusCode(HttpStatus.BAD_REQUEST.value()); } @Test public void report_incorrectType_resultsInBadRequest() { given().contentType(ContentType.JSON) .accept(MEDIA_TYPE_EXCEL) .header(authorization(devHelper.login(adminUser.username).token)) .body(baseParams()) .when() .post(UrlSchema.REPORT, "foobar") .then() .assertThat().statusCode(HttpStatus.BAD_REQUEST.value()); } }