use of sonia.scm.repository.NamespaceAndName in project scm-review-plugin by scm-manager.
the class MergeResource method check.
@POST
@Path("{namespace}/{name}/{pullRequestId}/merge-check")
@Produces(PullRequestMediaType.MERGE_CHECK_RESULT)
@Operation(summary = "Check pull request merge", description = "Checks if the pull request can be merged.", tags = "Pull Request")
@ApiResponse(responseCode = "200", description = "update success", content = @Content(mediaType = PullRequestMediaType.MERGE_CHECK_RESULT, schema = @Schema(implementation = MergeCheckResultDto.class)))
@ApiResponse(responseCode = "401", description = "not authenticated / invalid credentials")
@ApiResponse(responseCode = "403", description = "not authorized, the current user does not have the \"readPullRequest\" privilege")
@ApiResponse(responseCode = "404", description = "not found, no pull request with the specified id is available")
@ApiResponse(responseCode = "500", description = "internal server error", content = @Content(mediaType = VndMediaType.ERROR_TYPE, schema = @Schema(implementation = ErrorDto.class)))
public MergeCheckResultDto check(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("pullRequestId") String pullRequestId, @Context UriInfo uriInfo) {
NamespaceAndName namespaceAndName = new NamespaceAndName(namespace, name);
MergeCheckResult mergeCheckResult = service.checkMerge(namespaceAndName, pullRequestId);
String checkLink = new PullRequestResourceLinks(uriInfo::getBaseUri).mergeLinks().check(namespace, name, pullRequestId);
return new MergeCheckResultDto(Links.linkingTo().self(checkLink).build(), mergeCheckResult.hasConflicts(), mergeCheckResult.getMergeObstacles());
}
use of sonia.scm.repository.NamespaceAndName in project scm-review-plugin by scm-manager.
the class MergeResource method merge.
@POST
@Path("{namespace}/{name}/{pullRequestId}")
@Consumes(PullRequestMediaType.MERGE_COMMAND)
@Operation(summary = "Merge pull request", description = "Merges pull request with selected strategy.", tags = "Pull Request")
@ApiResponse(responseCode = "204", description = "update success")
@ApiResponse(responseCode = "401", description = "not authenticated / invalid credentials")
@ApiResponse(responseCode = "403", description = "not authorized, the current user does not have the \"mergePullRequest\" privilege")
@ApiResponse(responseCode = "404", description = "not found, no pull request with the specified id is available")
@ApiResponse(responseCode = "500", description = "internal server error", content = @Content(mediaType = VndMediaType.ERROR_TYPE, schema = @Schema(implementation = ErrorDto.class)))
public void merge(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("pullRequestId") String pullRequestId, @QueryParam("strategy") MergeStrategy strategy, @NotNull @Valid MergeCommitDto mergeCommitDto) {
NamespaceAndName namespaceAndName = new NamespaceAndName(namespace, name);
service.merge(namespaceAndName, pullRequestId, mergeCommitDto, strategy, false);
}
use of sonia.scm.repository.NamespaceAndName in project scm-review-plugin by scm-manager.
the class MergeResource method getMergeStrategyInfo.
@GET
@Path("{namespace}/{name}/{pullRequestId}/merge-strategy-info")
@Produces(PullRequestMediaType.MERGE_STRATEGY_INFO)
@Operation(summary = "Get commit message information", description = "Returns commit message information for the given merge strategy", tags = "Pull Request")
@ApiResponse(responseCode = "200", description = "commit message was created", content = @Content(schema = @Schema(implementation = MergeStrategyInfoDto.class)))
@ApiResponse(responseCode = "401", description = "not authenticated / invalid credentials")
@ApiResponse(responseCode = "500", description = "internal server error", content = @Content(mediaType = VndMediaType.ERROR_TYPE, schema = @Schema(implementation = ErrorDto.class)))
public MergeStrategyInfoDto getMergeStrategyInfo(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("pullRequestId") String pullRequestId, @QueryParam("strategy") MergeStrategy strategy) {
MergeService.CommitDefaults commitDefaults = service.createCommitDefaults(new NamespaceAndName(namespace, name), pullRequestId, strategy);
DisplayUser commitAuthor = commitDefaults.getCommitAuthor();
return new MergeStrategyInfoDto(service.isCommitMessageDisabled(strategy), commitDefaults.getCommitMessage(), service.createMergeCommitMessageHint(strategy), renderCommitAuthorIfPresent(commitAuthor));
}
use of sonia.scm.repository.NamespaceAndName in project scm-review-plugin by scm-manager.
the class MergeResourceTest method shouldMergeWithSquash.
@Test
void shouldMergeWithSquash() throws URISyntaxException, IOException {
byte[] mergeCommitJson = loadJson("com/cloudogu/scm/review/mergeCommit.json");
MockHttpRequest request = createHttpPostRequest(MERGE_URL + "?strategy=SQUASH", mergeCommitJson);
dispatcher.invoke(request, response);
verify(mergeService).merge(eq(new NamespaceAndName("space", "name")), eq("1"), any(), eq(SQUASH), anyBoolean());
assertThat(response.getStatus()).isEqualTo(204);
}
use of sonia.scm.repository.NamespaceAndName in project scm-review-plugin by scm-manager.
the class PullRequestRootResourceTest method shouldApprove.
@Test
@SubjectAware(username = "dent")
public void shouldApprove() throws URISyntaxException {
initPullRequestRootResource();
MockHttpRequest request = MockHttpRequest.post("/" + PullRequestRootResource.PULL_REQUESTS_PATH_V2 + "/ns/repo/1/approve");
dispatcher.invoke(request, response);
verify(pullRequestService).approve(new NamespaceAndName("ns", "repo"), "1");
assertThat(response.getStatus()).isEqualTo(204);
}
Aggregations