Salta el contingut
 

Pràctica 2: Proves de mètodes estàtics i Git

Joan Puigcerver Ibáñez

j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Proves de mètodes estàtics i Git

Comprovació d'una contrasenya segura: PasswordStrengthChecker

ud4.methods

La classe PasswordStrengthChecker proporciona un mètode estàtic isPasswordStrong(password) que ens indica si la contrasenya és forta, tinguen en compte els següents criteris:

  • La longitud mínima de la contrassenya és 8 caràcters.
  • Conté majúscules, minúscules i símbols.

Retornarà un valor de l'enumerat PasswordStrength amb algun dels següents valors:

  • INVALID: La contrasenya no compleix els requisits de longitud.
  • WEAK: La contrasenya sols conté caràcters d'un sol tipus.
  • MEDIUM: La contrasenya combina caràcters de dos tipus diferents.
  • STRONG: La contrasenya combina tots els tipus de caràcters.
PasswordStrengthChecker.java
package ud4.methods;

public class PasswordStrengthChecker
{
    public enum PasswordStrength {
        INVALID,
        WEAK,
        MEDIUM,
        STRONG
    }

    public static PasswordStrength checkStrength(String password) {
        if (password == null || password.length() < 8) {
            return PasswordStrength.INVALID;
        }

        boolean hasLowercase = password.matches(".*[a-z].*");
        boolean hasUppercase = password.matches(".*[A-Z].*");
        boolean hasSymbol = password.matches(".*[^a-zA-Z0-9].*");

        int typeCount = 0;
        if (hasLowercase) typeCount++;
        if (hasUppercase) typeCount++;
        if (hasSymbol) typeCount++;

        return switch (typeCount) {
            case 1 -> PasswordStrength.WEAK;
            case 2 -> PasswordStrength.MEDIUM;
            case 3 -> PasswordStrength.STRONG;
            default -> PasswordStrength.INVALID;
        };
    }
}

Proves unitàries

En aquest exercici, heu de realitzar les proves unitàries del mètode isPasswordStrong(password), tiniguent en compte les següents consideracions:

  • Utilitza classes @Nested per agrupar les proves segons la seua fortalesa.
  • Utilitza l'anotació @DisplayName per donar un nom significatiu a cada classe i prova.

Git

Per realitzar aquesta tasca, heu de seguir els següents passos amb Git:

  • Crear la branca p2/backup des de main, per tornar enrere si fora necessari.
  • Crea la branca p2/source-code de de main, on has de fer un commit per afegir el fitxer PasswordStrengthChecker i el fitxer de proves PasswordStrengthCheckerTest.
  • Incorpora els canvis de p2/source-code a main mitjançant una fusió directa (fast-forward).
  • Crea les branques p2/test-invalid, p2/test-weak,p2/test-medium,p2/test-strong.
  • En cada branca, implementa les proves unitàries corresponents.
  • Una vegada acabades totes les branques, publica les branques al repositori remot.
  • Incorpora les branques a main mantenint una història lineal.

    No tornes a publicar cada branca al repositori remot.

  • Publica els canvis de la branca main.

Tornar a començar

Realitza les següents accions per tornar a l'estat inicial:

  • Situat a la branca principal.

    $ git checkount main
    
  • Elimina les branques locals a la pràctica:

    git branch -D <branch_name>
    

    No elimineu la branca main o master.

    Eliminem les 3 branques locals.

    $ git branch -D p2/source-code
    $ git branch -D p2/test-invalid
    $ git branch -D p2/test-weak
    $ git branch -D p2/test-medium
    $ git branch -D p2/test-strong
    
  • Eliminar les branques remotes:

    git push -d origin <branch_name>
    

    Eliminem les 3 branques remotes.

    $ git push -d origin p2/source-code
    $ git push -d origin p2/test-invalid
    $ git push -d origin p2/test-weak
    $ git push -d origin p2/test-medium
    $ git push -d origin p2/test-strong
    
  • Moure la referència de la branca principal a l'inici de l'exercici: Moure enrere la referència de la branca main a la branca p2/backup.

    git reset --hard <ref>
    

    Example

    $ git reset --hard p2/backup
    
  • Moure una branca remota: Després d'haver mogut la branca local, podeu moure la branca remota a la mateixa posició amb:

    git push -f
    

    Example

    Actualitzem la branca remota origin/main a la mateixa posició que la branca local main.

    $ git checkout main
    $ git push -f
    
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.