mirror of
https://github.com/jlengrand/github-api.git
synced 2026-03-10 08:21:21 +00:00
This change adds or update a swath of tests to push method code coverage numbers up. Yes, method coverage is not super meaningful, but it is one metric that we can use to ensure at least minimal coverage of this library. Almost no product changes in here.
161 lines
6.9 KiB
Java
161 lines
6.9 KiB
Java
package org.kohsuke.github;
|
|
|
|
import org.junit.Test;
|
|
|
|
import java.io.IOException;
|
|
import java.util.Arrays;
|
|
import java.util.Collections;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import static org.hamcrest.Matchers.*;
|
|
|
|
/**
|
|
* Tests for the GitHub App API methods
|
|
*
|
|
* @author Paulo Miguel Almeida
|
|
*/
|
|
public class GHAppTest extends AbstractGitHubWireMockTest {
|
|
|
|
protected GitHubBuilder getGitHubBuilder() {
|
|
return super.getGitHubBuilder()
|
|
// ensure that only JWT will be used against the tests below
|
|
.withPassword(null, null)
|
|
.withJwtToken("bogus");
|
|
}
|
|
|
|
@Test
|
|
public void getGitHubApp() throws IOException {
|
|
GHApp app = gitHub.getApp();
|
|
assertThat(app.getId(), is((long) 11111));
|
|
assertThat(app.getOwner().getId(), is((long) 111111111));
|
|
assertThat(app.getOwner().login, is("bogus"));
|
|
assertThat(app.getName(), is("Bogus-Development"));
|
|
assertThat(app.getDescription(), is(""));
|
|
assertThat(app.getExternalUrl(), is("https://bogus.domain.com"));
|
|
assertThat(app.getHtmlUrl().toString(), is("https://github.com/apps/bogus-development"));
|
|
assertThat(app.getCreatedAt(), is(GitHubClient.parseDate("2019-06-10T04:21:41Z")));
|
|
assertThat(app.getUpdatedAt(), is(GitHubClient.parseDate("2019-06-10T04:21:41Z")));
|
|
assertThat(app.getPermissions().size(), is(4));
|
|
assertThat(app.getEvents().size(), is(2));
|
|
assertThat(app.getInstallationsCount(), is((long) 1));
|
|
}
|
|
|
|
@Test
|
|
public void listInstallations() throws IOException {
|
|
GHApp app = gitHub.getApp();
|
|
List<GHAppInstallation> installations = app.listInstallations().toList();
|
|
assertThat(installations.size(), is(1));
|
|
|
|
GHAppInstallation appInstallation = installations.get(0);
|
|
testAppInstallation(appInstallation);
|
|
}
|
|
|
|
@Test
|
|
public void getInstallationById() throws IOException {
|
|
GHApp app = gitHub.getApp();
|
|
GHAppInstallation installation = app.getInstallationById(1111111);
|
|
testAppInstallation(installation);
|
|
}
|
|
|
|
@Test
|
|
public void getInstallationByOrganization() throws IOException {
|
|
GHApp app = gitHub.getApp();
|
|
GHAppInstallation installation = app.getInstallationByOrganization("bogus");
|
|
testAppInstallation(installation);
|
|
}
|
|
|
|
@Test
|
|
public void getInstallationByRepository() throws IOException {
|
|
GHApp app = gitHub.getApp();
|
|
GHAppInstallation installation = app.getInstallationByRepository("bogus", "bogus");
|
|
testAppInstallation(installation);
|
|
}
|
|
|
|
@Test
|
|
public void getInstallationByUser() throws IOException {
|
|
GHApp app = gitHub.getApp();
|
|
GHAppInstallation installation = app.getInstallationByUser("bogus");
|
|
testAppInstallation(installation);
|
|
}
|
|
|
|
@Test
|
|
public void deleteInstallation() throws IOException {
|
|
GHApp app = gitHub.getApp();
|
|
GHAppInstallation installation = app.getInstallationByUser("bogus");
|
|
try {
|
|
installation.deleteInstallation();
|
|
} catch (IOException e) {
|
|
fail("deleteInstallation wasn't suppose to fail in this test");
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void createToken() throws IOException {
|
|
GHApp app = gitHub.getApp();
|
|
GHAppInstallation installation = app.getInstallationByUser("bogus");
|
|
|
|
Map<String, GHPermissionType> permissions = new HashMap<String, GHPermissionType>();
|
|
permissions.put("checks", GHPermissionType.WRITE);
|
|
permissions.put("pull_requests", GHPermissionType.WRITE);
|
|
permissions.put("contents", GHPermissionType.READ);
|
|
permissions.put("metadata", GHPermissionType.READ);
|
|
|
|
// Create token specifying both permissions and repository ids
|
|
GHAppInstallationToken installationToken = installation.createToken()
|
|
.permissions(permissions)
|
|
.repositoryIds(Collections.singletonList((long) 111111111))
|
|
.create();
|
|
|
|
assertThat(installationToken.getToken(), is("bogus"));
|
|
assertThat(installation.getPermissions(), is(permissions));
|
|
assertThat(installationToken.getRepositorySelection(), is(GHRepositorySelection.SELECTED));
|
|
assertThat(installationToken.getExpiresAt(), is(GitHubClient.parseDate("2019-08-10T05:54:58Z")));
|
|
|
|
GHRepository repository = installationToken.getRepositories().get(0);
|
|
assertThat(installationToken.getRepositories().size(), is(1));
|
|
assertThat(repository.getId(), is((long) 111111111));
|
|
assertThat(repository.getName(), is("bogus"));
|
|
|
|
// Create token with no payload
|
|
GHAppInstallationToken installationToken2 = installation.createToken().create();
|
|
|
|
assertThat(installationToken2.getToken(), is("bogus"));
|
|
assertThat(installationToken2.getPermissions().size(), is(4));
|
|
assertThat(installationToken2.getRepositorySelection(), is(GHRepositorySelection.ALL));
|
|
assertThat(installationToken2.getExpiresAt(), is(GitHubClient.parseDate("2019-12-19T12:27:59Z")));
|
|
|
|
assertNull(installationToken2.getRepositories());;
|
|
}
|
|
|
|
private void testAppInstallation(GHAppInstallation appInstallation) throws IOException {
|
|
Map<String, GHPermissionType> appPermissions = appInstallation.getPermissions();
|
|
GHUser appAccount = appInstallation.getAccount();
|
|
|
|
assertThat(appInstallation.getId(), is((long) 11111111));
|
|
assertThat(appAccount.getId(), is((long) 111111111));
|
|
assertThat(appAccount.login, is("bogus"));
|
|
assertThat(appInstallation.getRepositorySelection(), is(GHRepositorySelection.SELECTED));
|
|
assertThat(appInstallation.getAccessTokenUrl(), endsWith("/app/installations/11111111/access_tokens"));
|
|
assertThat(appInstallation.getRepositoriesUrl(), endsWith("/installation/repositories"));
|
|
assertThat(appInstallation.getAppId(), is((long) 11111));
|
|
assertThat(appInstallation.getTargetId(), is((long) 111111111));
|
|
assertThat(appInstallation.getTargetType(), is(GHTargetType.ORGANIZATION));
|
|
|
|
Map<String, GHPermissionType> permissionsMap = new HashMap<String, GHPermissionType>();
|
|
permissionsMap.put("checks", GHPermissionType.WRITE);
|
|
permissionsMap.put("pull_requests", GHPermissionType.WRITE);
|
|
permissionsMap.put("contents", GHPermissionType.READ);
|
|
permissionsMap.put("metadata", GHPermissionType.READ);
|
|
assertThat(appPermissions, is(permissionsMap));
|
|
|
|
List<GHEvent> events = Arrays.asList(GHEvent.PULL_REQUEST, GHEvent.PUSH);
|
|
assertThat(appInstallation.getEvents(), containsInAnyOrder(events.toArray(new GHEvent[0])));
|
|
assertThat(appInstallation.getCreatedAt(), is(GitHubClient.parseDate("2019-07-04T01:19:36.000Z")));
|
|
assertThat(appInstallation.getUpdatedAt(), is(GitHubClient.parseDate("2019-07-30T22:48:09.000Z")));
|
|
assertNull(appInstallation.getSingleFileName());
|
|
}
|
|
|
|
}
|