From f456ef394f0e35af6031dd5af31b0cb5c8568de3 Mon Sep 17 00:00:00 2001 From: Stanislav Agafonov Date: Fri, 30 Jan 2026 18:33:58 +0300 Subject: [PATCH 1/2] API test > APIJenkinsTest > testCreateAndDeleteFolder --- .../java/school/redrover/APIJenkinsTest.java | 67 ++++++++++++++----- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/src/test/java/school/redrover/APIJenkinsTest.java b/src/test/java/school/redrover/APIJenkinsTest.java index 126c20355..58c7ece89 100644 --- a/src/test/java/school/redrover/APIJenkinsTest.java +++ b/src/test/java/school/redrover/APIJenkinsTest.java @@ -12,21 +12,6 @@ public class APIJenkinsTest extends APIBaseTest { - @Test - public void jenkinsTest() { - RestAssured.given() - .log().all()// ← добавил что бы смотреть, что отправляю и что получаю(в конце лог) - .when() - .auth() - .preemptive() - .basic(userName, apiToken) - .when() - .get(jenkinsUrl + "api/json") - .then() - .log().all() - .statusCode(200); - } - @Test public void testCreateFreestyleProjectWithValidName() { Map projectName = new HashMap<>(); @@ -79,4 +64,56 @@ public void testCreateFreestyleProjectWithValidName() { Assert.assertEquals(statusCode, 200); } + @Test + public void testCreateAndDeleteFolder() { + String folderName = "ApiTestFolder"; + + String folderConfigXml = """ + + Created via CloudBees Folder Plugin API + + """; + + RestAssured.given() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .contentType(ContentType.XML) + .queryParam("name", folderName) + .body(folderConfigXml) + .when() + .post("/createItem") + .then() + .statusCode(200); + + Response getResponse = RestAssured.given() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .when() + .get("job/%s/api/json".formatted(folderName)) + .then() + .extract().response(); + + Assert.assertEquals(getResponse.statusCode(), 200); + Assert.assertEquals(getResponse.jsonPath().getString("name"), folderName); + + RestAssured.given() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .when() + .post("job/%s/doDelete".formatted(folderName)) + .then() + .statusCode(302); + + Response deletedResponse = RestAssured.given() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .when() + .get("job/%s/api/json".formatted(folderName)) + .then() + .extract().response(); + + Assert.assertEquals(deletedResponse.statusCode(), 404, + "Expected 404 after deletion, but got " + deletedResponse.statusCode()); + } + } From 11b5a48954a4076cc3b5415a45e4be0c34cd06fd Mon Sep 17 00:00:00 2001 From: Stanislav Agafonov Date: Sat, 31 Jan 2026 09:38:32 +0300 Subject: [PATCH 2/2] API test > APIJenkinsTest > testCreateAndDeleteFolder --- .../redrover/api/APIFreestyleProjectTest.java | 2 +- .../school/redrover/api/APIJenkinsTest.java | 68 +++++++++++++++---- 2 files changed, 54 insertions(+), 16 deletions(-) diff --git a/src/test/java/school/redrover/api/APIFreestyleProjectTest.java b/src/test/java/school/redrover/api/APIFreestyleProjectTest.java index d2237eb5b..43f42b7f3 100644 --- a/src/test/java/school/redrover/api/APIFreestyleProjectTest.java +++ b/src/test/java/school/redrover/api/APIFreestyleProjectTest.java @@ -43,7 +43,7 @@ public void testCreateWithValidName() { .baseUri(jenkinsUrl) .contentType(ContentType.XML) .queryParams(projectName) - .body(bodyFreestyleProjectXML) + .body(bodyXML) .when() .post("/createItem") .then() diff --git a/src/test/java/school/redrover/api/APIJenkinsTest.java b/src/test/java/school/redrover/api/APIJenkinsTest.java index 198006564..611d61d17 100644 --- a/src/test/java/school/redrover/api/APIJenkinsTest.java +++ b/src/test/java/school/redrover/api/APIJenkinsTest.java @@ -12,21 +12,6 @@ public class APIJenkinsTest extends APIBaseTest { - @Test - public void jenkinsTest() { - RestAssured.given() - .log().all()// ← добавил что бы смотреть, что отправляю и что получаю(в конце лог) - .when() - .auth() - .preemptive() - .basic(userName, apiToken) - .when() - .get(jenkinsUrl + "api/json") - .then() - .log().all() - .statusCode(200); - } - @Test public void testCreatePiplineAndDisable() { Map projectName = new HashMap<>(); @@ -81,4 +66,57 @@ public void testCreatePiplineAndDisable() { Assert.assertEquals(getResponse.getStatusCode(), 200); Assert.assertTrue(responseBody.contains("This project is currently disabled")); } + + @Test + public void testCreateAndDeleteFolder() { + String folderName = "ApiTestFolder"; + + String folderConfigXml = """ + + Created via CloudBees Folder Plugin API + + """; + + RestAssured.given() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .contentType(ContentType.XML) + .queryParam("name", folderName) + .body(folderConfigXml) + .when() + .post("/createItem") + .then() + .statusCode(200); + + Response getResponse = RestAssured.given() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .when() + .get("job/%s/api/json".formatted(folderName)) + .then() + .extract().response(); + + Assert.assertEquals(getResponse.statusCode(), 200); + Assert.assertEquals(getResponse.jsonPath().getString("name"), folderName); + + RestAssured.given() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .when() + .post("job/%s/doDelete".formatted(folderName)) + .then() + .statusCode(302); + + Response deletedResponse = RestAssured.given() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .when() + .get("job/%s/api/json".formatted(folderName)) + .then() + .extract().response(); + + Assert.assertEquals(deletedResponse.statusCode(), 404, + "Expected 404 after deletion, but got " + deletedResponse.statusCode()); + } + }