diff --git a/src/test/java/school/redrover/api/APIJenkinsTest.java b/src/test/java/school/redrover/api/APIJenkinsTest.java index ef61037cf..9b4ceafac 100644 --- a/src/test/java/school/redrover/api/APIJenkinsTest.java +++ b/src/test/java/school/redrover/api/APIJenkinsTest.java @@ -7,66 +7,9 @@ import org.testng.annotations.Test; import school.redrover.common.APIBaseTest; -import java.util.HashMap; -import java.util.Map; 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 +61,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..529063a6f --- /dev/null +++ b/src/test/java/school/redrover/api/PiplineTest.java @@ -0,0 +1,70 @@ +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; + +import static school.redrover.common.TestUtils.requestSpec; + +public class PiplineTest extends APIBaseTest { + + private static final String PROJECT_NAME = "Pipline"; + + private static final String bodyPiplineXML = """ + + false + + + false + + """; + + @Test + public void testCreatePiplineAndDisable() { + Map projectName = new HashMap<>(); + projectName.put("name", PROJECT_NAME); + + RestAssured.given() + .spec(requestSpec()) + .contentType(ContentType.XML) + .queryParams(projectName) + .body(bodyPiplineXML) + .when() + .post("/createItem") + .then() + .log().all() + .statusCode(200); + + Response response = RestAssured.given() + .log().all() + .spec(requestSpec()) + .when() + .post("job/%s/disable".formatted(projectName.get("name"))) + .then() + .log().all() + .extract().response(); + + String location = response.getHeader("Location"); + + Response getResponse = RestAssured.given() + .spec(requestSpec()) + .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..c07f2b6db --- /dev/null +++ b/src/test/java/school/redrover/api/UserTest.java @@ -0,0 +1,90 @@ +package school.redrover.api; + +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; + +import static school.redrover.common.TestUtils.requestSpec; +import static school.redrover.common.TestUtils.responseSpec; + +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() + .spec(requestSpec()) + .queryParams(userData) + .when() + .post("securityRealm/createAccountByAdmin") + .then() + .log().all() + .extract().response(); + + String location = response.getHeader("Location"); + + Response getResponse = RestAssured.given() + .log().all() + .spec(requestSpec()) + .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"))); + } + + @Test(dependsOnMethods = "testCreateUser") + public void testDeleteUser() { + + Response deleteResponse = RestAssured.given() + .log().all() + .spec(requestSpec()) + .when() + .post("manage/securityRealm/user/%s/doDelete".formatted(userData.get("username".toLowerCase()))) + .then() + .log().all() + .extract().response(); + + Response getResponse = RestAssured.given() + .log().all() + .spec(requestSpec()) + .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")); + } +}