GithubController.java

1
package edu.ucsb.cs156.frontiers.controllers;
2
3
import edu.ucsb.cs156.frontiers.entities.User;
4
import edu.ucsb.cs156.frontiers.repositories.UserRepository;
5
import java.util.List;
6
import org.springframework.security.access.prepost.PreAuthorize;
7
import org.springframework.security.core.Authentication;
8
import org.springframework.security.core.GrantedAuthority;
9
import org.springframework.security.core.context.SecurityContext;
10
import org.springframework.security.core.context.SecurityContextHolder;
11
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
12
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
13
import org.springframework.web.bind.annotation.DeleteMapping;
14
import org.springframework.web.bind.annotation.RequestMapping;
15
import org.springframework.web.bind.annotation.RestController;
16
17
@RestController
18
@RequestMapping("/api/github")
19
public class GithubController extends ApiController {
20
21
  private final UserRepository userRepository;
22
23
  public GithubController(UserRepository userRepository) {
24
    super();
25
    this.userRepository = userRepository;
26
  }
27
28
  @PreAuthorize("hasRole('ROLE_GITHUB')")
29
  @DeleteMapping("/disconnect")
30
  public Object disconnect(SecurityContext context) {
31
    User currentUser = getCurrentUser().getUser();
32 1 1. disconnect : removed call to edu/ucsb/cs156/frontiers/entities/User::setGithubId → KILLED
    currentUser.setGithubId(null);
33 1 1. disconnect : removed call to edu/ucsb/cs156/frontiers/entities/User::setGithubLogin → KILLED
    currentUser.setGithubLogin(null);
34
    userRepository.save(currentUser);
35
    Authentication auth = context.getAuthentication();
36
    List<? extends GrantedAuthority> removedAuthority =
37
        auth.getAuthorities().stream()
38 2 1. lambda$disconnect$0 : replaced boolean return with true for edu/ucsb/cs156/frontiers/controllers/GithubController::lambda$disconnect$0 → KILLED
2. lambda$disconnect$0 : negated conditional → KILLED
            .filter(r -> !"ROLE_GITHUB".equals(r.getAuthority()))
39
            .toList();
40
    OAuth2AuthenticationToken token = (OAuth2AuthenticationToken) context.getAuthentication();
41 1 1. disconnect : removed call to org/springframework/security/core/context/SecurityContext::setAuthentication → KILLED
    context.setAuthentication(
42
        new OAuth2AuthenticationToken(
43
            (OidcUser) auth.getPrincipal(),
44
            removedAuthority,
45
            token.getAuthorizedClientRegistrationId()));
46
    SecurityContextHolder.setContext(context);
47 1 1. disconnect : replaced return value with null for edu/ucsb/cs156/frontiers/controllers/GithubController::disconnect → KILLED
    return genericMessage("Disconnected from GitHub. You may now log in with a different account.");
48
  }
49
}

Mutations

32

1.1
Location : disconnect
Killed by : edu.ucsb.cs156.frontiers.controllers.GithubControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.controllers.GithubControllerTests]/[method:successfulDisconnect()]
removed call to edu/ucsb/cs156/frontiers/entities/User::setGithubId → KILLED

33

1.1
Location : disconnect
Killed by : edu.ucsb.cs156.frontiers.controllers.GithubControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.controllers.GithubControllerTests]/[method:successfulDisconnect()]
removed call to edu/ucsb/cs156/frontiers/entities/User::setGithubLogin → KILLED

38

1.1
Location : lambda$disconnect$0
Killed by : edu.ucsb.cs156.frontiers.controllers.GithubControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.controllers.GithubControllerTests]/[method:successfulDisconnect()]
replaced boolean return with true for edu/ucsb/cs156/frontiers/controllers/GithubController::lambda$disconnect$0 → KILLED

2.2
Location : lambda$disconnect$0
Killed by : edu.ucsb.cs156.frontiers.controllers.GithubControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.controllers.GithubControllerTests]/[method:successfulDisconnect()]
negated conditional → KILLED

41

1.1
Location : disconnect
Killed by : edu.ucsb.cs156.frontiers.controllers.GithubControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.controllers.GithubControllerTests]/[method:successfulDisconnect()]
removed call to org/springframework/security/core/context/SecurityContext::setAuthentication → KILLED

47

1.1
Location : disconnect
Killed by : edu.ucsb.cs156.frontiers.controllers.GithubControllerTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.frontiers.controllers.GithubControllerTests]/[method:successfulDisconnect()]
replaced return value with null for edu/ucsb/cs156/frontiers/controllers/GithubController::disconnect → KILLED

Active mutators

Tests examined


Report generated by PIT 1.17.0