Code Source – SentinelLog: test_suite.bats

#!/usr/bin/env bats 
# Remarque: le shebang a change, le shell devra utiliser l'utilitaire bats (a telecharger au besoin)
#==================================================================================================
# Tests fonctionnels bats 
#==================================================================================================

# Preparation des donnees de tests 
setup(){
    TEST_DIR=$(mktemp -d)
    DUMMY_LOG="${TEST_DIR}/auth.log"
    echo "User admin@example.com logged in from 192.168.1.50 with token=secret123" > "$DUMMY_LOG"
}

# Test de validation des arguments 
@test "TC-01: Validation du parsing des arguments valides" {
    run ./main.sh -d "${TEST_DIR}" -l 10
    echo "${status}"
    echo "${TEST_DIR}"
    [ "$status -eq 0" ] || [ "$status" -eq 1 ]
}

# Test de verification de l'anonymisation de l'adresse IP et de l'email 
@test "TC-02: Verification d'anonymisation effective de l'adresse IP et de l'email" {
    source ./settings.env 
    source ./lib/anonymizer.sh 

    result=$(cat "${DUMMY_LOG}" | anonymize_stream )
    
    [[ "$result" != *"192.168.1.50"* ]]
    [[ "$result" != *"admin@example.com"* ]]
    [[ "$result" != *"token=secret123"* ]]
    [[ "$result" =~ "xxx.xxx.xxx.xxx" ]]
    [[ "$result" =~ [ANONYMIZED_EMAIL] ]]
    [[ "$result" =~ [REDACTED_TOKEN] ]]    
    
}

# Test d'echouage securise au cas ou le test n'existe pas 
@test "TC-03: Echec propre si le repertoire n'existe pas" {
    run ./main.sh -d "/path/does_not_exist" -l -s 
    [ "$status" -ne 0 ]
}

endSetup(){
    rm -rf "${TEST_DIR}"
}

Vous aimerez aussi...