add crlf exception and exception mapper

This commit is contained in:
Mohamed Karray
2018-09-06 14:08:20 +02:00
23 changed files with 517 additions and 104 deletions

View File

@@ -1,5 +1,7 @@
package sonia.scm.it;
import io.restassured.response.ExtractableResponse;
import io.restassured.response.Response;
import org.apache.http.HttpStatus;
import org.junit.Assume;
import org.junit.Before;
@@ -8,8 +10,10 @@ import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import sonia.scm.repository.Changeset;
import sonia.scm.repository.client.api.ClientCommand;
import sonia.scm.repository.client.api.RepositoryClient;
import sonia.scm.web.VndMediaType;
import java.io.File;
import java.io.IOException;
@@ -20,6 +24,8 @@ import static java.lang.Thread.sleep;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertNotNull;
import static sonia.scm.it.RestUtil.ADMIN_PASSWORD;
import static sonia.scm.it.RestUtil.ADMIN_USERNAME;
import static sonia.scm.it.RestUtil.given;
import static sonia.scm.it.ScmTypes.availableScmTypes;
@@ -74,6 +80,85 @@ public class RepositoryAccessITCase {
assertNotNull(branchName);
}
@Test
public void shouldFindTags() throws IOException {
RepositoryClient repositoryClient = RepositoryUtil.createRepositoryClient(repositoryType, folder);
Assume.assumeTrue("There are no tags for " + repositoryType, repositoryClient.isCommandSupported(ClientCommand.TAG));
Changeset changeset = RepositoryUtil.createAndCommitFile(repositoryClient, ADMIN_USERNAME, "a.txt", "a");
String tagName = "v1.0";
String repositoryUrl = TestData.getDefaultRepositoryUrl(repositoryType);
String tagsUrl = given()
.when()
.get(repositoryUrl)
.then()
.statusCode(HttpStatus.SC_OK)
.extract()
.path("_links.tags.href");
ExtractableResponse<Response> response = given(VndMediaType.TAG_COLLECTION, ADMIN_USERNAME, ADMIN_PASSWORD)
.when()
.get(tagsUrl)
.then()
.statusCode(HttpStatus.SC_OK)
.extract();
assertThat(response).isNotNull();
assertThat(response.body()).isNotNull();
assertThat(response.body().asString())
.isNotNull()
.isNotBlank();
RepositoryUtil.addTag(repositoryClient, changeset.getId(), tagName);
response = given(VndMediaType.TAG_COLLECTION, ADMIN_USERNAME, ADMIN_PASSWORD)
.when()
.get(tagsUrl)
.then()
.statusCode(HttpStatus.SC_OK)
.extract();
assertThat(response).isNotNull();
assertThat(response.body()).isNotNull();
assertThat(response.body().asString())
.isNotNull()
.isNotBlank();
assertThat(response.body().jsonPath().getString("_links.self.href"))
.as("assert tags self link")
.isNotNull()
.contains(repositoryUrl + "/tags/");
assertThat(response.body().jsonPath().getList("_embedded.tags"))
.as("assert tag size")
.isNotNull()
.size()
.isGreaterThan(0);
assertThat(response.body().jsonPath().getMap("_embedded.tags.find{it.name=='" + tagName + "'}"))
.as("assert tag name and revision")
.isNotNull()
.hasSize(3)
.containsEntry("name", tagName)
.containsEntry("revision", changeset.getId());
assertThat(response.body().jsonPath().getString("_embedded.tags.find{it.name=='" + tagName + "'}._links.self.href"))
.as("assert single tag self link")
.isNotNull()
.contains(String.format("%s/tags/%s", repositoryUrl, tagName));
assertThat(response.body().jsonPath().getString("_embedded.tags.find{it.name=='" + tagName + "'}._links.sources.href"))
.as("assert single tag source link")
.isNotNull()
.contains(String.format("%s/sources/%s", repositoryUrl, changeset.getId()));
assertThat(response.body().jsonPath().getString("_embedded.tags.find{it.name=='" + tagName + "'}._links.changesets.href"))
.as("assert single tag changesets link")
.isNotNull()
.contains(String.format("%s/changesets/%s", repositoryUrl, changeset.getId()));
}
@Test
public void shouldReadContent() throws IOException, InterruptedException {
RepositoryClient repositoryClient = RepositoryUtil.createRepositoryClient(repositoryType, folder);
@@ -97,7 +182,8 @@ public class RepositoryAccessITCase {
.then()
.statusCode(HttpStatus.SC_OK)
.extract()
.path("files.find{it.name=='a.txt'}._links.self.href");
.path("_embedded.files.find{it.name=='a.txt'}._links.self.href");
given()
.when()
.get(rootContentUrl)
@@ -111,14 +197,22 @@ public class RepositoryAccessITCase {
.then()
.statusCode(HttpStatus.SC_OK)
.extract()
.path("files.find{it.name=='subfolder'}._links.self.href");
String subfolderContentUrl= given()
.path("_embedded.files.find{it.name=='subfolder'}._links.self.href");
String selfOfSubfolderUrl = given()
.when()
.get(subfolderSourceUrl)
.then()
.statusCode(HttpStatus.SC_OK)
.extract()
.path("files[0]._links.self.href");
.path("_links.self.href");
assertThat(subfolderSourceUrl).isEqualTo(selfOfSubfolderUrl);
String subfolderContentUrl = given()
.when()
.get(subfolderSourceUrl)
.then()
.statusCode(HttpStatus.SC_OK)
.extract()
.path("_embedded.files[0]._links.self.href");
given()
.when()
.get(subfolderContentUrl)