From 9683d56620aeb285a8d442e1c7da62c7b3d9bcf9 Mon Sep 17 00:00:00 2001 From: Marin4kin Date: Mon, 2 Feb 2026 22:33:52 +0300 Subject: [PATCH 1/4] new testCreateUser --- .../school/redrover/api/APIJenkinsTest.java | 94 ------------------- .../java/school/redrover/api/PiplineTest.java | 69 ++++++++++++++ .../java/school/redrover/api/UserTest.java | 52 ++++++++++ 3 files changed, 121 insertions(+), 94 deletions(-) create mode 100644 src/test/java/school/redrover/api/PiplineTest.java create mode 100644 src/test/java/school/redrover/api/UserTest.java diff --git a/src/test/java/school/redrover/api/APIJenkinsTest.java b/src/test/java/school/redrover/api/APIJenkinsTest.java index ef61037cf..852782eea 100644 --- a/src/test/java/school/redrover/api/APIJenkinsTest.java +++ b/src/test/java/school/redrover/api/APIJenkinsTest.java @@ -12,61 +12,6 @@ public class APIJenkinsTest extends APIBaseTest { - @Test - public void testCreatePiplineAndDisable() { - Map projectName = new HashMap<>(); - projectName.put("name", "Pipline"); - - String bodyPiplineXML = """ - - false - - - false - - """; - - RestAssured.given() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) - .contentType(ContentType.XML) - .queryParams(projectName) - .body(bodyPiplineXML) - .when() - .post("/createItem") - .then() - .log().all() - .statusCode(200); - - Response response = RestAssured.given() - .log().all() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) - .when() - .post("job/%s/disable".formatted(projectName.get("name"))) - .then() - .log().all() - .extract().response(); - - String location = response.getHeader("Location"); - - Response getResponse = RestAssured.given() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) - .when() - .get(location) - .then() - .log().all() - .statusCode(200) - .extract().response(); - - String responseBody = getResponse.getBody().asString(); - - Assert.assertEquals(response.getStatusCode(), 302); - Assert.assertEquals(getResponse.getStatusCode(), 200); - Assert.assertTrue(responseBody.contains("This project is currently disabled")); - } - @Test public void testCreateAndDeleteFolder() { String folderName = "ApiTestFolder"; @@ -118,43 +63,4 @@ public void testCreateAndDeleteFolder() { Assert.assertEquals(deletedResponse.statusCode(), 404, "Expected 404 after deletion, but got " + deletedResponse.statusCode()); } - - @Test - public void testCreateUser() { - Map userData = new HashMap<>(); - userData.put("username", "UserUser"); - userData.put("password1", "passwordUser"); - userData.put("password2", "passwordUser"); - userData.put("fullname", "UserUserName"); - userData.put("email", "user@user.us"); - - Response response = RestAssured.given() - .log().all() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) - .queryParams(userData) - .when() - .post("securityRealm/createAccountByAdmin") - .then() - .log().all() - .extract().response(); - - String location = response.getHeader("Location"); - - Response getResponse = RestAssured.given() - .log().all() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) - .when() - .get("%s".formatted(location)) - .then() - .log().all() - .extract().response(); - - String responseBody = getResponse.getBody().asString(); - - Assert.assertEquals(response.getStatusCode(), 302); - Assert.assertEquals(getResponse.getStatusCode(), 200); - Assert.assertTrue(responseBody.contains(userData.get("username"))); - } } diff --git a/src/test/java/school/redrover/api/PiplineTest.java b/src/test/java/school/redrover/api/PiplineTest.java new file mode 100644 index 000000000..ae6c493f7 --- /dev/null +++ b/src/test/java/school/redrover/api/PiplineTest.java @@ -0,0 +1,69 @@ +package school.redrover.api; + +import io.restassured.RestAssured; +import io.restassured.http.ContentType; +import io.restassured.response.Response; +import org.testng.Assert; +import org.testng.annotations.Test; +import school.redrover.common.APIBaseTest; + +import java.util.HashMap; +import java.util.Map; + +public class PiplineTest extends APIBaseTest { + + @Test + public void testCreatePiplineAndDisable() { + Map projectName = new HashMap<>(); + projectName.put("name", "Pipline"); + + String bodyPiplineXML = """ + + false + + + false + + """; + + RestAssured.given() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .contentType(ContentType.XML) + .queryParams(projectName) + .body(bodyPiplineXML) + .when() + .post("/createItem") + .then() + .log().all() + .statusCode(200); + + Response response = RestAssured.given() + .log().all() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .when() + .post("job/%s/disable".formatted(projectName.get("name"))) + .then() + .log().all() + .extract().response(); + + String location = response.getHeader("Location"); + + Response getResponse = RestAssured.given() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .when() + .get(location) + .then() + .log().all() + .statusCode(200) + .extract().response(); + + String responseBody = getResponse.getBody().asString(); + + Assert.assertEquals(response.getStatusCode(), 302); + Assert.assertEquals(getResponse.getStatusCode(), 200); + Assert.assertTrue(responseBody.contains("This project is currently disabled")); + } +} diff --git a/src/test/java/school/redrover/api/UserTest.java b/src/test/java/school/redrover/api/UserTest.java new file mode 100644 index 000000000..cc557645d --- /dev/null +++ b/src/test/java/school/redrover/api/UserTest.java @@ -0,0 +1,52 @@ +package school.redrover.api; + +import io.restassured.RestAssured; +import io.restassured.response.Response; +import org.testng.Assert; +import org.testng.annotations.Test; +import school.redrover.common.APIBaseTest; + +import java.util.HashMap; +import java.util.Map; + +public class UserTest extends APIBaseTest{ + + @Test + public void testCreateUser() { + Map userData = new HashMap<>(); + userData.put("username", "UserUser"); + userData.put("password1", "passwordUser"); + userData.put("password2", "passwordUser"); + userData.put("fullname", "UserUserName"); + userData.put("email", "user@user.us"); + + Response response = RestAssured.given() + .log().all() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .queryParams(userData) + .when() + .post("securityRealm/createAccountByAdmin") + .then() + .log().all() + .extract().response(); + + String location = response.getHeader("Location"); + + Response getResponse = RestAssured.given() + .log().all() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .when() + .get("%s".formatted(location)) + .then() + .log().all() + .extract().response(); + + String responseBody = getResponse.getBody().asString(); + + Assert.assertEquals(response.getStatusCode(), 302); + Assert.assertEquals(getResponse.getStatusCode(), 200); + Assert.assertTrue(responseBody.contains(userData.get("username"))); + } +} From 9262c655d3bc0af37ef1077dd577ac3ba3ec04bb Mon Sep 17 00:00:00 2001 From: Marin4kin Date: Tue, 3 Feb 2026 16:06:48 +0300 Subject: [PATCH 2/4] new testCreateUser --- .../java/school/redrover/api/UserTest.java | 50 +++++++++++++++++-- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/src/test/java/school/redrover/api/UserTest.java b/src/test/java/school/redrover/api/UserTest.java index cc557645d..9137b58d4 100644 --- a/src/test/java/school/redrover/api/UserTest.java +++ b/src/test/java/school/redrover/api/UserTest.java @@ -3,22 +3,32 @@ import io.restassured.RestAssured; import io.restassured.response.Response; import org.testng.Assert; +import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import school.redrover.common.APIBaseTest; import java.util.HashMap; import java.util.Map; -public class UserTest extends APIBaseTest{ +import static school.redrover.common.TestUtils.requestSpec; +import static school.redrover.common.TestUtils.responseSpec; - @Test - public void testCreateUser() { - Map userData = new HashMap<>(); +public class UserTest extends APIBaseTest { + + private Map userData; + + @BeforeClass + public void setupTestData() { + userData = new HashMap<>(); userData.put("username", "UserUser"); userData.put("password1", "passwordUser"); userData.put("password2", "passwordUser"); userData.put("fullname", "UserUserName"); userData.put("email", "user@user.us"); + } + + @Test + public void testCreateUser() { Response response = RestAssured.given() .log().all() @@ -49,4 +59,36 @@ public void testCreateUser() { Assert.assertEquals(getResponse.getStatusCode(), 200); Assert.assertTrue(responseBody.contains(userData.get("username"))); } + + @Test(dependsOnMethods = "testCreateUser") + public void testDeleteUser() { + + Response deleteResponse = RestAssured.given() + .log().all() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .when() + .post("manage/securityRealm/user/%s/doDelete".formatted(userData.get("username".toLowerCase()))) + .then() + .log().all() + .extract().response(); + + Response getResponse = RestAssured.given() + .log().all() + .auth().preemptive().basic(userName, apiToken) + .baseUri(jenkinsUrl) + .when() + .get("manage/securityRealm/") + .then() + .spec(responseSpec(200, 1500L)) + .extract().response(); + + String responseBody = getResponse.getBody().asString(); + + Assert.assertEquals(deleteResponse.statusCode(), 404, + "Expected 404 after deletion, but got " + deleteResponse.statusCode()); + Assert.assertEquals(getResponse.getStatusCode(), 200); + Assert.assertFalse(responseBody.contains(userData.get("username")), + "Response body should NOT contain username: " + userData.get("username")); + } } From 1919df5343df564875484ff6a3274422c4f99db5 Mon Sep 17 00:00:00 2001 From: Marin4kin Date: Tue, 3 Feb 2026 16:11:51 +0300 Subject: [PATCH 3/4] RF APIJenkinsTest and new testDeleteUser --- .../java/school/redrover/api/APIJenkinsTest.java | 2 -- .../java/school/redrover/api/PiplineTest.java | 16 +++++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/test/java/school/redrover/api/APIJenkinsTest.java b/src/test/java/school/redrover/api/APIJenkinsTest.java index 852782eea..9b4ceafac 100644 --- a/src/test/java/school/redrover/api/APIJenkinsTest.java +++ b/src/test/java/school/redrover/api/APIJenkinsTest.java @@ -7,8 +7,6 @@ import org.testng.annotations.Test; import school.redrover.common.APIBaseTest; -import java.util.HashMap; -import java.util.Map; public class APIJenkinsTest extends APIBaseTest { diff --git a/src/test/java/school/redrover/api/PiplineTest.java b/src/test/java/school/redrover/api/PiplineTest.java index ae6c493f7..44ecf3a4b 100644 --- a/src/test/java/school/redrover/api/PiplineTest.java +++ b/src/test/java/school/redrover/api/PiplineTest.java @@ -12,19 +12,21 @@ public class PiplineTest extends APIBaseTest { - @Test - public void testCreatePiplineAndDisable() { - Map projectName = new HashMap<>(); - projectName.put("name", "Pipline"); + private static final String PROJECT_NAME = "Pipline"; - String bodyPiplineXML = """ - + private static final String bodyPiplineXML = """ + false false - """; + """; + + @Test + public void testCreatePiplineAndDisable() { + Map projectName = new HashMap<>(); + projectName.put("name", PROJECT_NAME); RestAssured.given() .auth().preemptive().basic(userName, apiToken) From 63a933c0cb8fa7124ac0736bc1c510d72b58549e Mon Sep 17 00:00:00 2001 From: Marin4kin Date: Tue, 3 Feb 2026 19:10:47 +0300 Subject: [PATCH 4/4] RF APIJenkinsTest and new testDeleteUser --- src/test/java/school/redrover/api/PiplineTest.java | 11 +++++------ src/test/java/school/redrover/api/UserTest.java | 12 ++++-------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/test/java/school/redrover/api/PiplineTest.java b/src/test/java/school/redrover/api/PiplineTest.java index 44ecf3a4b..529063a6f 100644 --- a/src/test/java/school/redrover/api/PiplineTest.java +++ b/src/test/java/school/redrover/api/PiplineTest.java @@ -10,6 +10,8 @@ import java.util.HashMap; import java.util.Map; +import static school.redrover.common.TestUtils.requestSpec; + public class PiplineTest extends APIBaseTest { private static final String PROJECT_NAME = "Pipline"; @@ -29,8 +31,7 @@ public void testCreatePiplineAndDisable() { projectName.put("name", PROJECT_NAME); RestAssured.given() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) + .spec(requestSpec()) .contentType(ContentType.XML) .queryParams(projectName) .body(bodyPiplineXML) @@ -42,8 +43,7 @@ public void testCreatePiplineAndDisable() { Response response = RestAssured.given() .log().all() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) + .spec(requestSpec()) .when() .post("job/%s/disable".formatted(projectName.get("name"))) .then() @@ -53,8 +53,7 @@ public void testCreatePiplineAndDisable() { String location = response.getHeader("Location"); Response getResponse = RestAssured.given() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) + .spec(requestSpec()) .when() .get(location) .then() diff --git a/src/test/java/school/redrover/api/UserTest.java b/src/test/java/school/redrover/api/UserTest.java index 9137b58d4..c07f2b6db 100644 --- a/src/test/java/school/redrover/api/UserTest.java +++ b/src/test/java/school/redrover/api/UserTest.java @@ -32,8 +32,7 @@ public void testCreateUser() { Response response = RestAssured.given() .log().all() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) + .spec(requestSpec()) .queryParams(userData) .when() .post("securityRealm/createAccountByAdmin") @@ -45,8 +44,7 @@ public void testCreateUser() { Response getResponse = RestAssured.given() .log().all() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) + .spec(requestSpec()) .when() .get("%s".formatted(location)) .then() @@ -65,8 +63,7 @@ public void testDeleteUser() { Response deleteResponse = RestAssured.given() .log().all() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) + .spec(requestSpec()) .when() .post("manage/securityRealm/user/%s/doDelete".formatted(userData.get("username".toLowerCase()))) .then() @@ -75,8 +72,7 @@ public void testDeleteUser() { Response getResponse = RestAssured.given() .log().all() - .auth().preemptive().basic(userName, apiToken) - .baseUri(jenkinsUrl) + .spec(requestSpec()) .when() .get("manage/securityRealm/") .then()