mirror of
https://github.com/jlengrand/github-api.git
synced 2026-03-31 15:50:53 +00:00
231 lines
10 KiB
Java
231 lines
10 KiB
Java
package org.kohsuke.github;
|
|
|
|
import org.junit.After;
|
|
import org.junit.Assert;
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
import org.kohsuke.github.GHOrganization.Permission;
|
|
|
|
import java.io.IOException;
|
|
import java.util.List;
|
|
|
|
import static org.hamcrest.Matchers.*;
|
|
|
|
public class GHOrganizationTest extends AbstractGitHubWireMockTest {
|
|
|
|
public static final String GITHUB_API_TEST = "github-api-test";
|
|
public static final String GITHUB_API_TEMPLATE_TEST = "github-api-template-test";
|
|
public static final String TEAM_NAME_CREATE = "create-team-test";
|
|
|
|
@Before
|
|
@After
|
|
public void cleanUpTeam() throws IOException {
|
|
// Cleanup is only needed when proxying
|
|
if (!mockGitHub.isUseProxy()) {
|
|
return;
|
|
}
|
|
|
|
GHTeam team = getNonRecordingGitHub().getOrganization(GITHUB_API_TEST_ORG).getTeamByName(TEAM_NAME_CREATE);
|
|
if (team != null) {
|
|
team.delete();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void testCreateRepository() throws IOException {
|
|
cleanupRepository(GITHUB_API_TEST_ORG + '/' + GITHUB_API_TEST);
|
|
|
|
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
|
GHRepository repository = org.createRepository(GITHUB_API_TEST)
|
|
.description("a test repository used to test kohsuke's github-api")
|
|
.homepage("http://github-api.kohsuke.org/")
|
|
.team(org.getTeamByName("Core Developers"))
|
|
.private_(false)
|
|
.create();
|
|
Assert.assertNotNull(repository);
|
|
}
|
|
|
|
@Test
|
|
public void testCreateRepositoryWithAutoInitialization() throws IOException {
|
|
cleanupRepository(GITHUB_API_TEST_ORG + '/' + GITHUB_API_TEST);
|
|
|
|
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
|
GHRepository repository = org.createRepository(GITHUB_API_TEST)
|
|
.description("a test repository used to test kohsuke's github-api")
|
|
.homepage("http://github-api.kohsuke.org/")
|
|
.team(org.getTeamByName("Core Developers"))
|
|
.autoInit(true)
|
|
.create();
|
|
Assert.assertNotNull(repository);
|
|
Assert.assertNotNull(repository.getReadme());
|
|
}
|
|
|
|
@Test
|
|
public void testCreateRepositoryWithParameterIsTemplate() throws IOException {
|
|
cleanupRepository(GITHUB_API_TEST_ORG + '/' + GITHUB_API_TEMPLATE_TEST);
|
|
|
|
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
|
GHTeam team = org.getTeamByName("Core Developers");
|
|
|
|
int requestCount = mockGitHub.getRequestCount();
|
|
GHRepository repository = org.createRepository(GITHUB_API_TEMPLATE_TEST)
|
|
.description("a test template repository used to test kohsuke's github-api")
|
|
.homepage("http://github-api.kohsuke.org/")
|
|
.team(team)
|
|
.autoInit(true)
|
|
.isTemplate(true)
|
|
.create();
|
|
Assert.assertNotNull(repository);
|
|
assertThat(mockGitHub.getRequestCount(), equalTo(requestCount + 1));
|
|
|
|
Assert.assertNotNull(repository.getReadme());
|
|
assertThat(mockGitHub.getRequestCount(), equalTo(requestCount + 2));
|
|
|
|
// isTemplate() does not call populate() from create
|
|
assertThat(repository.isTemplate(), equalTo(true));
|
|
assertThat(mockGitHub.getRequestCount(), equalTo(requestCount + 2));
|
|
|
|
repository = org.getRepository(GITHUB_API_TEMPLATE_TEST);
|
|
|
|
// first isTemplate() calls populate()
|
|
assertThat(repository.isTemplate(), equalTo(true));
|
|
assertThat(mockGitHub.getRequestCount(), equalTo(requestCount + 4));
|
|
|
|
// second isTemplate() does not call populate()
|
|
assertThat(repository.isTemplate(), equalTo(true));
|
|
assertThat(mockGitHub.getRequestCount(), equalTo(requestCount + 4));
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testCreateRepositoryWithTemplate() throws IOException {
|
|
cleanupRepository(GITHUB_API_TEST_ORG + '/' + GITHUB_API_TEST);
|
|
|
|
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
|
GHRepository repository = org.createRepository(GITHUB_API_TEST)
|
|
.fromTemplateRepository(GITHUB_API_TEST_ORG, GITHUB_API_TEMPLATE_TEST)
|
|
.owner(GITHUB_API_TEST_ORG)
|
|
.create();
|
|
|
|
Assert.assertNotNull(repository);
|
|
Assert.assertNotNull(repository.getReadme());
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testInviteUser() throws IOException {
|
|
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
|
GHUser user = gitHub.getUser("martinvanzijl2");
|
|
|
|
// First remove the user
|
|
if (org.hasMember(user)) {
|
|
org.remove(user);
|
|
}
|
|
|
|
// Then invite the user again
|
|
org.add(user, GHOrganization.Role.MEMBER);
|
|
|
|
// Now the user has to accept the invitation
|
|
// Can this be automated?
|
|
// user.acceptInvitationTo(org); // ?
|
|
|
|
// Check the invitation has worked.
|
|
// assertTrue(org.hasMember(user));
|
|
}
|
|
|
|
@Test
|
|
public void testListMembersWithFilter() throws IOException {
|
|
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
|
|
|
List<GHUser> admins = org.listMembersWithFilter("all").toList();
|
|
|
|
assertNotNull(admins);
|
|
assertTrue(admins.size() >= 12); // In case more are added in the future
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("alexanderrtaylor")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("asthinasthi")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("bitwiseman")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("farmdawgnation")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("halkeye")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("jberglund-BSFT")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("kohsuke")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("kohsuke2")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("martinvanzijl")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("PauloMigAlmeida")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("Sage-Pierce")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("timja")));
|
|
}
|
|
|
|
@Test
|
|
public void testListMembersWithRole() throws IOException {
|
|
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
|
|
|
List<GHUser> admins = org.listMembersWithRole("admin").toList();
|
|
|
|
assertNotNull(admins);
|
|
assertTrue(admins.size() >= 12); // In case more are added in the future
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("alexanderrtaylor")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("asthinasthi")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("bitwiseman")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("farmdawgnation")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("halkeye")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("jberglund-BSFT")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("kohsuke")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("kohsuke2")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("martinvanzijl")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("PauloMigAlmeida")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("Sage-Pierce")));
|
|
assertTrue(admins.stream().anyMatch(ghUser -> ghUser.getLogin().equals("timja")));
|
|
}
|
|
|
|
@Test
|
|
public void testCreateTeamWithRepoAccess() throws IOException {
|
|
String REPO_NAME = "github-api";
|
|
|
|
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
|
GHRepository repo = org.getRepository(REPO_NAME);
|
|
|
|
// Create team with access to repository. Check access was granted.
|
|
GHTeam team = org.createTeam(TEAM_NAME_CREATE, GHOrganization.Permission.PUSH, repo);
|
|
Assert.assertTrue(team.getRepositories().containsKey(REPO_NAME));
|
|
assertEquals(Permission.PUSH.toString().toLowerCase(), team.getPermission());
|
|
}
|
|
|
|
@Test
|
|
public void testCreateTeam() throws IOException {
|
|
String REPO_NAME = "github-api";
|
|
String DEFAULT_PERMISSION = Permission.PULL.toString().toLowerCase();
|
|
|
|
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
|
GHRepository repo = org.getRepository(REPO_NAME);
|
|
|
|
// Create team with no permission field. Verify that default permission is pull
|
|
GHTeam team = org.createTeam(TEAM_NAME_CREATE, repo);
|
|
Assert.assertTrue(team.getRepositories().containsKey(REPO_NAME));
|
|
assertEquals(DEFAULT_PERMISSION, team.getPermission());
|
|
}
|
|
|
|
@Test
|
|
public void testCreateVisibleTeam() throws IOException {
|
|
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
|
|
|
GHTeam team = org.createTeam(TEAM_NAME_CREATE).privacy(GHTeam.Privacy.CLOSED).create();
|
|
assertEquals(GHTeam.Privacy.CLOSED, team.getPrivacy());
|
|
}
|
|
|
|
@Test
|
|
public void testCreateAllArgsTeam() throws IOException {
|
|
String REPO_NAME = "github-api";
|
|
GHOrganization org = gitHub.getOrganization(GITHUB_API_TEST_ORG);
|
|
|
|
GHTeam team = org.createTeam(TEAM_NAME_CREATE)
|
|
.description("Team description")
|
|
.maintainers("bitwiseman")
|
|
.repositories(REPO_NAME)
|
|
.privacy(GHTeam.Privacy.CLOSED)
|
|
.parentTeamId(3617900)
|
|
.create();
|
|
assertEquals("Team description", team.getDescription());
|
|
assertEquals(GHTeam.Privacy.CLOSED, team.getPrivacy());
|
|
}
|
|
}
|