Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 13 additions & 27 deletions src/test/java/school/redrover/api/APIFreestyleProjectTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
import java.util.HashMap;
import java.util.Map;

import static school.redrover.common.TestUtils.requestSpec;
import static school.redrover.common.TestUtils.responseSpec;

public class APIFreestyleProjectTest extends APIBaseTest {

private static final String PROJECT_NAME = "FreestyleProject";
Expand Down Expand Up @@ -38,33 +41,25 @@ public void testCreateWithValidName() {
projectName.put("name", PROJECT_NAME);

RestAssured.given()
.log().all()
.auth().preemptive().basic(userName, apiToken)
.baseUri(jenkinsUrl)
.spec(requestSpec())
.contentType(ContentType.XML)
.queryParams(projectName)
.body(bodyXML)
.when()
.post("/createItem")
.then()
.log().all()
.statusCode(200);
.spec(responseSpec(200, 1500L));

Response response = RestAssured.given()
.log().all()
.auth().preemptive().basic(userName, apiToken)
.baseUri(jenkinsUrl)
.spec(requestSpec())
.when()
.get("job/%s/api/json".formatted(projectName.get("name")))
.then()
.log().all()
.spec(responseSpec(200, 1500L))
.extract().response();

String actualProjectName = response.jsonPath().getString("name");
Assert.assertEquals(actualProjectName, projectName.get("name"));

Integer statusCode = response.getStatusCode();
Assert.assertEquals(statusCode, 200);
}

@Test
Expand All @@ -73,39 +68,30 @@ public void testRenameProject() {
projectName.put("name", PROJECT_NAME);

RestAssured.given()
.log().all()
.auth().preemptive().basic(userName, apiToken)
.baseUri(jenkinsUrl)
.spec(requestSpec())
.contentType(ContentType.XML)
.queryParams(projectName)
.body(bodyXML)
.when()
.post("/createItem")
.then()
.log().all()
.statusCode(200);
.spec(responseSpec(200, 1500L));

RestAssured.given()
.log().all()
.auth().preemptive().basic(userName, apiToken)
.baseUri(jenkinsUrl)
.spec(requestSpec())
.contentType("application/x-www-form-urlencoded")
.queryParam("newName", NEW_PROJECT_NAME)
.when()
.post("job/%s/confirmRename".formatted(projectName.get("name")))
.then()
.log().all()
.statusCode(302);
.spec(responseSpec(302, 1500L));

Response response = RestAssured.given()
.log().all()
.auth().preemptive().basic(userName, apiToken)
.baseUri(jenkinsUrl)
.spec(requestSpec())
.when()
.get("job/%s/api/json".formatted(NEW_PROJECT_NAME))
.then()
.log().all()
.statusCode(200)
.spec(responseSpec(200, 1500L))
.extract().response();

String actualProjectName = response.jsonPath().getString("name");
Expand Down
9 changes: 3 additions & 6 deletions src/test/java/school/redrover/common/APIBaseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,18 @@
public abstract class APIBaseTest {

protected String jenkinsUrl;
protected String userName;
protected String apiToken;
protected String tokenUuid;
protected String userName = ProjectUtils.getUserName();

@BeforeClass
protected void setUpApi() {
RestAssured.filters(new RestAssuredLogFilter());

Log.info("Generate API token for tests");
jenkinsUrl = ProjectUtils.getUrl();
userName = ProjectUtils.getUserName();

JenkinsUtils.ApiToken token = JenkinsUtils.generateApiToken("api-test-token-" + System.currentTimeMillis());
apiToken = token.value;
tokenUuid = token.uuid;
apiToken = JenkinsUtils.getApiTokenValue();
tokenUuid = JenkinsUtils.getApiTokenUuid();
}

@BeforeMethod
Expand Down
23 changes: 13 additions & 10 deletions src/test/java/school/redrover/common/JenkinsUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ private JenkinsUtils() {
throw new UnsupportedOperationException();
}

private record ApiToken(String name, String value, String uuid) {
}

private static String getCrumbFromPage(String page) {
final String CRUMB_TAG = "data-crumb-value=\"";

Expand Down Expand Up @@ -229,6 +232,10 @@ private static void deleteSystemMessage() {
getCrumbFromPage(mainPage)));
}

private synchronized static ApiToken getApiToken() {
return generateApiToken("api-test-token-" + System.currentTimeMillis());
}

static void clearData() {
JenkinsUtils.deleteViews();
JenkinsUtils.deleteJobs();
Expand All @@ -255,19 +262,15 @@ public static void logout(WebDriver driver) {
driver.get(ProjectUtils.getUrl() + "logout");
}

public static class ApiToken {
public final String name;
public final String value;
public final String uuid;
public synchronized static String getApiTokenValue() {
return getApiToken().value();
}

public ApiToken(String name, String value, String uuid) {
this.name = name;
this.value = value;
this.uuid = uuid;
}
public synchronized static String getApiTokenUuid() {
return getApiToken().uuid();
}

static ApiToken generateApiToken(String tokenName) {
private static ApiToken generateApiToken(String tokenName) {
String mainPage = getPage("");
String crumb = getCrumbFromPage(mainPage);

Expand Down
36 changes: 36 additions & 0 deletions src/test/java/school/redrover/common/TestUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package school.redrover.common;

import io.restassured.builder.RequestSpecBuilder;
import io.restassured.builder.ResponseSpecBuilder;
import io.restassured.filter.log.LogDetail;
import io.restassured.specification.RequestSpecification;
import io.restassured.specification.ResponseSpecification;

import static io.restassured.RestAssured.preemptive;
import static org.hamcrest.Matchers.lessThan;

public class TestUtils {

public static RequestSpecification requestSpec() {
return new RequestSpecBuilder()
.setAuth(preemptive().basic(ProjectUtils.getUserName(), JenkinsUtils.getApiTokenValue()))
.setBaseUri(ProjectUtils.getUrl())
.log(LogDetail.ALL)
.build();
}

public static ResponseSpecification responseSpec(Integer statusCode, Long responseTime) {
return new ResponseSpecBuilder()
.expectStatusCode(statusCode)
.expectResponseTime(lessThan(responseTime))
.log(LogDetail.ALL)
.build();
}

public static ResponseSpecification responseSpec() {
return new ResponseSpecBuilder()
.log(LogDetail.ALL)
.build();
}

}