GithubTeamService.java

1
package edu.ucsb.cs156.frontiers.services;
2
3
import com.fasterxml.jackson.core.JsonProcessingException;
4
import com.fasterxml.jackson.databind.DeserializationFeature;
5
import com.fasterxml.jackson.databind.JsonNode;
6
import com.fasterxml.jackson.databind.ObjectMapper;
7
import edu.ucsb.cs156.frontiers.entities.Course;
8
import edu.ucsb.cs156.frontiers.entities.Team;
9
import edu.ucsb.cs156.frontiers.enums.TeamStatus;
10
import java.security.NoSuchAlgorithmException;
11
import java.security.spec.InvalidKeySpecException;
12
import java.util.HashMap;
13
import java.util.Map;
14
import lombok.extern.slf4j.Slf4j;
15
import org.springframework.boot.web.client.RestTemplateBuilder;
16
import org.springframework.http.HttpEntity;
17
import org.springframework.http.HttpHeaders;
18
import org.springframework.http.HttpMethod;
19
import org.springframework.http.ResponseEntity;
20
import org.springframework.stereotype.Service;
21
import org.springframework.web.client.HttpClientErrorException;
22
import org.springframework.web.client.RestTemplate;
23
24
@Slf4j
25
@Service
26
public class GithubTeamService {
27
28
  private final JwtService jwtService;
29
  private final ObjectMapper objectMapper;
30
  private final RestTemplate restTemplate;
31
32
  public GithubTeamService(
33
      JwtService jwtService, ObjectMapper objectMapper, RestTemplateBuilder builder) {
34
    this.jwtService = jwtService;
35
    this.objectMapper = objectMapper;
36
    this.objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
37
    this.restTemplate = builder.build();
38
  }
39
40
  /**
41
   * Creates a team on GitHub if it doesn't exist, or returns the existing team ID.
42
   *
43
   * @param team The team to create
44
   * @param course The course containing the organization
45
   * @return The GitHub team ID
46
   * @throws JsonProcessingException if there is an error processing JSON
47
   * @throws NoSuchAlgorithmException if there is an algorithm error
48
   * @throws InvalidKeySpecException if there is a key specification error
49
   */
50
  public Integer createOrGetTeamId(Team team, Course course)
51
      throws JsonProcessingException, NoSuchAlgorithmException, InvalidKeySpecException {
52
    // First check if team already exists by getting team info
53
    Integer existingTeamId = getTeamId(team.getName(), course);
54 1 1. createOrGetTeamId : negated conditional → KILLED
    if (existingTeamId != null) {
55 1 1. createOrGetTeamId : replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::createOrGetTeamId → KILLED
      return existingTeamId;
56
    }
57
58
    // Create the team if it doesn't exist
59 1 1. createOrGetTeamId : replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::createOrGetTeamId → KILLED
    return createTeam(team.getName(), course);
60
  }
61
62
  /**
63
   * Get the org id, given the org name.
64
   *
65
   * <p>Note: in the future, it would be better to cache this value in the Course row in the
66
   * database at the time the Github App is linked to the org, since it doesn't change.
67
   *
68
   * @param orgName
69
   * @param course
70
   * @return
71
   * @throws JsonProcessingException
72
   * @throws NoSuchAlgorithmException
73
   * @throws InvalidKeySpecException
74
   */
75
  public Integer getOrgId(String orgName, Course course)
76
      throws JsonProcessingException, NoSuchAlgorithmException, InvalidKeySpecException {
77
    String endpoint = "https://api.github.com/orgs/" + orgName;
78
    HttpHeaders headers = new HttpHeaders();
79
    String token = jwtService.getInstallationToken(course);
80 1 1. getOrgId : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Authorization", "Bearer " + token);
81 1 1. getOrgId : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Accept", "application/vnd.github+json");
82 1 1. getOrgId : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("X-GitHub-Api-Version", "2022-11-28");
83
    HttpEntity<String> entity = new HttpEntity<>(headers);
84
85
    ResponseEntity<String> response =
86
        restTemplate.exchange(endpoint, HttpMethod.GET, entity, String.class);
87
    JsonNode responseJson = objectMapper.readTree(response.getBody());
88 1 1. getOrgId : replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::getOrgId → KILLED
    return responseJson.get("id").asInt();
89
  }
90
91
  /**
92
   * Gets the team ID for a team name, returns null if team doesn't exist.
93
   *
94
   * @param teamName The name of the team
95
   * @param course The course containing the organization
96
   * @return The GitHub team ID or null if not found
97
   * @throws JsonProcessingException if there is an error processing JSON
98
   * @throws NoSuchAlgorithmException if there is an algorithm error
99
   * @throws InvalidKeySpecException if there is a key specification error
100
   */
101
  public Integer getTeamId(String teamName, Course course)
102
      throws JsonProcessingException, NoSuchAlgorithmException, InvalidKeySpecException {
103
    String endpoint = "https://api.github.com/orgs/" + course.getOrgName() + "/teams/" + teamName;
104
    HttpHeaders headers = new HttpHeaders();
105
    String token = jwtService.getInstallationToken(course);
106 1 1. getTeamId : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Authorization", "Bearer " + token);
107 1 1. getTeamId : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Accept", "application/vnd.github+json");
108 1 1. getTeamId : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("X-GitHub-Api-Version", "2022-11-28");
109
    HttpEntity<String> entity = new HttpEntity<>(headers);
110
111
    try {
112
      ResponseEntity<String> response =
113
          restTemplate.exchange(endpoint, HttpMethod.GET, entity, String.class);
114
      JsonNode responseJson = objectMapper.readTree(response.getBody());
115 1 1. getTeamId : replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::getTeamId → KILLED
      return responseJson.get("id").asInt();
116
    } catch (HttpClientErrorException e) {
117 1 1. getTeamId : negated conditional → KILLED
      if (e.getStatusCode().value() == 404) {
118 1 1. getTeamId : replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::getTeamId → KILLED
        return null; // Team doesn't exist
119
      }
120
      throw e;
121
    }
122
  }
123
124
  /**
125
   * Creates a new team on GitHub.
126
   *
127
   * @param teamName The name of the team to create
128
   * @param course The course containing the organization
129
   * @return The GitHub team ID
130
   * @throws JsonProcessingException if there is an error processing JSON
131
   * @throws NoSuchAlgorithmException if there is an algorithm error
132
   * @throws InvalidKeySpecException if there is a key specification error
133
   */
134
  public Integer createTeam(String teamName, Course course)
135
      throws JsonProcessingException, NoSuchAlgorithmException, InvalidKeySpecException {
136
    String endpoint = "https://api.github.com/orgs/" + course.getOrgName() + "/teams";
137
    HttpHeaders headers = new HttpHeaders();
138
    String token = jwtService.getInstallationToken(course);
139 1 1. createTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Authorization", "Bearer " + token);
140 1 1. createTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Accept", "application/vnd.github+json");
141 1 1. createTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("X-GitHub-Api-Version", "2022-11-28");
142
143
    Map<String, Object> body = new HashMap<>();
144
    body.put("name", teamName);
145
    body.put("privacy", "closed"); // Teams are private by default
146
    String bodyAsJson = objectMapper.writeValueAsString(body);
147
    HttpEntity<String> entity = new HttpEntity<>(bodyAsJson, headers);
148
149
    ResponseEntity<String> response =
150
        restTemplate.exchange(endpoint, HttpMethod.POST, entity, String.class);
151
    JsonNode responseJson = objectMapper.readTree(response.getBody());
152
    Integer teamId = responseJson.get("id").asInt();
153
    log.info(
154
        "Created team '{}' with ID {} in organization {}", teamName, teamId, course.getOrgName());
155 1 1. createTeam : replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::createTeam → KILLED
    return teamId;
156
  }
157
158
  /**
159
   * Deletes a team on GitHub.
160
   *
161
   * @param orgId The ID of the organization
162
   * @param githubTeamId The ID of the team to delete
163
   * @param course The course containing the organization
164
   * @throws JsonProcessingException if there is an error processing JSON
165
   * @throws NoSuchAlgorithmException if there is an algorithm error
166
   * @throws InvalidKeySpecException if there is a key specification error
167
   */
168
  public void deleteGithubTeam(Integer orgId, Integer teamId, Course course)
169
      throws JsonProcessingException, NoSuchAlgorithmException, InvalidKeySpecException {
170
    String endpoint = "https://api.github.com/organizations/" + orgId + "/team/" + teamId;
171
    HttpHeaders headers = new HttpHeaders();
172
    String token = jwtService.getInstallationToken(course);
173 1 1. deleteGithubTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Authorization", "Bearer " + token);
174 1 1. deleteGithubTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Accept", "application/vnd.github+json");
175 1 1. deleteGithubTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("X-GitHub-Api-Version", "2022-11-28");
176
    HttpEntity<String> entity = new HttpEntity<>(headers);
177
178
    restTemplate.exchange(endpoint, HttpMethod.DELETE, entity, String.class);
179
    log.info("Deleted team with ID {} in organization {}", teamId, course.getOrgName());
180
  }
181
182
  /**
183
   * Gets the current team membership status for a user.
184
   *
185
   * @param githubLogin The GitHub login of the user
186
   * @param teamId The GitHub team ID
187
   * @param course The course containing the organization
188
   * @return The team status of the user
189
   * @throws JsonProcessingException if there is an error processing JSON
190
   * @throws NoSuchAlgorithmException if there is an algorithm error
191
   * @throws InvalidKeySpecException if there is a key specification error
192
   */
193
  public TeamStatus getTeamMembershipStatus(String githubLogin, Integer teamId, Course course)
194
      throws JsonProcessingException, NoSuchAlgorithmException, InvalidKeySpecException {
195 1 1. getTeamMembershipStatus : negated conditional → KILLED
    if (githubLogin == null) {
196 1 1. getTeamMembershipStatus : replaced return value with null for edu/ucsb/cs156/frontiers/services/GithubTeamService::getTeamMembershipStatus → KILLED
      return TeamStatus.NO_GITHUB_ID;
197
    }
198
199
    String endpoint =
200
        "https://api.github.com/orgs/"
201
            + course.getOrgName()
202
            + "/teams/"
203
            + teamId
204
            + "/memberships/"
205
            + githubLogin;
206
    HttpHeaders headers = new HttpHeaders();
207
    String token = jwtService.getInstallationToken(course);
208 1 1. getTeamMembershipStatus : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Authorization", "Bearer " + token);
209 1 1. getTeamMembershipStatus : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Accept", "application/vnd.github+json");
210 1 1. getTeamMembershipStatus : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("X-GitHub-Api-Version", "2022-11-28");
211
    HttpEntity<String> entity = new HttpEntity<>(headers);
212
213
    try {
214
      ResponseEntity<String> response =
215
          restTemplate.exchange(endpoint, HttpMethod.GET, entity, String.class);
216
      JsonNode responseJson = objectMapper.readTree(response.getBody());
217
      String role = responseJson.get("role").asText();
218 2 1. getTeamMembershipStatus : negated conditional → KILLED
2. getTeamMembershipStatus : replaced return value with null for edu/ucsb/cs156/frontiers/services/GithubTeamService::getTeamMembershipStatus → KILLED
      return "maintainer".equalsIgnoreCase(role)
219
          ? TeamStatus.TEAM_MAINTAINER
220
          : TeamStatus.TEAM_MEMBER;
221
    } catch (HttpClientErrorException e) {
222 1 1. getTeamMembershipStatus : negated conditional → KILLED
      if (e.getStatusCode().value() == 404) {
223 1 1. getTeamMembershipStatus : replaced return value with null for edu/ucsb/cs156/frontiers/services/GithubTeamService::getTeamMembershipStatus → KILLED
        return TeamStatus.NOT_ORG_MEMBER; // User is not a member of the team
224
      }
225
      throw e;
226
    }
227
  }
228
229
  /**
230
   * Adds a member to a GitHub team.
231
   *
232
   * @param githubLogin The GitHub login of the user to add
233
   * @param teamId The GitHub team ID
234
   * @param role The role to assign ("member" or "maintainer")
235
   * @param course The course containing the organization
236
   * @return The resulting team status
237
   * @throws JsonProcessingException if there is an error processing JSON
238
   * @throws NoSuchAlgorithmException if there is an algorithm error
239
   * @throws InvalidKeySpecException if there is a key specification error
240
   */
241
  public TeamStatus addMemberToGithubTeam(
242
      String githubLogin, Integer teamId, String role, Course course, Integer orgId)
243
      throws JsonProcessingException, NoSuchAlgorithmException, InvalidKeySpecException {
244
    String endpoint =
245
        "https://api.github.com/organizations/"
246
            + orgId
247
            + "/team/"
248
            + teamId
249
            + "/memberships/"
250
            + githubLogin;
251
    HttpHeaders headers = new HttpHeaders();
252
    String token = jwtService.getInstallationToken(course);
253 1 1. addMemberToGithubTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Authorization", "Bearer " + token);
254 1 1. addMemberToGithubTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Accept", "application/vnd.github+json");
255 1 1. addMemberToGithubTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("X-GitHub-Api-Version", "2022-11-28");
256
257
    Map<String, Object> body = new HashMap<>();
258
    body.put("role", role);
259
    String bodyAsJson = objectMapper.writeValueAsString(body);
260
    HttpEntity<String> entity = new HttpEntity<>(bodyAsJson, headers);
261
262
    ResponseEntity<String> response =
263
        restTemplate.exchange(endpoint, HttpMethod.PUT, entity, String.class);
264
    JsonNode responseJson = objectMapper.readTree(response.getBody());
265
    String resultRole = responseJson.get("role").asText();
266
    log.info("Added user '{}' to team ID {} with role '{}'", githubLogin, teamId, resultRole);
267 2 1. addMemberToGithubTeam : negated conditional → KILLED
2. addMemberToGithubTeam : replaced return value with null for edu/ucsb/cs156/frontiers/services/GithubTeamService::addMemberToGithubTeam → KILLED
    return "maintainer".equalsIgnoreCase(resultRole)
268
        ? TeamStatus.TEAM_MAINTAINER
269
        : TeamStatus.TEAM_MEMBER;
270
  }
271
272
  /**
273
   * Removes a member from a GitHub team
274
   *
275
   * @param orgId
276
   * @param githubLogin
277
   * @param teamId
278
   * @param course
279
   * @throws NoSuchAlgorithmException
280
   * @throws InvalidKeySpecException
281
   * @throws JsonProcessingException
282
   */
283
  public void removeMemberFromGithubTeam(
284
      Integer orgId, String githubLogin, Integer teamId, Course course)
285
      throws NoSuchAlgorithmException, InvalidKeySpecException, JsonProcessingException {
286
287
    String endpoint =
288
        "https://api.github.com/organizations/"
289
            + orgId
290
            + "/team/"
291
            + teamId
292
            + "/memberships/"
293
            + githubLogin;
294
    HttpHeaders headers = new HttpHeaders();
295
    String token = jwtService.getInstallationToken(course);
296 1 1. removeMemberFromGithubTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Authorization", "Bearer " + token);
297 1 1. removeMemberFromGithubTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("Accept", "application/vnd.github+json");
298 1 1. removeMemberFromGithubTeam : removed call to org/springframework/http/HttpHeaders::add → KILLED
    headers.add("X-GitHub-Api-Version", "2022-11-28");
299
    HttpEntity<String> entity = new HttpEntity<>(headers);
300
301
    restTemplate.exchange(endpoint, HttpMethod.DELETE, entity, String.class);
302
    log.info("Successfully removed member {} from team ID {}", githubLogin, teamId);
303
  }
304
}

Mutations

54

1.1
Location : createOrGetTeamId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testCreateOrGetTeamId_WhenTeamExists()]
negated conditional → KILLED

55

1.1
Location : createOrGetTeamId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testCreateOrGetTeamId_WhenTeamExists()]
replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::createOrGetTeamId → KILLED

59

1.1
Location : createOrGetTeamId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testCreateOrGetTeamId_WhenTeamDoesNotExist()]
replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::createOrGetTeamId → KILLED

80

1.1
Location : getOrgId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetOrgId_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

81

1.1
Location : getOrgId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetOrgId_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

82

1.1
Location : getOrgId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetOrgId_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

88

1.1
Location : getOrgId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:test_getOrgId_whenOrgExists()]
replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::getOrgId → KILLED

106

1.1
Location : getTeamId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamId_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

107

1.1
Location : getTeamId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamId_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

108

1.1
Location : getTeamId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamId_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

115

1.1
Location : getTeamId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamId_WhenTeamExists()]
replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::getTeamId → KILLED

117

1.1
Location : getTeamId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamId_NonNotFoundError()]
negated conditional → KILLED

118

1.1
Location : getTeamId
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamId_WhenTeamDoesNotExist()]
replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::getTeamId → KILLED

139

1.1
Location : createTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testCreateTeam_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

140

1.1
Location : createTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testCreateTeam_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

141

1.1
Location : createTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testCreateTeam_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

155

1.1
Location : createTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testCreateOrGetTeamId_WhenTeamDoesNotExist()]
replaced Integer return value with 0 for edu/ucsb/cs156/frontiers/services/GithubTeamService::createTeam → KILLED

173

1.1
Location : deleteGithubTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testRemoveTeam_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

174

1.1
Location : deleteGithubTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testRemoveTeam_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

175

1.1
Location : deleteGithubTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testRemoveTeam_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

195

1.1
Location : getTeamMembershipStatus
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamMembershipStatus_NoGithubId()]
negated conditional → KILLED

196

1.1
Location : getTeamMembershipStatus
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamMembershipStatus_NoGithubId()]
replaced return value with null for edu/ucsb/cs156/frontiers/services/GithubTeamService::getTeamMembershipStatus → KILLED

208

1.1
Location : getTeamMembershipStatus
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamMembershipStatus_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

209

1.1
Location : getTeamMembershipStatus
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamMembershipStatus_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

210

1.1
Location : getTeamMembershipStatus
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamMembershipStatus_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

218

1.1
Location : getTeamMembershipStatus
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamMembershipStatus_TeamMember()]
negated conditional → KILLED

2.2
Location : getTeamMembershipStatus
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamMembershipStatus_TeamMember()]
replaced return value with null for edu/ucsb/cs156/frontiers/services/GithubTeamService::getTeamMembershipStatus → KILLED

222

1.1
Location : getTeamMembershipStatus
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamMembershipStatus_NonNotFoundError()]
negated conditional → KILLED

223

1.1
Location : getTeamMembershipStatus
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testGetTeamMembershipStatus_NotOrgMember()]
replaced return value with null for edu/ucsb/cs156/frontiers/services/GithubTeamService::getTeamMembershipStatus → KILLED

253

1.1
Location : addMemberToGithubTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testAddTeamMember_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

254

1.1
Location : addMemberToGithubTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testAddTeamMember_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

255

1.1
Location : addMemberToGithubTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testAddTeamMember_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

267

1.1
Location : addMemberToGithubTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testAddTeamMember_AsMember()]
negated conditional → KILLED

2.2
Location : addMemberToGithubTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testAddTeamMember_AsMember()]
replaced return value with null for edu/ucsb/cs156/frontiers/services/GithubTeamService::addMemberToGithubTeam → KILLED

296

1.1
Location : removeMemberFromGithubTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testRemoveTeamMember_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

297

1.1
Location : removeMemberFromGithubTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testRemoveTeamMember_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

298

1.1
Location : removeMemberFromGithubTeam
Killed by : edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.services.GithubTeamServiceTests]/[method:testRemoveTeamMember_VerifyHeaders()]
removed call to org/springframework/http/HttpHeaders::add → KILLED

Active mutators

Tests examined


Report generated by PIT 1.17.0