mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-15 09:46:16 +01:00
Rename Permission -> RepositoryPermission
This commit is contained in:
@@ -81,7 +81,7 @@ public class Repository extends BasicPropertiesAware implements ModelObject, Per
|
|||||||
private Long lastModified;
|
private Long lastModified;
|
||||||
private String namespace;
|
private String namespace;
|
||||||
private String name;
|
private String name;
|
||||||
private final Set<Permission> permissions = new HashSet<>();
|
private final Set<RepositoryPermission> permissions = new HashSet<>();
|
||||||
@XmlElement(name = "public")
|
@XmlElement(name = "public")
|
||||||
private boolean publicReadable = false;
|
private boolean publicReadable = false;
|
||||||
private boolean archived = false;
|
private boolean archived = false;
|
||||||
@@ -122,7 +122,7 @@ public class Repository extends BasicPropertiesAware implements ModelObject, Per
|
|||||||
* @param permissions permissions for specific users and groups.
|
* @param permissions permissions for specific users and groups.
|
||||||
*/
|
*/
|
||||||
public Repository(String id, String type, String namespace, String name, String contact,
|
public Repository(String id, String type, String namespace, String name, String contact,
|
||||||
String description, Permission... permissions) {
|
String description, RepositoryPermission... permissions) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.namespace = namespace;
|
this.namespace = namespace;
|
||||||
@@ -201,7 +201,7 @@ public class Repository extends BasicPropertiesAware implements ModelObject, Per
|
|||||||
return new NamespaceAndName(getNamespace(), getName());
|
return new NamespaceAndName(getNamespace(), getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Collection<Permission> getPermissions() {
|
public Collection<RepositoryPermission> getPermissions() {
|
||||||
return Collections.unmodifiableCollection(permissions);
|
return Collections.unmodifiableCollection(permissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,16 +297,16 @@ public class Repository extends BasicPropertiesAware implements ModelObject, Per
|
|||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPermissions(Collection<Permission> permissions) {
|
public void setPermissions(Collection<RepositoryPermission> permissions) {
|
||||||
this.permissions.clear();
|
this.permissions.clear();
|
||||||
this.permissions.addAll(permissions);
|
this.permissions.addAll(permissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPermission(Permission newPermission) {
|
public void addPermission(RepositoryPermission newPermission) {
|
||||||
this.permissions.add(newPermission);
|
this.permissions.add(newPermission);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removePermission(Permission permission) {
|
public void removePermission(RepositoryPermission permission) {
|
||||||
this.permissions.remove(permission);
|
this.permissions.remove(permission);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ import java.io.Serializable;
|
|||||||
*/
|
*/
|
||||||
@XmlRootElement(name = "permissions")
|
@XmlRootElement(name = "permissions")
|
||||||
@XmlAccessorType(XmlAccessType.FIELD)
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
public class Permission implements PermissionObject, Serializable
|
public class RepositoryPermission implements PermissionObject, Serializable
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final long serialVersionUID = -2915175031430884040L;
|
private static final long serialVersionUID = -2915175031430884040L;
|
||||||
@@ -63,41 +63,41 @@ public class Permission implements PermissionObject, Serializable
|
|||||||
private PermissionType type = PermissionType.READ;
|
private PermissionType type = PermissionType.READ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new {@link Permission}.
|
* Constructs a new {@link RepositoryPermission}.
|
||||||
* This constructor is used by JAXB.
|
* This constructor is used by JAXB.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public Permission() {}
|
public RepositoryPermission() {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new {@link Permission} with type = {@link PermissionType#READ}
|
* Constructs a new {@link RepositoryPermission} with type = {@link PermissionType#READ}
|
||||||
* for the specified user.
|
* for the specified user.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @param name name of the user
|
* @param name name of the user
|
||||||
*/
|
*/
|
||||||
public Permission(String name)
|
public RepositoryPermission(String name)
|
||||||
{
|
{
|
||||||
this();
|
this();
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new {@link Permission} with the specified type for
|
* Constructs a new {@link RepositoryPermission} with the specified type for
|
||||||
* the given user.
|
* the given user.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @param name name of the user
|
* @param name name of the user
|
||||||
* @param type type of the permission
|
* @param type type of the permission
|
||||||
*/
|
*/
|
||||||
public Permission(String name, PermissionType type)
|
public RepositoryPermission(String name, PermissionType type)
|
||||||
{
|
{
|
||||||
this(name);
|
this(name);
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new {@link Permission} with the specified type for
|
* Constructs a new {@link RepositoryPermission} with the specified type for
|
||||||
* the given user or group.
|
* the given user or group.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
@@ -105,7 +105,7 @@ public class Permission implements PermissionObject, Serializable
|
|||||||
* @param type type of the permission
|
* @param type type of the permission
|
||||||
* @param groupPermission true if the permission is a permission for a group
|
* @param groupPermission true if the permission is a permission for a group
|
||||||
*/
|
*/
|
||||||
public Permission(String name, PermissionType type, boolean groupPermission)
|
public RepositoryPermission(String name, PermissionType type, boolean groupPermission)
|
||||||
{
|
{
|
||||||
this(name, type);
|
this(name, type);
|
||||||
this.groupPermission = groupPermission;
|
this.groupPermission = groupPermission;
|
||||||
@@ -114,12 +114,12 @@ public class Permission implements PermissionObject, Serializable
|
|||||||
//~--- methods --------------------------------------------------------------
|
//~--- methods --------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the {@link Permission} is the same as the obj argument.
|
* Returns true if the {@link RepositoryPermission} is the same as the obj argument.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @param obj the reference object with which to compare
|
* @param obj the reference object with which to compare
|
||||||
*
|
*
|
||||||
* @return true if the {@link Permission} is the same as the obj argument
|
* @return true if the {@link RepositoryPermission} is the same as the obj argument
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj)
|
public boolean equals(Object obj)
|
||||||
@@ -134,7 +134,7 @@ public class Permission implements PermissionObject, Serializable
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Permission other = (Permission) obj;
|
final RepositoryPermission other = (RepositoryPermission) obj;
|
||||||
|
|
||||||
return Objects.equal(name, other.name)
|
return Objects.equal(name, other.name)
|
||||||
&& Objects.equal(type, other.type)
|
&& Objects.equal(type, other.type)
|
||||||
@@ -142,10 +142,10 @@ public class Permission implements PermissionObject, Serializable
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the hash code value for the {@link Permission}.
|
* Returns the hash code value for the {@link RepositoryPermission}.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @return the hash code value for the {@link Permission}
|
* @return the hash code value for the {@link RepositoryPermission}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int hashCode()
|
public int hashCode()
|
||||||
@@ -27,7 +27,7 @@ public class MapperModule extends AbstractModule {
|
|||||||
|
|
||||||
bind(BranchToBranchDtoMapper.class).to(Mappers.getMapper(BranchToBranchDtoMapper.class).getClass());
|
bind(BranchToBranchDtoMapper.class).to(Mappers.getMapper(BranchToBranchDtoMapper.class).getClass());
|
||||||
bind(PermissionDtoToPermissionMapper.class).to(Mappers.getMapper(PermissionDtoToPermissionMapper.class).getClass());
|
bind(PermissionDtoToPermissionMapper.class).to(Mappers.getMapper(PermissionDtoToPermissionMapper.class).getClass());
|
||||||
bind(PermissionToPermissionDtoMapper.class).to(Mappers.getMapper(PermissionToPermissionDtoMapper.class).getClass());
|
bind(RepositoryPermissionToRepositoryPermissionDtoMapper.class).to(Mappers.getMapper(RepositoryPermissionToRepositoryPermissionDtoMapper.class).getClass());
|
||||||
|
|
||||||
bind(ChangesetToChangesetDtoMapper.class).to(Mappers.getMapper(ChangesetToChangesetDtoMapper.class).getClass());
|
bind(ChangesetToChangesetDtoMapper.class).to(Mappers.getMapper(ChangesetToChangesetDtoMapper.class).getClass());
|
||||||
bind(ChangesetToParentDtoMapper.class).to(Mappers.getMapper(ChangesetToParentDtoMapper.class).getClass());
|
bind(ChangesetToParentDtoMapper.class).to(Mappers.getMapper(ChangesetToParentDtoMapper.class).getClass());
|
||||||
|
|||||||
@@ -2,20 +2,20 @@ package sonia.scm.api.v2.resources;
|
|||||||
|
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.MappingTarget;
|
import org.mapstruct.MappingTarget;
|
||||||
import sonia.scm.repository.Permission;
|
import sonia.scm.repository.RepositoryPermission;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public abstract class PermissionDtoToPermissionMapper {
|
public abstract class PermissionDtoToPermissionMapper {
|
||||||
|
|
||||||
public abstract Permission map(PermissionDto permissionDto);
|
public abstract RepositoryPermission map(RepositoryPermissionDto permissionDto);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* this method is needed to modify an existing permission object
|
* this method is needed to modify an existing permission object
|
||||||
*
|
*
|
||||||
* @param target the target permission
|
* @param target the target permission
|
||||||
* @param permissionDto the source dto
|
* @param repositoryPermissionDto the source dto
|
||||||
* @return the mapped target permission object
|
* @return the mapped target permission object
|
||||||
*/
|
*/
|
||||||
public abstract void modify(@MappingTarget Permission target, PermissionDto permissionDto);
|
public abstract void modify(@MappingTarget RepositoryPermission target, RepositoryPermissionDto repositoryPermissionDto);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,14 +8,13 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import sonia.scm.AlreadyExistsException;
|
import sonia.scm.AlreadyExistsException;
|
||||||
import sonia.scm.NotFoundException;
|
import sonia.scm.NotFoundException;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Permission;
|
import sonia.scm.repository.RepositoryPermission;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryManager;
|
import sonia.scm.repository.RepositoryManager;
|
||||||
import sonia.scm.repository.RepositoryPermissions;
|
import sonia.scm.repository.RepositoryPermissions;
|
||||||
import sonia.scm.web.VndMediaType;
|
import sonia.scm.web.VndMediaType;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.ws.rs.Consumes;
|
import javax.ws.rs.Consumes;
|
||||||
import javax.ws.rs.DELETE;
|
import javax.ws.rs.DELETE;
|
||||||
@@ -33,24 +32,24 @@ import java.util.function.Predicate;
|
|||||||
import static sonia.scm.AlreadyExistsException.alreadyExists;
|
import static sonia.scm.AlreadyExistsException.alreadyExists;
|
||||||
import static sonia.scm.ContextEntry.ContextBuilder.entity;
|
import static sonia.scm.ContextEntry.ContextBuilder.entity;
|
||||||
import static sonia.scm.NotFoundException.notFound;
|
import static sonia.scm.NotFoundException.notFound;
|
||||||
import static sonia.scm.api.v2.resources.PermissionDto.GROUP_PREFIX;
|
import static sonia.scm.api.v2.resources.RepositoryPermissionDto.GROUP_PREFIX;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class PermissionRootResource {
|
public class PermissionRootResource {
|
||||||
|
|
||||||
|
|
||||||
private PermissionDtoToPermissionMapper dtoToModelMapper;
|
private PermissionDtoToPermissionMapper dtoToModelMapper;
|
||||||
private PermissionToPermissionDtoMapper modelToDtoMapper;
|
private RepositoryPermissionToRepositoryPermissionDtoMapper modelToDtoMapper;
|
||||||
private PermissionCollectionToDtoMapper permissionCollectionToDtoMapper;
|
private RepositoryPermissionCollectionToDtoMapper repositoryPermissionCollectionToDtoMapper;
|
||||||
private ResourceLinks resourceLinks;
|
private ResourceLinks resourceLinks;
|
||||||
private final RepositoryManager manager;
|
private final RepositoryManager manager;
|
||||||
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public PermissionRootResource(PermissionDtoToPermissionMapper dtoToModelMapper, PermissionToPermissionDtoMapper modelToDtoMapper, PermissionCollectionToDtoMapper permissionCollectionToDtoMapper, ResourceLinks resourceLinks, RepositoryManager manager) {
|
public PermissionRootResource(PermissionDtoToPermissionMapper dtoToModelMapper, RepositoryPermissionToRepositoryPermissionDtoMapper modelToDtoMapper, RepositoryPermissionCollectionToDtoMapper repositoryPermissionCollectionToDtoMapper, ResourceLinks resourceLinks, RepositoryManager manager) {
|
||||||
this.dtoToModelMapper = dtoToModelMapper;
|
this.dtoToModelMapper = dtoToModelMapper;
|
||||||
this.modelToDtoMapper = modelToDtoMapper;
|
this.modelToDtoMapper = modelToDtoMapper;
|
||||||
this.permissionCollectionToDtoMapper = permissionCollectionToDtoMapper;
|
this.repositoryPermissionCollectionToDtoMapper = repositoryPermissionCollectionToDtoMapper;
|
||||||
this.resourceLinks = resourceLinks;
|
this.resourceLinks = resourceLinks;
|
||||||
this.manager = manager;
|
this.manager = manager;
|
||||||
}
|
}
|
||||||
@@ -74,7 +73,7 @@ public class PermissionRootResource {
|
|||||||
@TypeHint(TypeHint.NO_CONTENT.class)
|
@TypeHint(TypeHint.NO_CONTENT.class)
|
||||||
@Consumes(VndMediaType.PERMISSION)
|
@Consumes(VndMediaType.PERMISSION)
|
||||||
@Path("")
|
@Path("")
|
||||||
public Response create(@PathParam("namespace") String namespace, @PathParam("name") String name,@Valid PermissionDto permission) {
|
public Response create(@PathParam("namespace") String namespace, @PathParam("name") String name,@Valid RepositoryPermissionDto permission) {
|
||||||
log.info("try to add new permission: {}", permission);
|
log.info("try to add new permission: {}", permission);
|
||||||
Repository repository = load(namespace, name);
|
Repository repository = load(namespace, name);
|
||||||
RepositoryPermissions.permissionWrite(repository).check();
|
RepositoryPermissions.permissionWrite(repository).check();
|
||||||
@@ -101,7 +100,7 @@ public class PermissionRootResource {
|
|||||||
@ResponseCode(code = 500, condition = "internal server error")
|
@ResponseCode(code = 500, condition = "internal server error")
|
||||||
})
|
})
|
||||||
@Produces(VndMediaType.PERMISSION)
|
@Produces(VndMediaType.PERMISSION)
|
||||||
@TypeHint(PermissionDto.class)
|
@TypeHint(RepositoryPermissionDto.class)
|
||||||
@Path("{permission-name}")
|
@Path("{permission-name}")
|
||||||
public Response get(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("permission-name") String permissionName) {
|
public Response get(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("permission-name") String permissionName) {
|
||||||
Repository repository = load(namespace, name);
|
Repository repository = load(namespace, name);
|
||||||
@@ -112,7 +111,7 @@ public class PermissionRootResource {
|
|||||||
.filter(filterPermission(permissionName))
|
.filter(filterPermission(permissionName))
|
||||||
.map(permission -> modelToDtoMapper.map(permission, repository))
|
.map(permission -> modelToDtoMapper.map(permission, repository))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElseThrow(() -> notFound(entity(Permission.class, namespace).in(Repository.class, namespace + "/" + name)))
|
.orElseThrow(() -> notFound(entity(RepositoryPermission.class, namespace).in(Repository.class, namespace + "/" + name)))
|
||||||
).build();
|
).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,12 +131,12 @@ public class PermissionRootResource {
|
|||||||
@ResponseCode(code = 500, condition = "internal server error")
|
@ResponseCode(code = 500, condition = "internal server error")
|
||||||
})
|
})
|
||||||
@Produces(VndMediaType.PERMISSION)
|
@Produces(VndMediaType.PERMISSION)
|
||||||
@TypeHint(PermissionDto.class)
|
@TypeHint(RepositoryPermissionDto.class)
|
||||||
@Path("")
|
@Path("")
|
||||||
public Response getAll(@PathParam("namespace") String namespace, @PathParam("name") String name) {
|
public Response getAll(@PathParam("namespace") String namespace, @PathParam("name") String name) {
|
||||||
Repository repository = load(namespace, name);
|
Repository repository = load(namespace, name);
|
||||||
RepositoryPermissions.permissionRead(repository).check();
|
RepositoryPermissions.permissionRead(repository).check();
|
||||||
return Response.ok(permissionCollectionToDtoMapper.map(repository)).build();
|
return Response.ok(repositoryPermissionCollectionToDtoMapper.map(repository)).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -161,23 +160,23 @@ public class PermissionRootResource {
|
|||||||
public Response update(@PathParam("namespace") String namespace,
|
public Response update(@PathParam("namespace") String namespace,
|
||||||
@PathParam("name") String name,
|
@PathParam("name") String name,
|
||||||
@PathParam("permission-name") String permissionName,
|
@PathParam("permission-name") String permissionName,
|
||||||
@Valid PermissionDto permission) {
|
@Valid RepositoryPermissionDto permission) {
|
||||||
log.info("try to update the permission with name: {}. the modified permission is: {}", permissionName, permission);
|
log.info("try to update the permission with name: {}. the modified permission is: {}", permissionName, permission);
|
||||||
Repository repository = load(namespace, name);
|
Repository repository = load(namespace, name);
|
||||||
RepositoryPermissions.permissionWrite(repository).check();
|
RepositoryPermissions.permissionWrite(repository).check();
|
||||||
String extractedPermissionName = getPermissionName(permissionName);
|
String extractedPermissionName = getPermissionName(permissionName);
|
||||||
if (!isPermissionExist(new PermissionDto(extractedPermissionName, isGroupPermission(permissionName)), repository)) {
|
if (!isPermissionExist(new RepositoryPermissionDto(extractedPermissionName, isGroupPermission(permissionName)), repository)) {
|
||||||
throw notFound(entity(Permission.class, namespace).in(Repository.class, namespace + "/" + name));
|
throw notFound(entity(RepositoryPermission.class, namespace).in(Repository.class, namespace + "/" + name));
|
||||||
}
|
}
|
||||||
permission.setGroupPermission(isGroupPermission(permissionName));
|
permission.setGroupPermission(isGroupPermission(permissionName));
|
||||||
if (!extractedPermissionName.equals(permission.getName())) {
|
if (!extractedPermissionName.equals(permission.getName())) {
|
||||||
checkPermissionAlreadyExists(permission, repository);
|
checkPermissionAlreadyExists(permission, repository);
|
||||||
}
|
}
|
||||||
Permission existingPermission = repository.getPermissions()
|
RepositoryPermission existingPermission = repository.getPermissions()
|
||||||
.stream()
|
.stream()
|
||||||
.filter(filterPermission(permissionName))
|
.filter(filterPermission(permissionName))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElseThrow(() -> notFound(entity(Permission.class, namespace).in(Repository.class, namespace + "/" + name)));
|
.orElseThrow(() -> notFound(entity(RepositoryPermission.class, namespace).in(Repository.class, namespace + "/" + name)));
|
||||||
dtoToModelMapper.modify(existingPermission, permission);
|
dtoToModelMapper.modify(existingPermission, permission);
|
||||||
manager.modify(repository);
|
manager.modify(repository);
|
||||||
log.info("the permission with name: {} is updated.", permissionName);
|
log.info("the permission with name: {} is updated.", permissionName);
|
||||||
@@ -216,7 +215,7 @@ public class PermissionRootResource {
|
|||||||
return Response.noContent().build();
|
return Response.noContent().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
Predicate<Permission> filterPermission(String permissionName) {
|
Predicate<RepositoryPermission> filterPermission(String permissionName) {
|
||||||
return permission -> getPermissionName(permissionName).equals(permission.getName())
|
return permission -> getPermissionName(permissionName).equals(permission.getName())
|
||||||
&&
|
&&
|
||||||
permission.isGroupPermission() == isGroupPermission(permissionName);
|
permission.isGroupPermission() == isGroupPermission(permissionName);
|
||||||
@@ -255,13 +254,13 @@ public class PermissionRootResource {
|
|||||||
* @param repository the repository to be inspected
|
* @param repository the repository to be inspected
|
||||||
* @throws AlreadyExistsException if the permission already exists in the repository
|
* @throws AlreadyExistsException if the permission already exists in the repository
|
||||||
*/
|
*/
|
||||||
private void checkPermissionAlreadyExists(PermissionDto permission, Repository repository) {
|
private void checkPermissionAlreadyExists(RepositoryPermissionDto permission, Repository repository) {
|
||||||
if (isPermissionExist(permission, repository)) {
|
if (isPermissionExist(permission, repository)) {
|
||||||
throw alreadyExists(entity("permission", permission.getName()).in(repository));
|
throw alreadyExists(entity("permission", permission.getName()).in(repository));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isPermissionExist(PermissionDto permission, Repository repository) {
|
private boolean isPermissionExist(RepositoryPermissionDto permission, Repository repository) {
|
||||||
return repository.getPermissions()
|
return repository.getPermissions()
|
||||||
.stream()
|
.stream()
|
||||||
.anyMatch(p -> p.getName().equals(permission.getName()) && p.isGroupPermission() == permission.isGroupPermission());
|
.anyMatch(p -> p.getName().equals(permission.getName()) && p.isGroupPermission() == permission.isGroupPermission());
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import com.webcohesion.enunciate.metadata.rs.ResponseHeaders;
|
|||||||
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
|
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
|
||||||
import com.webcohesion.enunciate.metadata.rs.TypeHint;
|
import com.webcohesion.enunciate.metadata.rs.TypeHint;
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
import sonia.scm.repository.Permission;
|
import sonia.scm.repository.RepositoryPermission;
|
||||||
import sonia.scm.repository.PermissionType;
|
import sonia.scm.repository.PermissionType;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryManager;
|
import sonia.scm.repository.RepositoryManager;
|
||||||
@@ -100,7 +100,7 @@ public class RepositoryCollectionResource {
|
|||||||
|
|
||||||
private Repository createModelObjectFromDto(@Valid RepositoryDto repositoryDto) {
|
private Repository createModelObjectFromDto(@Valid RepositoryDto repositoryDto) {
|
||||||
Repository repository = dtoToRepositoryMapper.map(repositoryDto, null);
|
Repository repository = dtoToRepositoryMapper.map(repositoryDto, null);
|
||||||
repository.setPermissions(singletonList(new Permission(currentUser(), PermissionType.OWNER)));
|
repository.setPermissions(singletonList(new RepositoryPermission(currentUser(), PermissionType.OWNER)));
|
||||||
return repository;
|
return repository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,23 +14,23 @@ import static de.otto.edison.hal.Link.link;
|
|||||||
import static de.otto.edison.hal.Links.linkingTo;
|
import static de.otto.edison.hal.Links.linkingTo;
|
||||||
import static java.util.stream.Collectors.toList;
|
import static java.util.stream.Collectors.toList;
|
||||||
|
|
||||||
public class PermissionCollectionToDtoMapper {
|
public class RepositoryPermissionCollectionToDtoMapper {
|
||||||
|
|
||||||
private final ResourceLinks resourceLinks;
|
private final ResourceLinks resourceLinks;
|
||||||
private final PermissionToPermissionDtoMapper permissionToPermissionDtoMapper;
|
private final RepositoryPermissionToRepositoryPermissionDtoMapper repositoryPermissionToRepositoryPermissionDtoMapper;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public PermissionCollectionToDtoMapper(PermissionToPermissionDtoMapper permissionToPermissionDtoMapper, ResourceLinks resourceLinks) {
|
public RepositoryPermissionCollectionToDtoMapper(RepositoryPermissionToRepositoryPermissionDtoMapper repositoryPermissionToRepositoryPermissionDtoMapper, ResourceLinks resourceLinks) {
|
||||||
this.resourceLinks = resourceLinks;
|
this.resourceLinks = resourceLinks;
|
||||||
this.permissionToPermissionDtoMapper = permissionToPermissionDtoMapper;
|
this.repositoryPermissionToRepositoryPermissionDtoMapper = repositoryPermissionToRepositoryPermissionDtoMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HalRepresentation map(Repository repository) {
|
public HalRepresentation map(Repository repository) {
|
||||||
List<PermissionDto> permissionDtoList = repository.getPermissions()
|
List<RepositoryPermissionDto> repositoryPermissionDtoList = repository.getPermissions()
|
||||||
.stream()
|
.stream()
|
||||||
.map(permission -> permissionToPermissionDtoMapper.map(permission, repository))
|
.map(permission -> repositoryPermissionToRepositoryPermissionDtoMapper.map(permission, repository))
|
||||||
.collect(toList());
|
.collect(toList());
|
||||||
return new HalRepresentation(createLinks(repository), embedDtos(permissionDtoList));
|
return new HalRepresentation(createLinks(repository), embedDtos(repositoryPermissionDtoList));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Links createLinks(Repository repository) {
|
private Links createLinks(Repository repository) {
|
||||||
@@ -43,9 +43,9 @@ public class PermissionCollectionToDtoMapper {
|
|||||||
return linksBuilder.build();
|
return linksBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Embedded embedDtos(List<PermissionDto> permissionDtoList) {
|
private Embedded embedDtos(List<RepositoryPermissionDto> repositoryPermissionDtoList) {
|
||||||
return embeddedBuilder()
|
return embeddedBuilder()
|
||||||
.with("permissions", permissionDtoList)
|
.with("permissions", repositoryPermissionDtoList)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,7 @@ import javax.validation.constraints.Pattern;
|
|||||||
import static sonia.scm.api.v2.ValidationConstraints.USER_GROUP_PATTERN;
|
import static sonia.scm.api.v2.ValidationConstraints.USER_GROUP_PATTERN;
|
||||||
|
|
||||||
@Getter @Setter @ToString @NoArgsConstructor
|
@Getter @Setter @ToString @NoArgsConstructor
|
||||||
public class PermissionDto extends HalRepresentation {
|
public class RepositoryPermissionDto extends HalRepresentation {
|
||||||
|
|
||||||
public static final String GROUP_PREFIX = "@";
|
public static final String GROUP_PREFIX = "@";
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ public class PermissionDto extends HalRepresentation {
|
|||||||
|
|
||||||
private boolean groupPermission = false;
|
private boolean groupPermission = false;
|
||||||
|
|
||||||
public PermissionDto(String permissionName, boolean groupPermission) {
|
public RepositoryPermissionDto(String permissionName, boolean groupPermission) {
|
||||||
name = permissionName;
|
name = permissionName;
|
||||||
this.groupPermission = groupPermission;
|
this.groupPermission = groupPermission;
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ import org.mapstruct.Context;
|
|||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.Mapping;
|
import org.mapstruct.Mapping;
|
||||||
import org.mapstruct.MappingTarget;
|
import org.mapstruct.MappingTarget;
|
||||||
import sonia.scm.repository.Permission;
|
import sonia.scm.repository.RepositoryPermission;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryPermissions;
|
import sonia.scm.repository.RepositoryPermissions;
|
||||||
|
|
||||||
@@ -16,16 +16,16 @@ import java.util.Optional;
|
|||||||
|
|
||||||
import static de.otto.edison.hal.Link.link;
|
import static de.otto.edison.hal.Link.link;
|
||||||
import static de.otto.edison.hal.Links.linkingTo;
|
import static de.otto.edison.hal.Links.linkingTo;
|
||||||
import static sonia.scm.api.v2.resources.PermissionDto.GROUP_PREFIX;
|
import static sonia.scm.api.v2.resources.RepositoryPermissionDto.GROUP_PREFIX;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public abstract class PermissionToPermissionDtoMapper {
|
public abstract class RepositoryPermissionToRepositoryPermissionDtoMapper {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ResourceLinks resourceLinks;
|
private ResourceLinks resourceLinks;
|
||||||
|
|
||||||
@Mapping(target = "attributes", ignore = true) // We do not map HAL attributes
|
@Mapping(target = "attributes", ignore = true) // We do not map HAL attributes
|
||||||
public abstract PermissionDto map(Permission permission, @Context Repository repository);
|
public abstract RepositoryPermissionDto map(RepositoryPermission permission, @Context Repository repository);
|
||||||
|
|
||||||
|
|
||||||
@BeforeMapping
|
@BeforeMapping
|
||||||
@@ -40,7 +40,7 @@ public abstract class PermissionToPermissionDtoMapper {
|
|||||||
* @param repository the repository
|
* @param repository the repository
|
||||||
*/
|
*/
|
||||||
@AfterMapping
|
@AfterMapping
|
||||||
void appendLinks(@MappingTarget PermissionDto target, @Context Repository repository) {
|
void appendLinks(@MappingTarget RepositoryPermissionDto target, @Context Repository repository) {
|
||||||
String permissionName = getUrlPermissionName(target);
|
String permissionName = getUrlPermissionName(target);
|
||||||
Links.Builder linksBuilder = linkingTo()
|
Links.Builder linksBuilder = linkingTo()
|
||||||
.self(resourceLinks.permission().self(repository.getNamespace(), repository.getName(), permissionName));
|
.self(resourceLinks.permission().self(repository.getNamespace(), repository.getName(), permissionName));
|
||||||
@@ -51,9 +51,9 @@ public abstract class PermissionToPermissionDtoMapper {
|
|||||||
target.add(linksBuilder.build());
|
target.add(linksBuilder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUrlPermissionName(PermissionDto permissionDto) {
|
public String getUrlPermissionName(RepositoryPermissionDto repositoryPermissionDto) {
|
||||||
return Optional.of(permissionDto.getName())
|
return Optional.of(repositoryPermissionDto.getName())
|
||||||
.filter(p -> !permissionDto.isGroupPermission())
|
.filter(p -> !repositoryPermissionDto.isGroupPermission())
|
||||||
.orElse(GROUP_PREFIX + permissionDto.getName());
|
.orElse(GROUP_PREFIX + repositoryPermissionDto.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,7 @@ import sonia.scm.cache.CacheManager;
|
|||||||
import sonia.scm.group.GroupNames;
|
import sonia.scm.group.GroupNames;
|
||||||
import sonia.scm.group.GroupPermissions;
|
import sonia.scm.group.GroupPermissions;
|
||||||
import sonia.scm.plugin.Extension;
|
import sonia.scm.plugin.Extension;
|
||||||
import sonia.scm.repository.Permission;
|
import sonia.scm.repository.RepositoryPermission;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryDAO;
|
import sonia.scm.repository.RepositoryDAO;
|
||||||
import sonia.scm.user.User;
|
import sonia.scm.user.User;
|
||||||
@@ -62,7 +62,6 @@ import sonia.scm.user.UserPermissions;
|
|||||||
import sonia.scm.util.Util;
|
import sonia.scm.util.Util;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
@@ -199,13 +198,13 @@ public class DefaultAuthorizationCollector implements AuthorizationCollector
|
|||||||
private void collectRepositoryPermissions(Builder<String> builder,
|
private void collectRepositoryPermissions(Builder<String> builder,
|
||||||
Repository repository, User user, GroupNames groups)
|
Repository repository, User user, GroupNames groups)
|
||||||
{
|
{
|
||||||
Collection<Permission> repositoryPermissions
|
Collection<RepositoryPermission> repositoryPermissions
|
||||||
= repository.getPermissions();
|
= repository.getPermissions();
|
||||||
|
|
||||||
if (Util.isNotEmpty(repositoryPermissions))
|
if (Util.isNotEmpty(repositoryPermissions))
|
||||||
{
|
{
|
||||||
boolean hasPermission = false;
|
boolean hasPermission = false;
|
||||||
for (sonia.scm.repository.Permission permission : repositoryPermissions)
|
for (RepositoryPermission permission : repositoryPermissions)
|
||||||
{
|
{
|
||||||
hasPermission = isUserPermitted(user, groups, permission);
|
hasPermission = isUserPermitted(user, groups, permission);
|
||||||
if (hasPermission)
|
if (hasPermission)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package sonia.scm.security;
|
package sonia.scm.security;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -8,6 +9,7 @@ public class PermissionAssigner {
|
|||||||
|
|
||||||
private final SecuritySystem securitySystem;
|
private final SecuritySystem securitySystem;
|
||||||
|
|
||||||
|
@Inject
|
||||||
public PermissionAssigner(SecuritySystem securitySystem) {
|
public PermissionAssigner(SecuritySystem securitySystem) {
|
||||||
this.securitySystem = securitySystem;
|
this.securitySystem = securitySystem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import org.junit.jupiter.api.TestFactory;
|
|||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Permission;
|
import sonia.scm.repository.RepositoryPermission;
|
||||||
import sonia.scm.repository.PermissionType;
|
import sonia.scm.repository.PermissionType;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryManager;
|
import sonia.scm.repository.RepositoryManager;
|
||||||
@@ -58,7 +58,7 @@ import static org.mockito.Mockito.mock;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import static org.mockito.MockitoAnnotations.initMocks;
|
import static org.mockito.MockitoAnnotations.initMocks;
|
||||||
import static sonia.scm.api.v2.resources.DispatcherMock.createDispatcher;
|
import static sonia.scm.api.v2.resources.DispatcherMock.createDispatcher;
|
||||||
import static sonia.scm.api.v2.resources.PermissionDto.GROUP_PREFIX;
|
import static sonia.scm.api.v2.resources.RepositoryPermissionDto.GROUP_PREFIX;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@SubjectAware(
|
@SubjectAware(
|
||||||
@@ -77,14 +77,14 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
private static final String PATH_OF_ALL_PERMISSIONS = REPOSITORY_NAMESPACE + "/" + REPOSITORY_NAME + "/permissions/";
|
private static final String PATH_OF_ALL_PERMISSIONS = REPOSITORY_NAMESPACE + "/" + REPOSITORY_NAME + "/permissions/";
|
||||||
private static final String PATH_OF_ONE_PERMISSION = PATH_OF_ALL_PERMISSIONS + PERMISSION_NAME;
|
private static final String PATH_OF_ONE_PERMISSION = PATH_OF_ALL_PERMISSIONS + PERMISSION_NAME;
|
||||||
private static final String PERMISSION_TEST_PAYLOAD = "{ \"name\" : \"permission_name\", \"type\" : \"READ\" }";
|
private static final String PERMISSION_TEST_PAYLOAD = "{ \"name\" : \"permission_name\", \"type\" : \"READ\" }";
|
||||||
private static final ArrayList<Permission> TEST_PERMISSIONS = Lists
|
private static final ArrayList<RepositoryPermission> TEST_PERMISSIONS = Lists
|
||||||
.newArrayList(
|
.newArrayList(
|
||||||
new Permission("user_write", PermissionType.WRITE, false),
|
new RepositoryPermission("user_write", PermissionType.WRITE, false),
|
||||||
new Permission("user_read", PermissionType.READ, false),
|
new RepositoryPermission("user_read", PermissionType.READ, false),
|
||||||
new Permission("user_owner", PermissionType.OWNER, false),
|
new RepositoryPermission("user_owner", PermissionType.OWNER, false),
|
||||||
new Permission("group_read", PermissionType.READ, true),
|
new RepositoryPermission("group_read", PermissionType.READ, true),
|
||||||
new Permission("group_write", PermissionType.WRITE, true),
|
new RepositoryPermission("group_write", PermissionType.WRITE, true),
|
||||||
new Permission("group_owner", PermissionType.OWNER, true)
|
new RepositoryPermission("group_owner", PermissionType.OWNER, true)
|
||||||
);
|
);
|
||||||
private final ExpectedRequest requestGETAllPermissions = new ExpectedRequest()
|
private final ExpectedRequest requestGETAllPermissions = new ExpectedRequest()
|
||||||
.description("GET all permissions")
|
.description("GET all permissions")
|
||||||
@@ -121,12 +121,12 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(baseUri);
|
private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(baseUri);
|
||||||
|
|
||||||
@InjectMocks
|
@InjectMocks
|
||||||
private PermissionToPermissionDtoMapperImpl permissionToPermissionDtoMapper;
|
private RepositoryPermissionToRepositoryPermissionDtoMapperImpl permissionToPermissionDtoMapper;
|
||||||
|
|
||||||
@InjectMocks
|
@InjectMocks
|
||||||
private PermissionDtoToPermissionMapperImpl permissionDtoToPermissionMapper;
|
private PermissionDtoToPermissionMapperImpl permissionDtoToPermissionMapper;
|
||||||
|
|
||||||
private PermissionCollectionToDtoMapper permissionCollectionToDtoMapper;
|
private RepositoryPermissionCollectionToDtoMapper repositoryPermissionCollectionToDtoMapper;
|
||||||
|
|
||||||
private PermissionRootResource permissionRootResource;
|
private PermissionRootResource permissionRootResource;
|
||||||
|
|
||||||
@@ -137,8 +137,8 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
@Before
|
@Before
|
||||||
public void prepareEnvironment() {
|
public void prepareEnvironment() {
|
||||||
initMocks(this);
|
initMocks(this);
|
||||||
permissionCollectionToDtoMapper = new PermissionCollectionToDtoMapper(permissionToPermissionDtoMapper, resourceLinks);
|
repositoryPermissionCollectionToDtoMapper = new RepositoryPermissionCollectionToDtoMapper(permissionToPermissionDtoMapper, resourceLinks);
|
||||||
permissionRootResource = new PermissionRootResource(permissionDtoToPermissionMapper, permissionToPermissionDtoMapper, permissionCollectionToDtoMapper, resourceLinks, repositoryManager);
|
permissionRootResource = new PermissionRootResource(permissionDtoToPermissionMapper, permissionToPermissionDtoMapper, repositoryPermissionCollectionToDtoMapper, resourceLinks, repositoryManager);
|
||||||
super.permissionRootResource = Providers.of(permissionRootResource);
|
super.permissionRootResource = Providers.of(permissionRootResource);
|
||||||
dispatcher = createDispatcher(getRepositoryRootResource());
|
dispatcher = createDispatcher(getRepositoryRootResource());
|
||||||
subjectThreadState.bind();
|
subjectThreadState.bind();
|
||||||
@@ -207,7 +207,7 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
@Test
|
@Test
|
||||||
public void shouldGetPermissionByName() throws URISyntaxException {
|
public void shouldGetPermissionByName() throws URISyntaxException {
|
||||||
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_READ);
|
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_READ);
|
||||||
Permission expectedPermission = TEST_PERMISSIONS.get(0);
|
RepositoryPermission expectedPermission = TEST_PERMISSIONS.get(0);
|
||||||
assertExpectedRequest(requestGETPermission
|
assertExpectedRequest(requestGETPermission
|
||||||
.expectedResponseStatus(200)
|
.expectedResponseStatus(200)
|
||||||
.path(PATH_OF_ALL_PERMISSIONS + expectedPermission.getName())
|
.path(PATH_OF_ALL_PERMISSIONS + expectedPermission.getName())
|
||||||
@@ -215,8 +215,8 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
String body = response.getContentAsString();
|
String body = response.getContentAsString();
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
try {
|
try {
|
||||||
PermissionDto actualPermissionDto = mapper.readValue(body, PermissionDto.class);
|
RepositoryPermissionDto actualRepositoryPermissionDto = mapper.readValue(body, RepositoryPermissionDto.class);
|
||||||
assertThat(actualPermissionDto)
|
assertThat(actualRepositoryPermissionDto)
|
||||||
.as("response payload match permission object model")
|
.as("response payload match permission object model")
|
||||||
.isEqualToComparingFieldByFieldRecursively(getExpectedPermissionDto(expectedPermission, PERMISSION_READ))
|
.isEqualToComparingFieldByFieldRecursively(getExpectedPermissionDto(expectedPermission, PERMISSION_READ))
|
||||||
;
|
;
|
||||||
@@ -259,10 +259,10 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
@Test
|
@Test
|
||||||
public void shouldGetCreatedPermissions() throws URISyntaxException {
|
public void shouldGetCreatedPermissions() throws URISyntaxException {
|
||||||
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_WRITE);
|
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_WRITE);
|
||||||
Permission newPermission = new Permission("new_group_perm", PermissionType.WRITE, true);
|
RepositoryPermission newPermission = new RepositoryPermission("new_group_perm", PermissionType.WRITE, true);
|
||||||
ArrayList<Permission> permissions = Lists.newArrayList(TEST_PERMISSIONS);
|
ArrayList<RepositoryPermission> permissions = Lists.newArrayList(TEST_PERMISSIONS);
|
||||||
permissions.add(newPermission);
|
permissions.add(newPermission);
|
||||||
ImmutableList<Permission> expectedPermissions = ImmutableList.copyOf(permissions);
|
ImmutableList<RepositoryPermission> expectedPermissions = ImmutableList.copyOf(permissions);
|
||||||
assertExpectedRequest(requestPOSTPermission
|
assertExpectedRequest(requestPOSTPermission
|
||||||
.content("{\"name\" : \"" + newPermission.getName() + "\" , \"type\" : \"WRITE\" , \"groupPermission\" : true}")
|
.content("{\"name\" : \"" + newPermission.getName() + "\" , \"type\" : \"WRITE\" , \"groupPermission\" : true}")
|
||||||
.expectedResponseStatus(201)
|
.expectedResponseStatus(201)
|
||||||
@@ -276,7 +276,7 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
@Test
|
@Test
|
||||||
public void shouldNotAddExistingPermission() throws URISyntaxException {
|
public void shouldNotAddExistingPermission() throws URISyntaxException {
|
||||||
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_WRITE);
|
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_WRITE);
|
||||||
Permission newPermission = TEST_PERMISSIONS.get(0);
|
RepositoryPermission newPermission = TEST_PERMISSIONS.get(0);
|
||||||
assertExpectedRequest(requestPOSTPermission
|
assertExpectedRequest(requestPOSTPermission
|
||||||
.content("{\"name\" : \"" + newPermission.getName() + "\" , \"type\" : \"WRITE\" , \"groupPermission\" : false}")
|
.content("{\"name\" : \"" + newPermission.getName() + "\" , \"type\" : \"WRITE\" , \"groupPermission\" : false}")
|
||||||
.expectedResponseStatus(409)
|
.expectedResponseStatus(409)
|
||||||
@@ -286,10 +286,10 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
@Test
|
@Test
|
||||||
public void shouldGetUpdatedPermissions() throws URISyntaxException {
|
public void shouldGetUpdatedPermissions() throws URISyntaxException {
|
||||||
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_WRITE);
|
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_WRITE);
|
||||||
Permission modifiedPermission = TEST_PERMISSIONS.get(0);
|
RepositoryPermission modifiedPermission = TEST_PERMISSIONS.get(0);
|
||||||
// modify the type to owner
|
// modify the type to owner
|
||||||
modifiedPermission.setType(PermissionType.OWNER);
|
modifiedPermission.setType(PermissionType.OWNER);
|
||||||
ImmutableList<Permission> expectedPermissions = ImmutableList.copyOf(TEST_PERMISSIONS);
|
ImmutableList<RepositoryPermission> expectedPermissions = ImmutableList.copyOf(TEST_PERMISSIONS);
|
||||||
assertExpectedRequest(requestPUTPermission
|
assertExpectedRequest(requestPUTPermission
|
||||||
.content("{\"name\" : \"" + modifiedPermission.getName() + "\" , \"type\" : \"OWNER\" , \"groupPermission\" : false}")
|
.content("{\"name\" : \"" + modifiedPermission.getName() + "\" , \"type\" : \"OWNER\" , \"groupPermission\" : false}")
|
||||||
.path(PATH_OF_ALL_PERMISSIONS + modifiedPermission.getName())
|
.path(PATH_OF_ALL_PERMISSIONS + modifiedPermission.getName())
|
||||||
@@ -305,8 +305,8 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
@Test
|
@Test
|
||||||
public void shouldDeletePermissions() throws URISyntaxException {
|
public void shouldDeletePermissions() throws URISyntaxException {
|
||||||
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_OWNER);
|
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_OWNER);
|
||||||
Permission deletedPermission = TEST_PERMISSIONS.get(0);
|
RepositoryPermission deletedPermission = TEST_PERMISSIONS.get(0);
|
||||||
ImmutableList<Permission> expectedPermissions = ImmutableList.copyOf(TEST_PERMISSIONS.subList(1, TEST_PERMISSIONS.size()));
|
ImmutableList<RepositoryPermission> expectedPermissions = ImmutableList.copyOf(TEST_PERMISSIONS.subList(1, TEST_PERMISSIONS.size()));
|
||||||
assertExpectedRequest(requestDELETEPermission
|
assertExpectedRequest(requestDELETEPermission
|
||||||
.path(PATH_OF_ALL_PERMISSIONS + deletedPermission.getName())
|
.path(PATH_OF_ALL_PERMISSIONS + deletedPermission.getName())
|
||||||
.expectedResponseStatus(204)
|
.expectedResponseStatus(204)
|
||||||
@@ -320,8 +320,8 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
@Test
|
@Test
|
||||||
public void deletingNotExistingPermissionShouldProcess() throws URISyntaxException {
|
public void deletingNotExistingPermissionShouldProcess() throws URISyntaxException {
|
||||||
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_OWNER);
|
createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_OWNER);
|
||||||
Permission deletedPermission = TEST_PERMISSIONS.get(0);
|
RepositoryPermission deletedPermission = TEST_PERMISSIONS.get(0);
|
||||||
ImmutableList<Permission> expectedPermissions = ImmutableList.copyOf(TEST_PERMISSIONS.subList(1, TEST_PERMISSIONS.size()));
|
ImmutableList<RepositoryPermission> expectedPermissions = ImmutableList.copyOf(TEST_PERMISSIONS.subList(1, TEST_PERMISSIONS.size()));
|
||||||
assertExpectedRequest(requestDELETEPermission
|
assertExpectedRequest(requestDELETEPermission
|
||||||
.path(PATH_OF_ALL_PERMISSIONS + deletedPermission.getName())
|
.path(PATH_OF_ALL_PERMISSIONS + deletedPermission.getName())
|
||||||
.expectedResponseStatus(204)
|
.expectedResponseStatus(204)
|
||||||
@@ -340,7 +340,7 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
assertGettingExpectedPermissions(expectedPermissions, PERMISSION_READ);
|
assertGettingExpectedPermissions(expectedPermissions, PERMISSION_READ);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertGettingExpectedPermissions(ImmutableList<Permission> expectedPermissions, String userPermission) throws URISyntaxException {
|
private void assertGettingExpectedPermissions(ImmutableList<RepositoryPermission> expectedPermissions, String userPermission) throws URISyntaxException {
|
||||||
assertExpectedRequest(requestGETAllPermissions
|
assertExpectedRequest(requestGETAllPermissions
|
||||||
.expectedResponseStatus(200)
|
.expectedResponseStatus(200)
|
||||||
.responseValidator((response) -> {
|
.responseValidator((response) -> {
|
||||||
@@ -349,16 +349,16 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
try {
|
try {
|
||||||
HalRepresentation halRepresentation = mapper.readValue(body, HalRepresentation.class);
|
HalRepresentation halRepresentation = mapper.readValue(body, HalRepresentation.class);
|
||||||
List<HalRepresentation> actualPermissionDtos = halRepresentation.getEmbedded().getItemsBy("permissions", HalRepresentation.class);
|
List<HalRepresentation> actualPermissionDtos = halRepresentation.getEmbedded().getItemsBy("permissions", HalRepresentation.class);
|
||||||
List<PermissionDto> permissionDtoStream = actualPermissionDtos.stream()
|
List<RepositoryPermissionDto> repositoryPermissionDtoStream = actualPermissionDtos.stream()
|
||||||
.map(hal -> {
|
.map(hal -> {
|
||||||
PermissionDto result = new PermissionDto();
|
RepositoryPermissionDto result = new RepositoryPermissionDto();
|
||||||
result.setName(hal.getAttribute("name").asText());
|
result.setName(hal.getAttribute("name").asText());
|
||||||
result.setType(hal.getAttribute("type").asText());
|
result.setType(hal.getAttribute("type").asText());
|
||||||
result.setGroupPermission(hal.getAttribute("groupPermission").asBoolean());
|
result.setGroupPermission(hal.getAttribute("groupPermission").asBoolean());
|
||||||
result.add(hal.getLinks());
|
result.add(hal.getLinks());
|
||||||
return result;
|
return result;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
assertThat(permissionDtoStream)
|
assertThat(repositoryPermissionDtoStream)
|
||||||
.as("response payload match permission object models")
|
.as("response payload match permission object models")
|
||||||
.hasSize(expectedPermissions.size())
|
.hasSize(expectedPermissions.size())
|
||||||
.usingRecursiveFieldByFieldElementComparator()
|
.usingRecursiveFieldByFieldElementComparator()
|
||||||
@@ -371,15 +371,15 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PermissionDto[] getExpectedPermissionDtos(ArrayList<Permission> permissions, String userPermission) {
|
private RepositoryPermissionDto[] getExpectedPermissionDtos(ArrayList<RepositoryPermission> permissions, String userPermission) {
|
||||||
return permissions
|
return permissions
|
||||||
.stream()
|
.stream()
|
||||||
.map(p -> getExpectedPermissionDto(p, userPermission))
|
.map(p -> getExpectedPermissionDto(p, userPermission))
|
||||||
.toArray(PermissionDto[]::new);
|
.toArray(RepositoryPermissionDto[]::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PermissionDto getExpectedPermissionDto(Permission permission, String userPermission) {
|
private RepositoryPermissionDto getExpectedPermissionDto(RepositoryPermission permission, String userPermission) {
|
||||||
PermissionDto result = new PermissionDto();
|
RepositoryPermissionDto result = new RepositoryPermissionDto();
|
||||||
result.setName(permission.getName());
|
result.setName(permission.getName());
|
||||||
result.setGroupPermission(permission.isGroupPermission());
|
result.setGroupPermission(permission.isGroupPermission());
|
||||||
result.setType(permission.getType().name());
|
result.setType(permission.getType().name());
|
||||||
@@ -411,7 +411,7 @@ public class PermissionRootResourceTest extends RepositoryTestBase {
|
|||||||
return mockRepository;
|
return mockRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createUserWithRepositoryAndPermissions(ArrayList<Permission> permissions, String userPermission) {
|
private void createUserWithRepositoryAndPermissions(ArrayList<RepositoryPermission> permissions, String userPermission) {
|
||||||
createUserWithRepository(userPermission).setPermissions(permissions);
|
createUserWithRepository(userPermission).setPermissions(permissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
import sonia.scm.repository.Permission;
|
import sonia.scm.repository.RepositoryPermission;
|
||||||
import sonia.scm.repository.PermissionType;
|
import sonia.scm.repository.PermissionType;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||||||
@SubjectAware(
|
@SubjectAware(
|
||||||
configuration = "classpath:sonia/scm/repository/shiro.ini"
|
configuration = "classpath:sonia/scm/repository/shiro.ini"
|
||||||
)
|
)
|
||||||
public class PermissionToPermissionDtoMapperTest {
|
public class RepositoryPermissionToRepositoryRepositoryPermissionDtoMapperTest {
|
||||||
|
|
||||||
@Rule
|
@Rule
|
||||||
public ShiroRule shiro = new ShiroRule();
|
public ShiroRule shiro = new ShiroRule();
|
||||||
@@ -30,31 +30,31 @@ public class PermissionToPermissionDtoMapperTest {
|
|||||||
private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(baseUri);
|
private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(baseUri);
|
||||||
|
|
||||||
@InjectMocks
|
@InjectMocks
|
||||||
PermissionToPermissionDtoMapperImpl mapper;
|
RepositoryPermissionToRepositoryPermissionDtoMapperImpl mapper;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@SubjectAware(username = "trillian", password = "secret")
|
@SubjectAware(username = "trillian", password = "secret")
|
||||||
public void shouldMapGroupPermissionCorrectly() {
|
public void shouldMapGroupPermissionCorrectly() {
|
||||||
Repository repository = getDummyRepository();
|
Repository repository = getDummyRepository();
|
||||||
Permission permission = new Permission("42", PermissionType.OWNER, true);
|
RepositoryPermission permission = new RepositoryPermission("42", PermissionType.OWNER, true);
|
||||||
|
|
||||||
PermissionDto permissionDto = mapper.map(permission, repository);
|
RepositoryPermissionDto repositoryPermissionDto = mapper.map(permission, repository);
|
||||||
|
|
||||||
assertThat(permissionDto.getLinks().getLinkBy("self").isPresent()).isTrue();
|
assertThat(repositoryPermissionDto.getLinks().getLinkBy("self").isPresent()).isTrue();
|
||||||
assertThat(permissionDto.getLinks().getLinkBy("self").get().getHref()).contains("@42");
|
assertThat(repositoryPermissionDto.getLinks().getLinkBy("self").get().getHref()).contains("@42");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@SubjectAware(username = "trillian", password = "secret")
|
@SubjectAware(username = "trillian", password = "secret")
|
||||||
public void shouldMapNonGroupPermissionCorrectly() {
|
public void shouldMapNonGroupPermissionCorrectly() {
|
||||||
Repository repository = getDummyRepository();
|
Repository repository = getDummyRepository();
|
||||||
Permission permission = new Permission("42", PermissionType.OWNER, false);
|
RepositoryPermission permission = new RepositoryPermission("42", PermissionType.OWNER, false);
|
||||||
|
|
||||||
PermissionDto permissionDto = mapper.map(permission, repository);
|
RepositoryPermissionDto repositoryPermissionDto = mapper.map(permission, repository);
|
||||||
|
|
||||||
assertThat(permissionDto.getLinks().getLinkBy("self").isPresent()).isTrue();
|
assertThat(repositoryPermissionDto.getLinks().getLinkBy("self").isPresent()).isTrue();
|
||||||
assertThat(permissionDto.getLinks().getLinkBy("self").get().getHref()).contains("42");
|
assertThat(repositoryPermissionDto.getLinks().getLinkBy("self").get().getHref()).contains("42");
|
||||||
assertThat(permissionDto.getLinks().getLinkBy("self").get().getHref()).doesNotContain("@");
|
assertThat(repositoryPermissionDto.getLinks().getLinkBy("self").get().getHref()).doesNotContain("@");
|
||||||
}
|
}
|
||||||
|
|
||||||
private Repository getDummyRepository() {
|
private Repository getDummyRepository() {
|
||||||
@@ -18,7 +18,7 @@ import org.mockito.InjectMocks;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import sonia.scm.PageResult;
|
import sonia.scm.PageResult;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Permission;
|
import sonia.scm.repository.RepositoryPermission;
|
||||||
import sonia.scm.repository.PermissionType;
|
import sonia.scm.repository.PermissionType;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryIsNotArchivedException;
|
import sonia.scm.repository.RepositoryIsNotArchivedException;
|
||||||
@@ -302,7 +302,7 @@ public class RepositoryRootResourceTest extends RepositoryTestBase {
|
|||||||
@Test
|
@Test
|
||||||
public void shouldNotOverwriteExistingPermissionsOnUpdate() throws Exception {
|
public void shouldNotOverwriteExistingPermissionsOnUpdate() throws Exception {
|
||||||
Repository existingRepository = mockRepository("space", "repo");
|
Repository existingRepository = mockRepository("space", "repo");
|
||||||
existingRepository.setPermissions(singletonList(new Permission("user", PermissionType.READ)));
|
existingRepository.setPermissions(singletonList(new RepositoryPermission("user", PermissionType.READ)));
|
||||||
|
|
||||||
URL url = Resources.getResource("sonia/scm/api/v2/repository-test-update.json");
|
URL url = Resources.getResource("sonia/scm/api/v2/repository-test-update.json");
|
||||||
byte[] repository = Resources.toByteArray(url);
|
byte[] repository = Resources.toByteArray(url);
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import org.junit.Test;
|
|||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import sonia.scm.repository.HealthCheckFailure;
|
import sonia.scm.repository.HealthCheckFailure;
|
||||||
import sonia.scm.repository.Permission;
|
import sonia.scm.repository.RepositoryPermission;
|
||||||
import sonia.scm.repository.PermissionType;
|
import sonia.scm.repository.PermissionType;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.api.Command;
|
import sonia.scm.repository.api.Command;
|
||||||
@@ -238,7 +238,7 @@ public class RepositoryToRepositoryDtoMapperTest {
|
|||||||
repository.setId("1");
|
repository.setId("1");
|
||||||
repository.setCreationDate(System.currentTimeMillis());
|
repository.setCreationDate(System.currentTimeMillis());
|
||||||
repository.setHealthCheckFailures(singletonList(new HealthCheckFailure("1", "summary", "url", "failure")));
|
repository.setHealthCheckFailures(singletonList(new HealthCheckFailure("1", "summary", "url", "failure")));
|
||||||
repository.setPermissions(singletonList(new Permission("permission", PermissionType.READ)));
|
repository.setPermissions(singletonList(new RepositoryPermission("permission", PermissionType.READ)));
|
||||||
|
|
||||||
return repository;
|
return repository;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ private long calculateAverage(List<Long> times) {
|
|||||||
|
|
||||||
private Repository createTestRepository(int number) {
|
private Repository createTestRepository(int number) {
|
||||||
Repository repository = new Repository(keyGenerator.createKey(), REPOSITORY_TYPE, "namespace", "repo-" + number);
|
Repository repository = new Repository(keyGenerator.createKey(), REPOSITORY_TYPE, "namespace", "repo-" + number);
|
||||||
repository.addPermission(new Permission("trillian", PermissionType.READ));
|
repository.addPermission(new RepositoryPermission("trillian", PermissionType.READ));
|
||||||
return repository;
|
return repository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import sonia.scm.repository.PermissionType;
|
|||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryEvent;
|
import sonia.scm.repository.RepositoryEvent;
|
||||||
import sonia.scm.repository.RepositoryModificationEvent;
|
import sonia.scm.repository.RepositoryModificationEvent;
|
||||||
|
import sonia.scm.repository.RepositoryPermission;
|
||||||
import sonia.scm.repository.RepositoryTestData;
|
import sonia.scm.repository.RepositoryTestData;
|
||||||
import sonia.scm.user.User;
|
import sonia.scm.user.User;
|
||||||
import sonia.scm.user.UserEvent;
|
import sonia.scm.user.UserEvent;
|
||||||
@@ -173,10 +174,10 @@ public class AuthorizationChangedEventProducerTest {
|
|||||||
{
|
{
|
||||||
Repository repositoryModified = RepositoryTestData.createHeartOfGold();
|
Repository repositoryModified = RepositoryTestData.createHeartOfGold();
|
||||||
repositoryModified.setName("test123");
|
repositoryModified.setName("test123");
|
||||||
repositoryModified.setPermissions(Lists.newArrayList(new sonia.scm.repository.Permission("test")));
|
repositoryModified.setPermissions(Lists.newArrayList(new RepositoryPermission("test")));
|
||||||
|
|
||||||
Repository repository = RepositoryTestData.createHeartOfGold();
|
Repository repository = RepositoryTestData.createHeartOfGold();
|
||||||
repository.setPermissions(Lists.newArrayList(new sonia.scm.repository.Permission("test")));
|
repository.setPermissions(Lists.newArrayList(new RepositoryPermission("test")));
|
||||||
|
|
||||||
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.BEFORE_CREATE, repositoryModified, repository));
|
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.BEFORE_CREATE, repositoryModified, repository));
|
||||||
assertEventIsNotFired();
|
assertEventIsNotFired();
|
||||||
@@ -184,18 +185,18 @@ public class AuthorizationChangedEventProducerTest {
|
|||||||
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.CREATE, repositoryModified, repository));
|
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.CREATE, repositoryModified, repository));
|
||||||
assertEventIsNotFired();
|
assertEventIsNotFired();
|
||||||
|
|
||||||
repositoryModified.setPermissions(Lists.newArrayList(new sonia.scm.repository.Permission("test")));
|
repositoryModified.setPermissions(Lists.newArrayList(new RepositoryPermission("test")));
|
||||||
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.CREATE, repositoryModified, repository));
|
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.CREATE, repositoryModified, repository));
|
||||||
assertEventIsNotFired();
|
assertEventIsNotFired();
|
||||||
|
|
||||||
repositoryModified.setPermissions(Lists.newArrayList(new sonia.scm.repository.Permission("test123")));
|
repositoryModified.setPermissions(Lists.newArrayList(new RepositoryPermission("test123")));
|
||||||
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.CREATE, repositoryModified, repository));
|
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.CREATE, repositoryModified, repository));
|
||||||
assertGlobalEventIsFired();
|
assertGlobalEventIsFired();
|
||||||
|
|
||||||
resetStoredEvent();
|
resetStoredEvent();
|
||||||
|
|
||||||
repositoryModified.setPermissions(
|
repositoryModified.setPermissions(
|
||||||
Lists.newArrayList(new sonia.scm.repository.Permission("test", PermissionType.READ, true))
|
Lists.newArrayList(new RepositoryPermission("test", PermissionType.READ, true))
|
||||||
);
|
);
|
||||||
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.CREATE, repositoryModified, repository));
|
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.CREATE, repositoryModified, repository));
|
||||||
assertGlobalEventIsFired();
|
assertGlobalEventIsFired();
|
||||||
@@ -203,7 +204,7 @@ public class AuthorizationChangedEventProducerTest {
|
|||||||
resetStoredEvent();
|
resetStoredEvent();
|
||||||
|
|
||||||
repositoryModified.setPermissions(
|
repositoryModified.setPermissions(
|
||||||
Lists.newArrayList(new sonia.scm.repository.Permission("test", PermissionType.WRITE))
|
Lists.newArrayList(new RepositoryPermission("test", PermissionType.WRITE))
|
||||||
);
|
);
|
||||||
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.CREATE, repositoryModified, repository));
|
producer.onEvent(new RepositoryModificationEvent(HandlerEventType.CREATE, repositoryModified, repository));
|
||||||
assertGlobalEventIsFired();
|
assertGlobalEventIsFired();
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ import sonia.scm.group.GroupNames;
|
|||||||
import sonia.scm.repository.PermissionType;
|
import sonia.scm.repository.PermissionType;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryDAO;
|
import sonia.scm.repository.RepositoryDAO;
|
||||||
|
import sonia.scm.repository.RepositoryPermission;
|
||||||
import sonia.scm.repository.RepositoryTestData;
|
import sonia.scm.repository.RepositoryTestData;
|
||||||
import sonia.scm.user.User;
|
import sonia.scm.user.User;
|
||||||
import sonia.scm.user.UserTestData;
|
import sonia.scm.user.UserTestData;
|
||||||
@@ -192,10 +193,10 @@ public class DefaultAuthorizationCollectorTest {
|
|||||||
authenticate(UserTestData.createTrillian(), group);
|
authenticate(UserTestData.createTrillian(), group);
|
||||||
Repository heartOfGold = RepositoryTestData.createHeartOfGold();
|
Repository heartOfGold = RepositoryTestData.createHeartOfGold();
|
||||||
heartOfGold.setId("one");
|
heartOfGold.setId("one");
|
||||||
heartOfGold.setPermissions(Lists.newArrayList(new sonia.scm.repository.Permission("trillian")));
|
heartOfGold.setPermissions(Lists.newArrayList(new RepositoryPermission("trillian")));
|
||||||
Repository puzzle42 = RepositoryTestData.create42Puzzle();
|
Repository puzzle42 = RepositoryTestData.create42Puzzle();
|
||||||
puzzle42.setId("two");
|
puzzle42.setId("two");
|
||||||
sonia.scm.repository.Permission permission = new sonia.scm.repository.Permission(group, PermissionType.WRITE, true);
|
RepositoryPermission permission = new RepositoryPermission(group, PermissionType.WRITE, true);
|
||||||
puzzle42.setPermissions(Lists.newArrayList(permission));
|
puzzle42.setPermissions(Lists.newArrayList(permission));
|
||||||
when(repositoryDAO.getAll()).thenReturn(Lists.newArrayList(heartOfGold, puzzle42));
|
when(repositoryDAO.getAll()).thenReturn(Lists.newArrayList(heartOfGold, puzzle42));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user