blob: 1aee516ef7210ba86c5ef6264ee26984d4f67b3a [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2011, 2018 GitHub Inc. and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Kevin Sawicki (GitHub Inc.) - initial API and implementation
* Michael Mathews (Arizona Board of Regents) - (Bug: 447419)
* Team Membership API implementation
* Singaram Subramanian (Capital One) - (Bug: 529850)
* User teams across GitHub organizations implementation
*****************************************************************************/
package org.eclipse.egit.github.core.tests;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
import java.io.IOException;
import java.util.Collections;
import org.eclipse.egit.github.core.RepositoryId;
import org.eclipse.egit.github.core.Team;
import org.eclipse.egit.github.core.TeamMembership;
import org.eclipse.egit.github.core.client.GitHubClient;
import org.eclipse.egit.github.core.client.GitHubRequest;
import org.eclipse.egit.github.core.client.GitHubResponse;
import org.eclipse.egit.github.core.service.TeamService;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
/**
* Unit tests of {@link TeamService}
*/
@RunWith(MockitoJUnitRunner.class)
public class TeamServiceTest {
@Mock
private GitHubClient client;
@Mock
private GitHubResponse response;
private TeamService service;
private RepositoryId repo;
/**
* Test case set up
*
* @throws IOException
*/
@Before
public void before() throws IOException {
doReturn(response).when(client).get(any(GitHubRequest.class));
service = new TeamService(client);
repo = new RepositoryId("o", "n");
}
/**
* Create service using default constructor
*/
@Test
public void constructor() {
assertNotNull(new TeamService().getClient());
}
/**
* Get team
*
* @throws IOException
*/
@Test
public void getTeam() throws IOException {
service.getTeam(3);
GitHubRequest request = new GitHubRequest();
request.setUri("/teams/3");
verify(client).get(request);
}
/**
* Get teams with null name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void getTeamsNullName() throws IOException {
service.getTeams((String) null);
}
/**
* Get teams with empty name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void getTeamsEmptyName() throws IOException {
service.getTeams("");
}
/**
* Get teams
*
* @throws IOException
*/
@Test
public void getTeams() throws IOException {
service.getTeams("group");
GitHubRequest request = new GitHubRequest();
request.setUri(Utils.page("/orgs/group/teams"));
verify(client).get(request);
}
/**
* Create team with null organization
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void createTeamNullOrg() throws IOException {
service.createTeam(null, new Team().setName("pullers"));
}
/**
* Create team with empty organization
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void createTeamEmptyOrg() throws IOException {
service.createTeam("", new Team().setName("pullers"));
}
/**
* Create team with null team
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void createTeamNullTeam() throws IOException {
service.createTeam("group", null);
}
/**
* Create team
*
* @throws IOException
*/
@Test
public void createTeam() throws IOException {
service.createTeam("group", new Team().setName("pullers"));
verify(client).post(eq("/orgs/group/teams"), any(), eq(Team.class));
}
/**
* Create team with repositories
*
* @throws IOException
*/
@Test
public void createTeamWithRepos() throws IOException {
service.createTeam("group", new Team().setName("pullers"),
Collections.singletonList("repo1"));
verify(client).post(eq("/orgs/group/teams"), any(), eq(Team.class));
}
/**
* Edit team null team
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void editTeamNullTeam() throws IOException {
service.editTeam(null);
}
/**
* Edit team
*
* @throws IOException
*/
@Test
public void editTeam() throws IOException {
Team team = new Team().setId(20);
service.editTeam(team);
verify(client).post("/teams/20", team, Team.class);
}
/**
* Delete team
*
* @throws IOException
*/
@Test
public void deleteTeam() throws IOException {
service.deleteTeam(50);
verify(client).delete("/teams/50");
}
/**
* Get members
*
* @throws IOException
*/
@Test
public void getMembers() throws IOException {
service.getMembers(15);
GitHubRequest request = new GitHubRequest();
request.setUri(Utils.page("/teams/15/members"));
verify(client).get(request);
}
/**
* Is member with null name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void isMemberNullName() throws IOException {
service.isMember(2, null);
}
/**
* Is member with empty name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void isMemberEmptyName() throws IOException {
service.isMember(2, "");
}
/**
* Is member
*
* @throws IOException
*/
@Test
public void isMember() throws IOException {
service.isMember(5, "abc");
GitHubRequest request = new GitHubRequest();
request.setUri("/teams/5/members/abc");
verify(client).get(request);
}
/**
* Add member with null name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void addMemberNullName() throws IOException {
service.addMember(2, null);
}
/**
* Add member with empty name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void addMemberEmptyName() throws IOException {
service.addMember(2, "");
}
/**
* Add member
*
* @throws IOException
*/
@Test
public void addMember() throws IOException {
service.addMember(6, "tt");
verify(client).put("/teams/6/members/tt");
}
/**
* Remove member with null name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void removeMemberNullName() throws IOException {
service.removeMember(3, null);
}
/**
* Remove member with empty name
*
* @throws IOException
*/
@Test(expected = IllegalArgumentException.class)
public void removeMemberEmptyName() throws IOException {
service.removeMember(3, "");
}
@Test(expected = IllegalArgumentException.class)
public void getMembershipNullName() throws IOException {
service.getMembership(6, null);
}
@Test(expected = IllegalArgumentException.class)
public void getMembershipEmptyName() throws IOException {
service.getMembership(6, "");
}
@Test
public void getMembership() throws IOException {
service.getMembership(6, "tt");
GitHubRequest request = new GitHubRequest();
request.setUri("/teams/6/memberships/tt");
verify(client).get(request);
}
@Test(expected = IllegalArgumentException.class)
public void addMembershipNullName() throws IOException {
service.addMembership(6, null);
}
@Test(expected = IllegalArgumentException.class)
public void addMembershipEmptyName() throws IOException {
service.addMembership(6, "");
}
@Test
public void addMembership() throws IOException {
service.addMembership(6, "tt");
verify(client).put("/teams/6/memberships/tt", null, TeamMembership.class);
}
@Test(expected = IllegalArgumentException.class)
public void removeMembershipNullName() throws IOException {
service.removeMembership(6, null);
}
@Test(expected = IllegalArgumentException.class)
public void removeMembershipEmptyName() throws IOException {
service.removeMembership(6, "");
}
@Test
public void removeMembership() throws IOException {
service.removeMembership(6, "tt");
verify(client).delete("/teams/6/memberships/tt");
}
/**
* Remove member
*
* @throws IOException
*/
@Test
public void removeMember() throws IOException {
service.removeMember(6, "aa");
verify(client).delete("/teams/6/members/aa");
}
/**
* Get repositories
*
* @throws IOException
*/
@Test
public void getRepositories() throws IOException {
service.getRepositories(7);
GitHubRequest request = new GitHubRequest();
request.setUri(Utils.page("/teams/7/repos"));
verify(client).get(request);
}
/**
* Is repository
*
* @throws IOException
*/
@Test
public void isRepository() throws IOException {
service.isTeamRepository(8, repo);
GitHubRequest request = new GitHubRequest();
request.setUri("/teams/8/repos/o/n");
verify(client).get(request);
}
/**
* Add repository
*
* @throws IOException
*/
@Test
public void addRepository() throws IOException {
service.addRepository(8, repo);
verify(client).put("/teams/8/repos/o/n");
}
/**
* Remove repository
*
* @throws IOException
*/
@Test
public void removeRepository() throws IOException {
service.removeRepository(8, repo);
verify(client).delete("/teams/8/repos/o/n");
}
/**
* Get teams for repository
*
* @throws IOException
*/
@Test
public void getRepositoryTeams() throws IOException {
service.getTeams(repo);
GitHubRequest request = new GitHubRequest();
request.setUri(Utils.page("/repos/o/n/teams"));
verify(client).get(request);
}
/**
* Get current user's teams across all GitHub organizations
*
* @throws IOException
*/
@Test
public void getAllTeams() throws IOException {
service.getTeams();
GitHubRequest request = new GitHubRequest();
request.setUri(Utils.page("/user/teams"));
verify(client).get(request);
}
}