Skip to content
Snippets Groups Projects
Commit 0366bc53 authored by Zachary Sabourin's avatar Zachary Sabourin
Browse files

feat: Migrate tests to commons test package

Resolves #7
parent 7f73054f
No related branches found
No related tags found
1 merge request!16feat: Migrate tests to commons test package
...@@ -133,6 +133,12 @@ ...@@ -133,6 +133,12 @@
<artifactId>quarkus-junit5-mockito</artifactId> <artifactId>quarkus-junit5-mockito</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.eclipsefoundation</groupId>
<artifactId>quarkus-test-common</artifactId>
<version>${eclipse-api-version}</version>
<scope>test</scope>
</dependency>
<!-- Following H2/devservices deps are made to circumvent need for docker --> <!-- Following H2/devservices deps are made to circumvent need for docker -->
<dependency> <dependency>
...@@ -236,4 +242,4 @@ ...@@ -236,4 +242,4 @@
</properties> </properties>
</profile> </profile>
</profiles> </profiles>
</project> </project>
\ No newline at end of file
...@@ -15,17 +15,16 @@ package org.eclipsefoundation.downloads.resources; ...@@ -15,17 +15,16 @@ package org.eclipsefoundation.downloads.resources;
import static io.restassured.RestAssured.given; import static io.restassured.RestAssured.given;
import static io.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath; import static io.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath;
import javax.inject.Inject;
import org.eclipsefoundation.downloads.namespaces.DownloadsUrlParameterNames;
import org.eclipsefoundation.downloads.test.helper.SchemaNamespaceHelper; import org.eclipsefoundation.downloads.test.helper.SchemaNamespaceHelper;
import org.eclipsefoundation.testing.helpers.TestCaseHelper;
import org.eclipsefoundation.testing.templates.RestAssuredTemplates;
import org.eclipsefoundation.testing.templates.RestAssuredTemplates.EndpointTestCase;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle; import org.junit.jupiter.api.TestInstance.Lifecycle;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.QuarkusTest;
import io.restassured.http.ContentType;
@TestInstance(Lifecycle.PER_CLASS) @TestInstance(Lifecycle.PER_CLASS)
@QuarkusTest @QuarkusTest
...@@ -34,139 +33,237 @@ public class DownloadsResourceTest { ...@@ -34,139 +33,237 @@ public class DownloadsResourceTest {
public static final String FILE_BY_ID_URL = DOWNLOADS_BASE_URL + "/file/{id}"; public static final String FILE_BY_ID_URL = DOWNLOADS_BASE_URL + "/file/{id}";
public static final String RELEASE_BASE_URL = DOWNLOADS_BASE_URL + "/releases"; public static final String RELEASE_BASE_URL = DOWNLOADS_BASE_URL + "/releases";
public static final String LEGACY_RELEASE_URL = DOWNLOADS_BASE_URL + "/release/{releaseType}"; public static final String LEGACY_RELEASE_URL = DOWNLOADS_BASE_URL + "/release/{releaseType}";
public static final String LEGACY_RELEASE_NAME_URL = LEGACY_RELEASE_URL + "?release_name={param}";
public static final String LEGACY_RELEASE_VERSION_URL = LEGACY_RELEASE_URL + "?release_version={param}";
public static final String LEGACY_RELEASE_NAME_VERSION_URL = LEGACY_RELEASE_URL
+ "?release_name={param1}&release_version={param2}";
public static final String RELEASES_URL = RELEASE_BASE_URL + "/{releaseType}/{releaseName}"; public static final String RELEASES_URL = RELEASE_BASE_URL + "/{releaseType}/{releaseName}";
public static final String RELEASE_VERSION_URL = RELEASES_URL + "/{releaseVersion}"; public static final String RELEASE_VERSION_URL = RELEASES_URL + "/{releaseVersion}";
@Inject /*
ObjectMapper json; * FILE BY ID
*/
public static final EndpointTestCase FILE_BY_ID_SUCCESS = TestCaseHelper.buildSuccessCase(FILE_BY_ID_URL,
new String[] { "1" }, SchemaNamespaceHelper.FILE_SCHEMA_PATH);
public static final EndpointTestCase FILE_BY_ID_NOT_FOUND = TestCaseHelper.buildNotFoundCase(FILE_BY_ID_URL,
new String[] { "99999" });
public static final EndpointTestCase FILE_BY_ID_INVALID_FORMAT = TestCaseHelper
.buildInvalidFormatCase(FILE_BY_ID_URL, new String[] { "1" }, ContentType.TEXT);
/*
* LEGACY RELEASE
*/
public static final EndpointTestCase LEGACY_RELEASE_SUCCESS_NAME = TestCaseHelper.buildSuccessCase(
LEGACY_RELEASE_NAME_URL, new String[] { "epp", "2021-12" },
SchemaNamespaceHelper.RELEASES_SCHEMA_PATH);
public static final EndpointTestCase LEGACY_RELEASE_SUCCESS_NAME_VERSION = TestCaseHelper.buildSuccessCase(
LEGACY_RELEASE_NAME_VERSION_URL, new String[] { "epp", "2021-12", "r" },
SchemaNamespaceHelper.RELEASE_SCHEMA_PATH);
public static final EndpointTestCase LEGACY_RELEASE_INVALID_TYPE = TestCaseHelper.buildBadRequestCase(
LEGACY_RELEASE_NAME_VERSION_URL, new String[] { "new", "2021-12", "r" });
public static final EndpointTestCase LEGACY_RELEASE_NO_NAME = TestCaseHelper.buildBadRequestCase(
LEGACY_RELEASE_URL, new String[] { "eclipse_packages" });
public static final EndpointTestCase LEGACY_RELEASE_NO_NAME_VERSION = TestCaseHelper.buildBadRequestCase(
LEGACY_RELEASE_VERSION_URL, new String[] { "eclipse_packages", "r" });
public static final EndpointTestCase LEGACY_RELEASE_NAME_NOT_FOUND = TestCaseHelper.buildNotFoundCase(
LEGACY_RELEASE_NAME_URL, new String[] { "eclipse_packages", "nitro" });
public static final EndpointTestCase LEGACY_RELEASE_VERSION_NOT_FOUND = TestCaseHelper.buildNotFoundCase(
LEGACY_RELEASE_NAME_VERSION_URL, new String[] { "eclipse_packages", "epp", "nitro" });
public static final EndpointTestCase LEGACY_RELEASE_INVALID_FORMAT = TestCaseHelper
.buildInvalidFormatCase(LEGACY_RELEASE_NAME_URL, new String[] { "epp", "2021-12" },
ContentType.TEXT);
/*
* GET RELEASES
*/
public static final EndpointTestCase GET_RELEASES_SUCCESS = TestCaseHelper.buildSuccessCase(RELEASES_URL,
new String[] { "epp", "2021-06" }, SchemaNamespaceHelper.RELEASES_SCHEMA_PATH);
public static final EndpointTestCase GET_RELEASES_NOT_FOUND = TestCaseHelper.buildNotFoundCase(RELEASES_URL,
new String[] { "epp", "nitro" });
public static final EndpointTestCase GET_RELEASES_INVALID_TYPE = TestCaseHelper.buildBadRequestCase(
RELEASES_URL, new String[] { "new", "2021-06" });
public static final EndpointTestCase GET_RELEASES_INVALID_FORMAT = TestCaseHelper
.buildInvalidFormatCase(RELEASES_URL, new String[] { "epp", "2021-06" }, ContentType.TEXT);
/*
* GET RELEASE VERSION
*/
public static final EndpointTestCase GET_RELEASE_VERSION_SUCCESS = TestCaseHelper.buildSuccessCase(
RELEASE_VERSION_URL, new String[] { "eclipse_packages", "2021-06", "r" }, SchemaNamespaceHelper.RELEASE_SCHEMA_PATH);
public static final EndpointTestCase GET_RELEASE_VERSION_NOT_FOUND_NAME = TestCaseHelper.buildNotFoundCase(
RELEASE_VERSION_URL, new String[] { "eclipse_packages", "nitro", "m1" });
public static final EndpointTestCase GET_RELEASE_VERSION_NOT_FOUND_VERSION = TestCaseHelper.buildNotFoundCase(
RELEASE_VERSION_URL, new String[] { "epp", "2020-03", "version1" });
public static final EndpointTestCase GET_RELEASE_VERSION_INVALID_TYPE = TestCaseHelper.buildBadRequestCase(
RELEASE_VERSION_URL, new String[] { "new", "2021-06", "r" });
public static final EndpointTestCase GET_RELEASE_VERSION_INVALID_FORMAT = TestCaseHelper
.buildInvalidFormatCase(RELEASE_VERSION_URL, new String[] { "epp", "2021-06", "m1" }, ContentType.TEXT);
/*
* FILE BY ID
*/
@Test @Test
void getFileByID_missingFile() { void getFileByID_success() {
given().when().get(FILE_BY_ID_URL, "99999").then().statusCode(404); RestAssuredTemplates.testGet(FILE_BY_ID_SUCCESS);
} }
@Test @Test
void getFileByID_success() { void getFileByID_success_validSchema() {
given().when().get(FILE_BY_ID_URL, "1").then().statusCode(200); RestAssuredTemplates.testGet_validateSchema(FILE_BY_ID_SUCCESS);
} }
@Test @Test
void getFileByID_success_format() { void getFileByID_success_validResponseFormat() {
given().when().get(FILE_BY_ID_URL, "1").then().assertThat() RestAssuredTemplates.testGet_validateResponseFormat(FILE_BY_ID_SUCCESS);
.body(matchesJsonSchemaInClasspath(SchemaNamespaceHelper.FILE_SCHEMA_PATH));
} }
@Test @Test
void getReleaseLegacy_missingReleaseName() { void getFileByID_failure_notFound() {
given().when().get(LEGACY_RELEASE_URL, "epp").then().statusCode(400); RestAssuredTemplates.testGet(FILE_BY_ID_NOT_FOUND);
given().when().get(LEGACY_RELEASE_URL, "eclipse_packages").then().statusCode(400);
given().when().queryParam(DownloadsUrlParameterNames.RELEASE_VERSION_VALUE, "r").get(LEGACY_RELEASE_URL, "epp")
.then().statusCode(400);
given().when().queryParam(DownloadsUrlParameterNames.RELEASE_VERSION_VALUE, "r")
.get(LEGACY_RELEASE_URL, "eclipse_packages").then().statusCode(400);
} }
@Test
void getFileByID_failure_invalidRequestFormat() {
RestAssuredTemplates.testGet(FILE_BY_ID_INVALID_FORMAT);
}
//TODO: Add test for error format
/*
* LEGACY RELEASE
*/
@Test @Test
void getReleaseLegacy_success() { void getReleaseLegacy_success() {
given().when().queryParam(DownloadsUrlParameterNames.RELEASE_NAME_VALUE, "2021-12") RestAssuredTemplates.testGet(LEGACY_RELEASE_SUCCESS_NAME);
.get(LEGACY_RELEASE_URL, "epp").then().statusCode(200); RestAssuredTemplates.testGet(LEGACY_RELEASE_SUCCESS_NAME_VERSION);
given().when().queryParam(DownloadsUrlParameterNames.RELEASE_NAME_VALUE, "2021-12")
.get(LEGACY_RELEASE_URL, "eclipse_packages").then().statusCode(200);
given().when().queryParam(DownloadsUrlParameterNames.RELEASE_NAME_VALUE, "2021-12")
.queryParam(DownloadsUrlParameterNames.RELEASE_VERSION_VALUE, "r").get(LEGACY_RELEASE_URL, "epp").then()
.statusCode(200);
given().when().queryParam(DownloadsUrlParameterNames.RELEASE_NAME_VALUE, "2021-12")
.queryParam(DownloadsUrlParameterNames.RELEASE_VERSION_VALUE, "r")
.get(LEGACY_RELEASE_URL, "eclipse_packages").then().statusCode(200);
} }
@Test @Test
void getReleaseLegacy_invalidReleaseType() { void getReleaseLegacy_success_validSchema() {
given().when().queryParam(DownloadsUrlParameterNames.RELEASE_NAME_VALUE, "2021-12") RestAssuredTemplates.testGet_validateSchema(LEGACY_RELEASE_SUCCESS_NAME);
.get(LEGACY_RELEASE_URL, "new").then().statusCode(400); RestAssuredTemplates.testGet_validateSchema(LEGACY_RELEASE_SUCCESS_NAME_VERSION);
} }
@Test @Test
void getReleaseLegacy_error_format() { void getReleaseLegacy_success_validResponseFormat() {
given().when().queryParam(DownloadsUrlParameterNames.RELEASE_NAME_VALUE, "2021-12") RestAssuredTemplates.testGet_validateResponseFormat(LEGACY_RELEASE_SUCCESS_NAME);
.get(LEGACY_RELEASE_URL, "wrong").then().assertThat() RestAssuredTemplates.testGet_validateResponseFormat(LEGACY_RELEASE_SUCCESS_NAME_VERSION);
.body(matchesJsonSchemaInClasspath(SchemaNamespaceHelper.ERROR_SCHEMA_PATH));
} }
@Test @Test
void getReleaseLegacy_success_format() { void getReleaseLegacy_failure_missingReleaseName() {
given().when().queryParam(DownloadsUrlParameterNames.RELEASE_NAME_VALUE, "2021-12") RestAssuredTemplates.testGet(LEGACY_RELEASE_NO_NAME);
.get(LEGACY_RELEASE_URL, "epp").then().assertThat() RestAssuredTemplates.testGet(LEGACY_RELEASE_NO_NAME_VERSION);
.body(matchesJsonSchemaInClasspath(SchemaNamespaceHelper.RELEASES_SCHEMA_PATH));
} }
@Test @Test
void getReleaseLegacyWithVersion_success_format() { void getReleaseLegacy_failure_invalidReleaseType() {
given().when().queryParam(DownloadsUrlParameterNames.RELEASE_NAME_VALUE, "2021-12") RestAssuredTemplates.testGet(LEGACY_RELEASE_INVALID_TYPE);
.queryParam(DownloadsUrlParameterNames.RELEASE_VERSION_VALUE, "r").get(LEGACY_RELEASE_URL, "epp").then()
.assertThat().body(matchesJsonSchemaInClasspath(SchemaNamespaceHelper.RELEASE_SCHEMA_PATH));
} }
@Test @Test
void getRelease_missingRelease() { void getReleaseLEgacy_failure_nameNotFound() {
given().when().get(RELEASES_URL, "epp", "missing-version").then().statusCode(404); RestAssuredTemplates.testGet(LEGACY_RELEASE_NAME_NOT_FOUND);
} }
@Test
void getReleaseLEgacy_failure_versionNotFound() {
RestAssuredTemplates.testGet(LEGACY_RELEASE_VERSION_NOT_FOUND);
}
@Test
void getReleaseLegacy_failure_invalidRequestFormat() {
RestAssuredTemplates.testGet(LEGACY_RELEASE_INVALID_FORMAT);
}
// TODO: Add test for error format
/*
* GET RELEASE
*/
@Test @Test
void getRelease_success() { void getRelease_success() {
given().when().get(RELEASES_URL, "epp", "2021-12").then().statusCode(200); RestAssuredTemplates.testGet(GET_RELEASES_SUCCESS);
} }
@Test @Test
void getRelease_invalidReleaseType() { void getRelease_success_validSchema() {
given().when().get(RELEASES_URL, "old", "2021-12").then().statusCode(400); RestAssuredTemplates.testGet_validateSchema(GET_RELEASES_SUCCESS);
} }
@Test @Test
void getRelease_error_format() { void getRelease_success_validResponseFormat() {
given().when().get(RELEASES_URL, "old", "2021-12").then().assertThat() RestAssuredTemplates.testGet_validateResponseFormat(GET_RELEASES_SUCCESS);
.body(matchesJsonSchemaInClasspath(SchemaNamespaceHelper.ERROR_SCHEMA_PATH));
} }
@Test @Test
void getRelease_success_format() { void getRelease_failure_notFound() {
given().when().get(RELEASES_URL, "eclipse_packages", RestAssuredTemplates.testGet(GET_RELEASES_NOT_FOUND);
"2021-12").then().assertThat()
.body(matchesJsonSchemaInClasspath(SchemaNamespaceHelper.RELEASES_SCHEMA_PATH));
} }
@Test @Test
void getReleaseVersion_missingRelease() { void getRelease_failure_invalidReleaseType() {
given().when().get(RELEASE_VERSION_URL, "epp", "missing-version", "r").then().statusCode(404); RestAssuredTemplates.testGet(GET_RELEASES_INVALID_TYPE);
} }
@Test @Test
void getReleaseVersion_missingVersion() { void getRelease_failure_invalidRequestFormat() {
given().when().get(RELEASE_VERSION_URL, "epp", "2021-12", "some-release").then().statusCode(404); RestAssuredTemplates.testGet(GET_RELEASES_INVALID_FORMAT);
} }
// TODO: Add test for error format
/*
* GET RELEASE VERSION
*/
@Test @Test
void getReleaseVersion_success() { void getReleaseVersion_success() {
given().when().get(RELEASE_VERSION_URL, "eclipse_packages", "2021-12", "r").then().statusCode(200); RestAssuredTemplates.testGet(GET_RELEASE_VERSION_SUCCESS);
}
@Test
void getReleaseVersion_success_validSchema() {
RestAssuredTemplates.testGet_validateSchema(GET_RELEASE_VERSION_SUCCESS);
} }
@Test @Test
void getReleaseVersion_invalidreleaseType() { void getReleaseVersion_success_validResponseFormat() {
given().when().get(RELEASE_VERSION_URL, "eclipse_packs", "2021-12", "r").then().statusCode(400); RestAssuredTemplates.testGet_validateResponseFormat(GET_RELEASE_VERSION_SUCCESS);
} }
@Test @Test
void getReleaseVersion_error_format() { void getReleaseVersion_failure_nameNotFound() {
given().when().get( RestAssuredTemplates.testGet(GET_RELEASE_VERSION_NOT_FOUND_NAME);
RELEASE_VERSION_URL, "old", "2021-12", "r").then().assertThat()
.body(matchesJsonSchemaInClasspath(SchemaNamespaceHelper.ERROR_SCHEMA_PATH));
} }
@Test @Test
void getReleaseVersion_success_format() { void getReleaseVersion_failure_versionNotFound() {
given().when().get(RELEASE_VERSION_URL, "eclipse_packages", RestAssuredTemplates.testGet(GET_RELEASE_VERSION_NOT_FOUND_VERSION);
"2021-12", "r").then().assertThat() }
.body(matchesJsonSchemaInClasspath(SchemaNamespaceHelper.RELEASE_SCHEMA_PATH));
@Test
void getReleaseVersion_failure_invalidReleaseType() {
RestAssuredTemplates.testGet(GET_RELEASE_VERSION_INVALID_TYPE);
}
void getReleaseVersion_failure_invalidRequestFormat() {
RestAssuredTemplates.testGet(GET_RELEASE_VERSION_INVALID_FORMAT);
} }
// TODO: Add test for error format
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment