From 2a63f8864893e00824eb39ba03b93c45a479c508 Mon Sep 17 00:00:00 2001 From: ok Date: Wed, 4 Feb 2026 17:31:59 -0600 Subject: [PATCH 1/4] - create MultibranchPipelineTest - update MultiConfigurationProjectTest - create enum ProjectType - move CRUD methods to TestUtils --- .../api/MultiConfigurationProjectTest.java | 86 ++++++++++++----- .../redrover/api/MultibranchPipelineTest.java | 43 +++++++++ .../school/redrover/common/APIBaseTest.java | 92 +++++++++---------- .../school/redrover/common/ProjectType.java | 21 +++++ .../school/redrover/common/TestUtils.java | 70 ++++++++++++++ 5 files changed, 241 insertions(+), 71 deletions(-) create mode 100644 src/test/java/school/redrover/api/MultibranchPipelineTest.java create mode 100644 src/test/java/school/redrover/common/ProjectType.java diff --git a/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java b/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java index 3211c7e60..2059fa9f3 100644 --- a/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java +++ b/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java @@ -4,10 +4,14 @@ import org.testng.Assert; import org.testng.annotations.Test; import school.redrover.common.APIBaseTest; +import school.redrover.common.ProjectType; + +import static school.redrover.common.TestUtils.*; public class MultiConfigurationProjectTest extends APIBaseTest { private static final String PROJECT_NAME = "MultiConfigProject"; + private static final String PROJECT_NEW_NAME = "MultiConfigProjectRenamed"; private static final String bodyXML = """ @@ -30,44 +34,76 @@ public class MultiConfigurationProjectTest extends APIBaseTest { """; +// @Test +// public void testCreateProject() { +// Response createdResponse = createProject(PROJECT_NAME, bodyXML); +// Assert.assertEquals(createdResponse.statusCode(), 200); +// +// Response getProjectResponse = getProject(PROJECT_NAME); +// Assert.assertEquals(getProjectResponse.statusCode(), 200); +// +// String actualProjectName = getProjectResponse.jsonPath().getString("name"); +// Assert.assertEquals(actualProjectName, PROJECT_NAME); +// } + @Test public void testCreateProject() { - Response createdResponse = createProject(PROJECT_NAME, bodyXML); - Assert.assertEquals(createdResponse.statusCode(), 200); + createProjectWithXML(PROJECT_NAME, bodyXML); - Response getProjectResponse = getProject(PROJECT_NAME); - Assert.assertEquals(getProjectResponse.statusCode(), 200); - - String actualProjectName = getProjectResponse.jsonPath().getString("name"); - Assert.assertEquals(actualProjectName, PROJECT_NAME); + Response afterCreateResponse = getProject(PROJECT_NAME); + Assert.assertEquals(afterCreateResponse.statusCode(), 200); + Assert.assertEquals(afterCreateResponse.jsonPath().getString("name"), PROJECT_NAME); } +// @Test() +// public void testDeleteProject() { +// createProject(PROJECT_NAME, bodyXML); +// String createdProjectName = getProject(PROJECT_NAME) +// .jsonPath().getString("name"); +// +// Response deletedResponse = deleteProject(createdProjectName); +// Assert.assertEquals(deletedResponse.statusCode(), 302); +// +// Integer deletedProjectStatusCode = getProject(createdProjectName).statusCode(); +// Assert.assertEquals(deletedProjectStatusCode, 404, "Not found"); +// } + @Test() public void testDeleteProject() { - createProject(PROJECT_NAME, bodyXML); - String createdProjectName = getProject(PROJECT_NAME) - .jsonPath().getString("name"); + createProjectWithXML(PROJECT_NAME, bodyXML); + String createdProjectName = getProject(PROJECT_NAME).jsonPath().getString("name"); - Response deletedResponse = deleteProject(createdProjectName); - Assert.assertEquals(deletedResponse.statusCode(), 302); - - Integer deletedProjectStatusCode = getProject(createdProjectName).statusCode(); - Assert.assertEquals(deletedProjectStatusCode, 404, "Not found"); + deleteProject(createdProjectName); + Response afterDeletedResponse = getProject(createdProjectName); + Assert.assertEquals(afterDeletedResponse.statusCode(), 404, "Not found"); } + +// @Test() +// public void testRenameProject() { +// String newProjectName = "MultiConfig"; +// +// createProject(PROJECT_NAME, bodyXML); +// String createdProjectName = getProject(PROJECT_NAME) +// .jsonPath().getString("name"); +// +// Response renamedResponse = renameProject(createdProjectName, newProjectName); +// Assert.assertEquals(renamedResponse.statusCode(), 302); +// +// String actualProjectName = getProject(newProjectName) +// .jsonPath().getString("name"); +// Assert.assertEquals(actualProjectName, newProjectName); +// } + @Test() public void testRenameProject() { - String newProjectName = "MultiConfig"; - - createProject(PROJECT_NAME, bodyXML); - String createdProjectName = getProject(PROJECT_NAME) - .jsonPath().getString("name"); + createProjectWithXML(PROJECT_NAME, bodyXML); + String createdProjectName = getProject(PROJECT_NAME).jsonPath().getString("name"); - Response renamedResponse = renameProject(createdProjectName, newProjectName); - Assert.assertEquals(renamedResponse.statusCode(), 302); + renameProject(createdProjectName, PROJECT_NEW_NAME); - String actualProjectName = getProject(newProjectName) - .jsonPath().getString("name"); - Assert.assertEquals(actualProjectName, newProjectName); + Response afterRenameResponse = getProject(PROJECT_NEW_NAME); + Assert.assertEquals(afterRenameResponse.statusCode(), 200); + Assert.assertEquals(afterRenameResponse.jsonPath().getString("name"), PROJECT_NEW_NAME); } } diff --git a/src/test/java/school/redrover/api/MultibranchPipelineTest.java b/src/test/java/school/redrover/api/MultibranchPipelineTest.java new file mode 100644 index 000000000..b8c754ad1 --- /dev/null +++ b/src/test/java/school/redrover/api/MultibranchPipelineTest.java @@ -0,0 +1,43 @@ +package school.redrover.api; +import io.restassured.response.Response; +import org.testng.Assert; +import org.testng.annotations.Test; +import school.redrover.common.APIBaseTest; +import school.redrover.common.ProjectType; + +import static school.redrover.common.TestUtils.*; + +public class MultibranchPipelineTest extends APIBaseTest { + + private static final String PROJECT_NAME = "MultibranchPipeline"; + private static final String PROJECT_NEW_NAME = "MultibranchPipelineRenamed"; + + @Test + public void testMultibranchCRUD() { + + // CREATE + Response response = createProject(PROJECT_NAME, ProjectType.MULTIBRANCH_PIPELINE); + Assert.assertTrue(response.getHeader("Location").contains("/configure")); + + // READ (check that it is created) + Response afterCreate = getProject(PROJECT_NAME); + Assert.assertEquals(afterCreate.statusCode(), 200); + Assert.assertEquals(afterCreate.jsonPath().getString("name"), PROJECT_NAME); + + // UPDATE (rename) + renameProject(PROJECT_NAME, PROJECT_NEW_NAME); + + Response afterRename = getProject(PROJECT_NEW_NAME); + Assert.assertEquals(afterRename.statusCode(), 200); + Assert.assertEquals(afterRename.jsonPath().getString("name"), PROJECT_NEW_NAME); + + // DELETE + deleteProject(PROJECT_NEW_NAME); + + // READ (check that it is deleted) + Response afterDelete = getProject(PROJECT_NEW_NAME); + Assert.assertEquals(afterDelete.statusCode(), 404, "Not found"); + } +} + + diff --git a/src/test/java/school/redrover/common/APIBaseTest.java b/src/test/java/school/redrover/common/APIBaseTest.java index c3c370636..cdf1248d7 100644 --- a/src/test/java/school/redrover/common/APIBaseTest.java +++ b/src/test/java/school/redrover/common/APIBaseTest.java @@ -43,50 +43,50 @@ protected void tearDownApi() { JenkinsUtils.deleteApiTokenByUuid(jenkinsUrl, tokenUuid, apiToken); } - public Response createProject(String name, String bodyXML) { - Map projectName = new HashMap<>(); - projectName.put("name", name); - - return RestAssured.given() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) - .contentType(ContentType.XML) - .queryParams(projectName) - .body(bodyXML) - .when() - .post("/createItem") - .then() - .extract().response(); - } - - public Response getProject(String projectName) { - return RestAssured.given() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) - .when() - .get("/job/%s/api/json".formatted(projectName)) - .then() - .extract().response(); - } - - public Response deleteProject(String projectName) { - return RestAssured.given() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) - .when() - .post("/job/%s/doDelete".formatted(projectName)) - .then() - .extract().response(); - } - - public Response renameProject(String projectName, String newProjectName) { - return RestAssured.given() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) - .queryParams("newName", newProjectName) - .when() - .post("/job/%s/confirmRename".formatted(projectName)) - .then() - .extract().response(); - } +// public Response createProject(String name, String bodyXML) { +// Map projectName = new HashMap<>(); +// projectName.put("name", name); +// +// return RestAssured.given() +// .auth().preemptive().basic(userName, apiToken) +// .baseUri(jenkinsUrl) +// .contentType(ContentType.XML) +// .queryParams(projectName) +// .body(bodyXML) +// .when() +// .post("/createItem") +// .then() +// .extract().response(); +// } +// +// public Response getProject(String projectName) { +// return RestAssured.given() +// .auth().preemptive().basic(userName, apiToken) +// .baseUri(jenkinsUrl) +// .when() +// .get("/job/%s/api/json".formatted(projectName)) +// .then() +// .extract().response(); +// } +// +// public Response deleteProject(String projectName) { +// return RestAssured.given() +// .auth().preemptive().basic(userName, apiToken) +// .baseUri(jenkinsUrl) +// .when() +// .post("/job/%s/doDelete".formatted(projectName)) +// .then() +// .extract().response(); +// } +// +// public Response renameProject(String projectName, String newProjectName) { +// return RestAssured.given() +// .auth().preemptive().basic(userName, apiToken) +// .baseUri(jenkinsUrl) +// .queryParams("newName", newProjectName) +// .when() +// .post("/job/%s/confirmRename".formatted(projectName)) +// .then() +// .extract().response(); +// } } \ No newline at end of file diff --git a/src/test/java/school/redrover/common/ProjectType.java b/src/test/java/school/redrover/common/ProjectType.java new file mode 100644 index 000000000..4ea037af2 --- /dev/null +++ b/src/test/java/school/redrover/common/ProjectType.java @@ -0,0 +1,21 @@ +package school.redrover.common; + +public enum ProjectType { + + FREESTYLE_PROJECT("hudson.model.FreeStyleProject"), + PIPELINE("org.jenkinsci.plugins.workflow.job.WorkflowJob"), + MULTIBRANCH_PIPELINE("org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject"), + FOLDER("com.cloudbees.hudson.plugins.folder.Folder"), + ORGANIZATION_FOLDER("jenkins.branch.OrganizationFolder"), + MULTI_CONFIGURATION_PROJECT("hudson.matrix.MatrixProject"); + + private final String mode; + + ProjectType(String mode) { + this.mode = mode; + } + + public String mode() { + return mode; + } +} diff --git a/src/test/java/school/redrover/common/TestUtils.java b/src/test/java/school/redrover/common/TestUtils.java index eb6fb1a6a..37f4dc0c9 100644 --- a/src/test/java/school/redrover/common/TestUtils.java +++ b/src/test/java/school/redrover/common/TestUtils.java @@ -1,8 +1,11 @@ package school.redrover.common; +import io.restassured.RestAssured; import io.restassured.builder.RequestSpecBuilder; import io.restassured.builder.ResponseSpecBuilder; import io.restassured.filter.log.LogDetail; +import io.restassured.http.ContentType; +import io.restassured.response.Response; import io.restassured.specification.RequestSpecification; import io.restassured.specification.ResponseSpecification; @@ -33,4 +36,71 @@ public static ResponseSpecification responseSpec() { .build(); } + public static Response createProject(String projectName, ProjectType projectType) { + return RestAssured.given() + .spec(requestSpec()) + .contentType(ContentType.URLENC) + .queryParam("name", projectName) + .formParam("mode", projectType.mode()) + .when() + .post("/createItem") + .then() + .spec(responseSpec(302, 1500L)) + .extract().response(); + } + + public static Response createProjectWithXML(String projectName, String bodyXML) { + return RestAssured.given() + .spec(requestSpec()) + .contentType(ContentType.XML) + .queryParams("name", projectName) + .body(bodyXML) + .when() + .post("/createItem") + .then() + .spec(responseSpec(200, 1500L)) + .extract().response(); + } + + public static Response updateProjectWithXML(String projectName, String bodyXML) { + return RestAssured.given() + .spec(requestSpec()) + .contentType(ContentType.XML) + .body(bodyXML) + .when() + .post("/job/%s/config.xml".formatted(projectName)) + .then() + .spec(responseSpec(200, 1500L)) + .extract().response(); + } + + public static Response getProject(String projectName) { + return RestAssured.given() + .spec(requestSpec()) + .when() + .get("job/%s/api/json".formatted(projectName)) + .then() + .extract().response(); + } + + public static Response renameProject(String projectName, String newProjectName) { + return RestAssured.given() + .spec(requestSpec()) + .queryParam("newName", newProjectName) + .when() + .post("job/%s/confirmRename".formatted(projectName)) + .then() + .spec(responseSpec(302, 1500L)) + .extract().response(); + } + + public static Response deleteProject(String projectName) { + return RestAssured.given() + .spec(requestSpec()) + .when() + .post("/job/%s/doDelete".formatted(projectName)) + .then() + .spec(responseSpec(302, 1500L)) + .extract().response(); + } } From 0cf2708f6ba2c431a9e767b7518a39774e2df3a4 Mon Sep 17 00:00:00 2001 From: ok Date: Thu, 5 Feb 2026 10:33:00 -0600 Subject: [PATCH 2/4] - create MultibranchPipelineTest - update MultiConfigurationProjectTest - create enum ProjectType - move CRUD methods to TestUtils --- .../api/MultiConfigurationProjectTest.java | 56 +------ .../redrover/api/MultibranchPipelineTest.java | 17 +-- .../api/endpoints/ProjectEndpoints.java | 82 +++++++++++ .../endpoints}/ProjectType.java | 2 +- .../school/redrover/common/APIBaseTest.java | 52 +------ .../school/redrover/common/TestUtils.java | 138 +++++++++--------- 6 files changed, 165 insertions(+), 182 deletions(-) create mode 100644 src/test/java/school/redrover/api/endpoints/ProjectEndpoints.java rename src/test/java/school/redrover/{common => api/endpoints}/ProjectType.java (93%) diff --git a/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java b/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java index 2059fa9f3..fa3db15fe 100644 --- a/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java +++ b/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java @@ -4,9 +4,8 @@ import org.testng.Assert; import org.testng.annotations.Test; import school.redrover.common.APIBaseTest; -import school.redrover.common.ProjectType; -import static school.redrover.common.TestUtils.*; +import static school.redrover.api.endpoints.ProjectEndpoints.*; public class MultiConfigurationProjectTest extends APIBaseTest { @@ -34,75 +33,34 @@ public class MultiConfigurationProjectTest extends APIBaseTest { """; -// @Test -// public void testCreateProject() { -// Response createdResponse = createProject(PROJECT_NAME, bodyXML); -// Assert.assertEquals(createdResponse.statusCode(), 200); -// -// Response getProjectResponse = getProject(PROJECT_NAME); -// Assert.assertEquals(getProjectResponse.statusCode(), 200); -// -// String actualProjectName = getProjectResponse.jsonPath().getString("name"); -// Assert.assertEquals(actualProjectName, PROJECT_NAME); -// } - @Test public void testCreateProject() { createProjectWithXML(PROJECT_NAME, bodyXML); - Response afterCreateResponse = getProject(PROJECT_NAME); + Response afterCreateResponse = getProjectByName(PROJECT_NAME); Assert.assertEquals(afterCreateResponse.statusCode(), 200); Assert.assertEquals(afterCreateResponse.jsonPath().getString("name"), PROJECT_NAME); } -// @Test() -// public void testDeleteProject() { -// createProject(PROJECT_NAME, bodyXML); -// String createdProjectName = getProject(PROJECT_NAME) -// .jsonPath().getString("name"); -// -// Response deletedResponse = deleteProject(createdProjectName); -// Assert.assertEquals(deletedResponse.statusCode(), 302); -// -// Integer deletedProjectStatusCode = getProject(createdProjectName).statusCode(); -// Assert.assertEquals(deletedProjectStatusCode, 404, "Not found"); -// } - @Test() public void testDeleteProject() { createProjectWithXML(PROJECT_NAME, bodyXML); - String createdProjectName = getProject(PROJECT_NAME).jsonPath().getString("name"); + String createdProjectName = getProjectByName(PROJECT_NAME).jsonPath().getString("name"); deleteProject(createdProjectName); - Response afterDeletedResponse = getProject(createdProjectName); + + Response afterDeletedResponse = getProjectByName(createdProjectName); Assert.assertEquals(afterDeletedResponse.statusCode(), 404, "Not found"); } - -// @Test() -// public void testRenameProject() { -// String newProjectName = "MultiConfig"; -// -// createProject(PROJECT_NAME, bodyXML); -// String createdProjectName = getProject(PROJECT_NAME) -// .jsonPath().getString("name"); -// -// Response renamedResponse = renameProject(createdProjectName, newProjectName); -// Assert.assertEquals(renamedResponse.statusCode(), 302); -// -// String actualProjectName = getProject(newProjectName) -// .jsonPath().getString("name"); -// Assert.assertEquals(actualProjectName, newProjectName); -// } - @Test() public void testRenameProject() { createProjectWithXML(PROJECT_NAME, bodyXML); - String createdProjectName = getProject(PROJECT_NAME).jsonPath().getString("name"); + String createdProjectName = getProjectByName(PROJECT_NAME).jsonPath().getString("name"); renameProject(createdProjectName, PROJECT_NEW_NAME); - Response afterRenameResponse = getProject(PROJECT_NEW_NAME); + Response afterRenameResponse = getProjectByName(PROJECT_NEW_NAME); Assert.assertEquals(afterRenameResponse.statusCode(), 200); Assert.assertEquals(afterRenameResponse.jsonPath().getString("name"), PROJECT_NEW_NAME); } diff --git a/src/test/java/school/redrover/api/MultibranchPipelineTest.java b/src/test/java/school/redrover/api/MultibranchPipelineTest.java index b8c754ad1..ba7033454 100644 --- a/src/test/java/school/redrover/api/MultibranchPipelineTest.java +++ b/src/test/java/school/redrover/api/MultibranchPipelineTest.java @@ -3,9 +3,9 @@ import org.testng.Assert; import org.testng.annotations.Test; import school.redrover.common.APIBaseTest; -import school.redrover.common.ProjectType; +import school.redrover.api.endpoints.ProjectType; -import static school.redrover.common.TestUtils.*; +import static school.redrover.api.endpoints.ProjectEndpoints.*; public class MultibranchPipelineTest extends APIBaseTest { @@ -13,29 +13,24 @@ public class MultibranchPipelineTest extends APIBaseTest { private static final String PROJECT_NEW_NAME = "MultibranchPipelineRenamed"; @Test - public void testMultibranchCRUD() { + public void testMultibranchPipelineCRUD() { - // CREATE Response response = createProject(PROJECT_NAME, ProjectType.MULTIBRANCH_PIPELINE); Assert.assertTrue(response.getHeader("Location").contains("/configure")); - // READ (check that it is created) - Response afterCreate = getProject(PROJECT_NAME); + Response afterCreate = getProjectByName(PROJECT_NAME); Assert.assertEquals(afterCreate.statusCode(), 200); Assert.assertEquals(afterCreate.jsonPath().getString("name"), PROJECT_NAME); - // UPDATE (rename) renameProject(PROJECT_NAME, PROJECT_NEW_NAME); - Response afterRename = getProject(PROJECT_NEW_NAME); + Response afterRename = getProjectByName(PROJECT_NEW_NAME); Assert.assertEquals(afterRename.statusCode(), 200); Assert.assertEquals(afterRename.jsonPath().getString("name"), PROJECT_NEW_NAME); - // DELETE deleteProject(PROJECT_NEW_NAME); - // READ (check that it is deleted) - Response afterDelete = getProject(PROJECT_NEW_NAME); + Response afterDelete = getProjectByName(PROJECT_NEW_NAME); Assert.assertEquals(afterDelete.statusCode(), 404, "Not found"); } } diff --git a/src/test/java/school/redrover/api/endpoints/ProjectEndpoints.java b/src/test/java/school/redrover/api/endpoints/ProjectEndpoints.java new file mode 100644 index 000000000..deabf6094 --- /dev/null +++ b/src/test/java/school/redrover/api/endpoints/ProjectEndpoints.java @@ -0,0 +1,82 @@ +package school.redrover.api.endpoints; + +import io.restassured.RestAssured; + +import io.restassured.http.ContentType; +import io.restassured.response.Response; + +import static school.redrover.common.TestUtils.requestSpec; +import static school.redrover.common.TestUtils.responseSpec; + +public class ProjectEndpoints { + + + public static Response createProject(String projectName, ProjectType projectType) { + return RestAssured.given() + .spec(requestSpec()) + .contentType(ContentType.URLENC) + .queryParam("name", projectName) + .formParam("mode", projectType.mode()) + .when() + .post("/createItem") + .then() + .spec(responseSpec()) + .extract().response(); + } + + public static Response createProjectWithXML(String projectName, String bodyXML) { + return RestAssured.given() + .spec(requestSpec()) + .contentType(ContentType.XML) + .queryParams("name", projectName) + .body(bodyXML) + .when() + .post("/createItem") + .then() + .spec(responseSpec()) + .extract().response(); + } + + public static Response updateProjectWithXML(String projectName, String bodyXML) { + return RestAssured.given() + .spec(requestSpec()) + .contentType(ContentType.XML) + .body(bodyXML) + .when() + .post("/job/%s/config.xml".formatted(projectName)) + .then() + .spec(responseSpec(200, 1500L)) + .extract().response(); + } + + public static Response getProjectByName(String projectName) { + return RestAssured.given() + .spec(requestSpec()) + .when() + .get("job/%s/api/json".formatted(projectName)) + .then() + .extract().response(); + } + + public static Response renameProject(String projectName, String newProjectName) { + return RestAssured.given() + .spec(requestSpec()) + .queryParam("newName", newProjectName) + .when() + .post("job/%s/confirmRename".formatted(projectName)) + .then() + .spec(responseSpec(302, 1500L)) + .extract().response(); + } + + public static Response deleteProject(String projectName) { + return RestAssured.given() + .spec(requestSpec()) + .when() + .post("/job/%s/doDelete".formatted(projectName)) + .then() + .spec(responseSpec(302, 1500L)) + .extract().response(); + } +} + diff --git a/src/test/java/school/redrover/common/ProjectType.java b/src/test/java/school/redrover/api/endpoints/ProjectType.java similarity index 93% rename from src/test/java/school/redrover/common/ProjectType.java rename to src/test/java/school/redrover/api/endpoints/ProjectType.java index 4ea037af2..530e43372 100644 --- a/src/test/java/school/redrover/common/ProjectType.java +++ b/src/test/java/school/redrover/api/endpoints/ProjectType.java @@ -1,4 +1,4 @@ -package school.redrover.common; +package school.redrover.api.endpoints; public enum ProjectType { diff --git a/src/test/java/school/redrover/common/APIBaseTest.java b/src/test/java/school/redrover/common/APIBaseTest.java index cdf1248d7..2c7c10928 100644 --- a/src/test/java/school/redrover/common/APIBaseTest.java +++ b/src/test/java/school/redrover/common/APIBaseTest.java @@ -1,8 +1,6 @@ package school.redrover.common; import io.restassured.RestAssured; -import io.restassured.http.ContentType; -import io.restassured.response.Response; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; @@ -10,8 +8,7 @@ import school.redrover.common.logging.RestAssuredLogFilter; import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; + public abstract class APIBaseTest { @@ -42,51 +39,4 @@ protected void tearDownApi() { Log.info("Delete API token"); JenkinsUtils.deleteApiTokenByUuid(jenkinsUrl, tokenUuid, apiToken); } - -// public Response createProject(String name, String bodyXML) { -// Map projectName = new HashMap<>(); -// projectName.put("name", name); -// -// return RestAssured.given() -// .auth().preemptive().basic(userName, apiToken) -// .baseUri(jenkinsUrl) -// .contentType(ContentType.XML) -// .queryParams(projectName) -// .body(bodyXML) -// .when() -// .post("/createItem") -// .then() -// .extract().response(); -// } -// -// public Response getProject(String projectName) { -// return RestAssured.given() -// .auth().preemptive().basic(userName, apiToken) -// .baseUri(jenkinsUrl) -// .when() -// .get("/job/%s/api/json".formatted(projectName)) -// .then() -// .extract().response(); -// } -// -// public Response deleteProject(String projectName) { -// return RestAssured.given() -// .auth().preemptive().basic(userName, apiToken) -// .baseUri(jenkinsUrl) -// .when() -// .post("/job/%s/doDelete".formatted(projectName)) -// .then() -// .extract().response(); -// } -// -// public Response renameProject(String projectName, String newProjectName) { -// return RestAssured.given() -// .auth().preemptive().basic(userName, apiToken) -// .baseUri(jenkinsUrl) -// .queryParams("newName", newProjectName) -// .when() -// .post("/job/%s/confirmRename".formatted(projectName)) -// .then() -// .extract().response(); -// } } \ No newline at end of file diff --git a/src/test/java/school/redrover/common/TestUtils.java b/src/test/java/school/redrover/common/TestUtils.java index 37f4dc0c9..00b4b5408 100644 --- a/src/test/java/school/redrover/common/TestUtils.java +++ b/src/test/java/school/redrover/common/TestUtils.java @@ -1,11 +1,8 @@ package school.redrover.common; -import io.restassured.RestAssured; import io.restassured.builder.RequestSpecBuilder; import io.restassured.builder.ResponseSpecBuilder; import io.restassured.filter.log.LogDetail; -import io.restassured.http.ContentType; -import io.restassured.response.Response; import io.restassured.specification.RequestSpecification; import io.restassured.specification.ResponseSpecification; @@ -36,71 +33,72 @@ public static ResponseSpecification responseSpec() { .build(); } - public static Response createProject(String projectName, ProjectType projectType) { - return RestAssured.given() - .spec(requestSpec()) - .contentType(ContentType.URLENC) - .queryParam("name", projectName) - .formParam("mode", projectType.mode()) - .when() - .post("/createItem") - .then() - .spec(responseSpec(302, 1500L)) - .extract().response(); - } - - public static Response createProjectWithXML(String projectName, String bodyXML) { - return RestAssured.given() - .spec(requestSpec()) - .contentType(ContentType.XML) - .queryParams("name", projectName) - .body(bodyXML) - .when() - .post("/createItem") - .then() - .spec(responseSpec(200, 1500L)) - .extract().response(); - } - - public static Response updateProjectWithXML(String projectName, String bodyXML) { - return RestAssured.given() - .spec(requestSpec()) - .contentType(ContentType.XML) - .body(bodyXML) - .when() - .post("/job/%s/config.xml".formatted(projectName)) - .then() - .spec(responseSpec(200, 1500L)) - .extract().response(); - } - - public static Response getProject(String projectName) { - return RestAssured.given() - .spec(requestSpec()) - .when() - .get("job/%s/api/json".formatted(projectName)) - .then() - .extract().response(); - } - - public static Response renameProject(String projectName, String newProjectName) { - return RestAssured.given() - .spec(requestSpec()) - .queryParam("newName", newProjectName) - .when() - .post("job/%s/confirmRename".formatted(projectName)) - .then() - .spec(responseSpec(302, 1500L)) - .extract().response(); - } - - public static Response deleteProject(String projectName) { - return RestAssured.given() - .spec(requestSpec()) - .when() - .post("/job/%s/doDelete".formatted(projectName)) - .then() - .spec(responseSpec(302, 1500L)) - .extract().response(); - } +// public static Response createProject(String projectName, ProjectType projectType) { +// return RestAssured.given() +// .spec(requestSpec()) +// .contentType(ContentType.URLENC) +// .queryParam("name", projectName) +// .formParam("mode", projectType.mode()) +// .when() +// .post("/createItem") +// .then() +// .spec(responseSpec()) +// // .spec(responseSpec(302, 1500L)) +// .extract().response(); +// } +// +// public static Response createProjectWithXML(String projectName, String bodyXML) { +// return RestAssured.given() +// .spec(requestSpec()) +// .contentType(ContentType.XML) +// .queryParams("name", projectName) +// .body(bodyXML) +// .when() +// .post("/createItem") +// .then() +// .spec(responseSpec(200, 1500L)) +// .extract().response(); +// } +// +// public static Response updateProjectWithXML(String projectName, String bodyXML) { +// return RestAssured.given() +// .spec(requestSpec()) +// .contentType(ContentType.XML) +// .body(bodyXML) +// .when() +// .post("/job/%s/config.xml".formatted(projectName)) +// .then() +// .spec(responseSpec(200, 1500L)) +// .extract().response(); +// } +// +// public static Response getProject(String projectName) { +// return RestAssured.given() +// .spec(requestSpec()) +// .when() +// .get("job/%s/api/json".formatted(projectName)) +// .then() +// .extract().response(); +// } +// +// public static Response renameProject(String projectName, String newProjectName) { +// return RestAssured.given() +// .spec(requestSpec()) +// .queryParam("newName", newProjectName) +// .when() +// .post("job/%s/confirmRename".formatted(projectName)) +// .then() +// .spec(responseSpec(302, 1500L)) +// .extract().response(); +// } +// +// public static Response deleteProject(String projectName) { +// return RestAssured.given() +// .spec(requestSpec()) +// .when() +// .post("/job/%s/doDelete".formatted(projectName)) +// .then() +// .spec(responseSpec(302, 1500L)) +// .extract().response(); +// } } From 46aef451ad74e2e867e94d05c1c8de70c01c7ca6 Mon Sep 17 00:00:00 2001 From: ok Date: Thu, 5 Feb 2026 10:42:20 -0600 Subject: [PATCH 3/4] - create MultibranchPipelineTest - update MultiConfigurationProjectTest - create enum ProjectType - move CRUD methods to TestUtils --- .../school/redrover/common/TestUtils.java | 69 ------------------- 1 file changed, 69 deletions(-) diff --git a/src/test/java/school/redrover/common/TestUtils.java b/src/test/java/school/redrover/common/TestUtils.java index 00b4b5408..7f782b34b 100644 --- a/src/test/java/school/redrover/common/TestUtils.java +++ b/src/test/java/school/redrover/common/TestUtils.java @@ -32,73 +32,4 @@ public static ResponseSpecification responseSpec() { .log(LogDetail.ALL) .build(); } - -// public static Response createProject(String projectName, ProjectType projectType) { -// return RestAssured.given() -// .spec(requestSpec()) -// .contentType(ContentType.URLENC) -// .queryParam("name", projectName) -// .formParam("mode", projectType.mode()) -// .when() -// .post("/createItem") -// .then() -// .spec(responseSpec()) -// // .spec(responseSpec(302, 1500L)) -// .extract().response(); -// } -// -// public static Response createProjectWithXML(String projectName, String bodyXML) { -// return RestAssured.given() -// .spec(requestSpec()) -// .contentType(ContentType.XML) -// .queryParams("name", projectName) -// .body(bodyXML) -// .when() -// .post("/createItem") -// .then() -// .spec(responseSpec(200, 1500L)) -// .extract().response(); -// } -// -// public static Response updateProjectWithXML(String projectName, String bodyXML) { -// return RestAssured.given() -// .spec(requestSpec()) -// .contentType(ContentType.XML) -// .body(bodyXML) -// .when() -// .post("/job/%s/config.xml".formatted(projectName)) -// .then() -// .spec(responseSpec(200, 1500L)) -// .extract().response(); -// } -// -// public static Response getProject(String projectName) { -// return RestAssured.given() -// .spec(requestSpec()) -// .when() -// .get("job/%s/api/json".formatted(projectName)) -// .then() -// .extract().response(); -// } -// -// public static Response renameProject(String projectName, String newProjectName) { -// return RestAssured.given() -// .spec(requestSpec()) -// .queryParam("newName", newProjectName) -// .when() -// .post("job/%s/confirmRename".formatted(projectName)) -// .then() -// .spec(responseSpec(302, 1500L)) -// .extract().response(); -// } -// -// public static Response deleteProject(String projectName) { -// return RestAssured.given() -// .spec(requestSpec()) -// .when() -// .post("/job/%s/doDelete".formatted(projectName)) -// .then() -// .spec(responseSpec(302, 1500L)) -// .extract().response(); -// } } From c1d866f3e0f773aae9cdec72bef40ec4b6c49405 Mon Sep 17 00:00:00 2001 From: ok Date: Thu, 5 Feb 2026 10:52:31 -0600 Subject: [PATCH 4/4] renamed package endpoints to endpoint --- .../school/redrover/api/MultiConfigurationProjectTest.java | 2 +- .../java/school/redrover/api/MultibranchPipelineTest.java | 4 ++-- .../api/{endpoints => endpoint}/ProjectEndpoints.java | 2 +- .../redrover/api/{endpoints => endpoint}/ProjectType.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename src/test/java/school/redrover/api/{endpoints => endpoint}/ProjectEndpoints.java (98%) rename src/test/java/school/redrover/api/{endpoints => endpoint}/ProjectType.java (93%) diff --git a/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java b/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java index fa3db15fe..aa8349ab4 100644 --- a/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java +++ b/src/test/java/school/redrover/api/MultiConfigurationProjectTest.java @@ -5,7 +5,7 @@ import org.testng.annotations.Test; import school.redrover.common.APIBaseTest; -import static school.redrover.api.endpoints.ProjectEndpoints.*; +import static school.redrover.api.endpoint.ProjectEndpoints.*; public class MultiConfigurationProjectTest extends APIBaseTest { diff --git a/src/test/java/school/redrover/api/MultibranchPipelineTest.java b/src/test/java/school/redrover/api/MultibranchPipelineTest.java index ba7033454..6b716904f 100644 --- a/src/test/java/school/redrover/api/MultibranchPipelineTest.java +++ b/src/test/java/school/redrover/api/MultibranchPipelineTest.java @@ -3,9 +3,9 @@ import org.testng.Assert; import org.testng.annotations.Test; import school.redrover.common.APIBaseTest; -import school.redrover.api.endpoints.ProjectType; +import school.redrover.api.endpoint.ProjectType; -import static school.redrover.api.endpoints.ProjectEndpoints.*; +import static school.redrover.api.endpoint.ProjectEndpoints.*; public class MultibranchPipelineTest extends APIBaseTest { diff --git a/src/test/java/school/redrover/api/endpoints/ProjectEndpoints.java b/src/test/java/school/redrover/api/endpoint/ProjectEndpoints.java similarity index 98% rename from src/test/java/school/redrover/api/endpoints/ProjectEndpoints.java rename to src/test/java/school/redrover/api/endpoint/ProjectEndpoints.java index deabf6094..64046dd9f 100644 --- a/src/test/java/school/redrover/api/endpoints/ProjectEndpoints.java +++ b/src/test/java/school/redrover/api/endpoint/ProjectEndpoints.java @@ -1,4 +1,4 @@ -package school.redrover.api.endpoints; +package school.redrover.api.endpoint; import io.restassured.RestAssured; diff --git a/src/test/java/school/redrover/api/endpoints/ProjectType.java b/src/test/java/school/redrover/api/endpoint/ProjectType.java similarity index 93% rename from src/test/java/school/redrover/api/endpoints/ProjectType.java rename to src/test/java/school/redrover/api/endpoint/ProjectType.java index 530e43372..9401fea9f 100644 --- a/src/test/java/school/redrover/api/endpoints/ProjectType.java +++ b/src/test/java/school/redrover/api/endpoint/ProjectType.java @@ -1,4 +1,4 @@ -package school.redrover.api.endpoints; +package school.redrover.api.endpoint; public enum ProjectType {