RegisterPlayerUseCaseService.java

1
package org.hplr.user.core.usecases.service;
2
3
import lombok.RequiredArgsConstructor;
4
import org.hplr.library.exception.HPLRValidationException;
5
import org.hplr.user.core.model.Player;
6
import org.hplr.user.core.model.PlayerFullDataSnapshot;
7
import org.hplr.user.core.model.vo.PlayerSecurity;
8
import org.hplr.user.core.model.vo.UserId;
9
import org.hplr.user.core.usecases.port.dto.InitialPlayerSaveDataDto;
10
import org.hplr.user.core.usecases.port.in.RegisterPlayerUseCaseInterface;
11
import org.hplr.user.core.usecases.port.out.command.SavePlayerDataCommandInterface;
12
import org.hplr.user.core.usecases.service.dto.InitialPlayerSaveDto;
13
import org.hplr.library.exception.HPLRIllegalStateException;
14
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
15
import org.springframework.stereotype.Service;
16
17
import java.time.LocalDateTime;
18
import java.util.Objects;
19
import java.util.UUID;
20
21
@RequiredArgsConstructor
22
@Service
23
public class RegisterPlayerUseCaseService implements RegisterPlayerUseCaseInterface {
24
25
    final SavePlayerDataCommandInterface savePlayerDataCommandInterface;
26
    @Override
27
    public UUID registerPlayer(InitialPlayerSaveDataDto initialPlayerSaveDataDto) {
28
        Player player;
29
        PlayerFullDataSnapshot playerFullDataSnapshot;
30
        UserId userId = new UserId(UUID.randomUUID());
31
        String pwHash = generatePasswordHash(initialPlayerSaveDataDto.password(), initialPlayerSaveDataDto.repeatedPassword());
32
        PlayerSecurity playerSecurity = new PlayerSecurity(
33
                pwHash,
34
                LocalDateTime.now(),
35
                null
36
        );
37
        try{
38
            InitialPlayerSaveDto initialPlayerSaveDto = new InitialPlayerSaveDto(
39
                    initialPlayerSaveDataDto,
40
                    userId,
41
                    playerSecurity
42
            );
43
            player = Player.fromDto(initialPlayerSaveDto);
44
            playerFullDataSnapshot = player.toFullSnapshot();
45 1 1. registerPlayer : removed call to org/hplr/user/core/usecases/port/out/command/SavePlayerDataCommandInterface::savePlayer → KILLED
            savePlayerDataCommandInterface.savePlayer(playerFullDataSnapshot);
46
        } catch(HPLRValidationException exception) {
47
            throw new HPLRValidationException(exception.getMessage());
48
        }
49 1 1. registerPlayer : replaced return value with null for org/hplr/user/core/usecases/service/RegisterPlayerUseCaseService::registerPlayer → KILLED
        return playerFullDataSnapshot.userId().id();
50
    }
51
52
    private String generatePasswordHash(String password, String repeatedPassword) {
53
        BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
54 1 1. generatePasswordHash : negated conditional → KILLED
        if(Objects.equals(password, repeatedPassword)){
55 1 1. generatePasswordHash : replaced return value with "" for org/hplr/user/core/usecases/service/RegisterPlayerUseCaseService::generatePasswordHash → KILLED
            return bCryptPasswordEncoder.encode(password);
56
        }
57
        else throw new HPLRIllegalStateException("Provided passwords do not match");
58
    }
59
}

Mutations

45

1.1
Location : registerPlayer
Killed by : org.hplr.user.core.usecases.service.RegisterPlayerUseCaseServiceTests.[engine:junit-jupiter]/[class:org.hplr.user.core.usecases.service.RegisterPlayerUseCaseServiceTests]/[method:register_player_with_correct_password_and_succeed()]
removed call to org/hplr/user/core/usecases/port/out/command/SavePlayerDataCommandInterface::savePlayer → KILLED

49

1.1
Location : registerPlayer
Killed by : org.hplr.user.core.usecases.service.RegisterPlayerUseCaseServiceTests.[engine:junit-jupiter]/[class:org.hplr.user.core.usecases.service.RegisterPlayerUseCaseServiceTests]/[method:register_player_with_correct_password_and_succeed()]
replaced return value with null for org/hplr/user/core/usecases/service/RegisterPlayerUseCaseService::registerPlayer → KILLED

54

1.1
Location : generatePasswordHash
Killed by : org.hplr.user.core.usecases.service.RegisterPlayerUseCaseServiceTests.[engine:junit-jupiter]/[class:org.hplr.user.core.usecases.service.RegisterPlayerUseCaseServiceTests]/[method:register_player_with_different_passwords_and_fail()]
negated conditional → KILLED

55

1.1
Location : generatePasswordHash
Killed by : org.hplr.user.core.usecases.service.RegisterPlayerUseCaseServiceTests.[engine:junit-jupiter]/[class:org.hplr.user.core.usecases.service.RegisterPlayerUseCaseServiceTests]/[method:register_player_with_correct_password_and_succeed()]
replaced return value with "" for org/hplr/user/core/usecases/service/RegisterPlayerUseCaseService::generatePasswordHash → KILLED

Active mutators

Tests examined


Report generated by PIT 1.16.1