Skip to content

Commit

Permalink
forge: add methods addCollaborator and canPush
Browse files Browse the repository at this point in the history
Reviewed-by: rwestberg
  • Loading branch information
edvbld committed Mar 10, 2021
1 parent 2e89f01 commit a1337d8
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 0 deletions.
Expand Up @@ -23,6 +23,7 @@
package org.openjdk.skara.bots.tester;

import org.openjdk.skara.forge.*;
import org.openjdk.skara.host.HostUser;
import org.openjdk.skara.json.JSONValue;
import org.openjdk.skara.vcs.*;

Expand Down Expand Up @@ -194,4 +195,13 @@ public URI createPullRequestUrl(HostedRepository target, String sourceRef, Strin
public URI webUrl(Branch branch) {
return null;
}

@Override
public void addCollaborator(HostUser user, boolean canPush) {
}

@Override
public boolean canPush(HostUser user) {
return false;
}
}
Expand Up @@ -22,6 +22,7 @@
*/
package org.openjdk.skara.forge;

import org.openjdk.skara.host.HostUser;
import org.openjdk.skara.json.JSONValue;
import org.openjdk.skara.vcs.*;

Expand Down Expand Up @@ -82,6 +83,8 @@ default List<CommitComment> recentCommitComments() {
URI createPullRequestUrl(HostedRepository target,
String targetRef,
String sourceRef);
void addCollaborator(HostUser user, boolean canPush);
boolean canPush(HostUser user);

default PullRequest createPullRequest(HostedRepository target,
String targetRef,
Expand Down
Expand Up @@ -23,6 +23,7 @@
package org.openjdk.skara.forge.github;

import org.openjdk.skara.forge.*;
import org.openjdk.skara.host.HostUser;
import org.openjdk.skara.json.*;
import org.openjdk.skara.network.*;
import org.openjdk.skara.vcs.*;
Expand Down Expand Up @@ -513,4 +514,22 @@ public URI createPullRequestUrl(HostedRepository target, String targetRef, Strin
var endpoint = "/" + target.name() + "/" + targetRef + "..." + sourceGroup + ":" + sourceRef;
return gitHubHost.getWebURI(endpoint);
}

@Override
public void addCollaborator(HostUser user, boolean canPush) {
var query = JSON.object().put("permission", canPush ? "push" : "pull");
request.put("collaborators/" + user.username())
.body(query)
.execute();

}

@Override
public boolean canPush(HostUser user) {
var permission = request.get("collaborators/" + user.username())
.execute()
.get("permission")
.asString();
return permission.equals("admin") || permission.equals("write");
}
}
Expand Up @@ -547,4 +547,22 @@ public URI createPullRequestUrl(HostedRepository target, String targetRef, Strin
"&merge_request[target_branch]=" + targetRef;
return gitLabHost.getWebUri(endpoint);
}

@Override
public void addCollaborator(HostUser user, boolean canPush) {
var accessLevel = canPush ? "30" : "20";
var data = "user_id=" + user.id() + "&access_level=" + accessLevel;
request.post("members")
.body(data)
.execute();
}

@Override
public boolean canPush(HostUser user) {
var accessLevel = request.get("members/" + user.id())
.execute()
.get("access_level")
.asInt();
return accessLevel >= 30;
}
}
Expand Up @@ -23,6 +23,7 @@
package org.openjdk.skara.test;

import org.openjdk.skara.forge.*;
import org.openjdk.skara.host.HostUser;
import org.openjdk.skara.issuetracker.Issue;
import org.openjdk.skara.json.JSONValue;
import org.openjdk.skara.vcs.*;
Expand All @@ -41,6 +42,7 @@ public class TestHostedRepository extends TestIssueProject implements HostedRepo
private final Repository localRepository;
private final Pattern pullRequestPattern;
private final Map<Hash, List<CommitComment>> commitComments;
private Map<String, Boolean> collaborators = new HashMap<>();

public TestHostedRepository(TestHost host, String projectName, Repository localRepository) {
super(host, projectName);
Expand Down Expand Up @@ -275,6 +277,16 @@ public URI webUrl(Branch branch) {
return URI.create(webUrl() + "/branch/" + branch.name());
}

@Override
public void addCollaborator(HostUser user, boolean canPush) {
collaborators.put(user.username(), canPush);
}

@Override
public boolean canPush(HostUser user) {
return collaborators.getOrDefault(user.username(), false);
}

Repository localRepository() {
return localRepository;
}
Expand Down

1 comment on commit a1337d8

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.