Files
SCM-Manager/scm-it/src/test/java/sonia/scm/it/RoleITCase.java
2019-05-07 09:20:19 +02:00

72 lines
2.1 KiB
Java

package sonia.scm.it;
import org.apache.http.HttpStatus;
import org.junit.Before;
import org.junit.Test;
import sonia.scm.it.utils.RestUtil;
import sonia.scm.it.utils.TestData;
import sonia.scm.web.VndMediaType;
import static org.junit.Assert.assertNotNull;
import static sonia.scm.it.PermissionsITCase.USER_PASS;
import static sonia.scm.it.utils.RestUtil.given;
import static sonia.scm.it.utils.TestData.USER_SCM_ADMIN;
import static sonia.scm.it.utils.TestData.callRepository;
public class RoleITCase {
private static final String USER = "user";
public static final String ROLE_NAME = "permission-role";
@Before
public void init() {
TestData.createDefault();
TestData.createNotAdminUser(USER, USER_PASS);
}
@Test
public void userShouldSeePermissionsAfterAddingRoleToUser() {
callRepository(USER, USER_PASS, "git", HttpStatus.SC_FORBIDDEN);
given()
.when()
.delete(RestUtil.createResourceUrl("repository-roles/" + ROLE_NAME))
.then()
.statusCode(HttpStatus.SC_NO_CONTENT);
given(VndMediaType.REPOSITORY_ROLE)
.when()
.content("{" +
"\"name\": \"" + ROLE_NAME + "\"," +
"\"verbs\": [\"read\",\"permissionRead\"]" +
"}")
.post(RestUtil.createResourceUrl("repository-roles/"))
.then()
.statusCode(HttpStatus.SC_CREATED);
String permissionUrl = given(VndMediaType.REPOSITORY, USER_SCM_ADMIN, USER_SCM_ADMIN)
.when()
.get(TestData.getDefaultRepositoryUrl("git"))
.then()
.statusCode(HttpStatus.SC_OK)
.extract()
.body().jsonPath().getString("_links.permissions.href");
given(VndMediaType.REPOSITORY_PERMISSION)
.when()
.content("{\n" +
"\t\"role\": \"" + ROLE_NAME + "\",\n" +
"\t\"name\": \"" + USER + "\",\n" +
"\t\"groupPermission\": false\n" +
"\t\n" +
"}")
.post(permissionUrl)
.then()
.statusCode(HttpStatus.SC_CREATED);
assertNotNull(callRepository(USER, USER_PASS, "git", HttpStatus.SC_OK)
.extract()
.body().jsonPath().getString("_links.permissions.href"));
}
}