1#!/bin/bash 2 3# Launch unitary tests 4# 5 6 7CONFIG_FILE="ppm.example" 8 9LDAP_SRC="${LDAP_SRC:-../../..}" 10LDAP_BUILD=${LDAP_BUILD:-${LDAP_SRC}} 11CURRENT_DIR=$( dirname $0 ) 12LIB_PATH="${LD_LIBRARY_PATH}:${CURRENT_DIR}:${LDAP_BUILD}/libraries/liblber/.libs:${LDAP_BUILD}/libraries/libldap/.libs" 13 14RED='\033[0;31m' 15GREEN='\033[0;32m' 16NC='\033[0m' 17 18RESULT=0 19 20PPM_CONF_1='minQuality 3 21checkRDN 0 22forbiddenChars 23maxConsecutivePerClass 0 24useCracklib 0 25cracklibDict /var/cache/cracklib/cracklib_dict 26class-upperCase ABCDEFGHIJKLMNOPQRSTUVWXYZ 0 1 27class-lowerCase abcdefghijklmnopqrstuvwxyz 0 1 28class-digit 0123456789 0 1 29class-special <>,?;.:/!§ù%*µ^¨$£²&é~"#'\''{([-|è`_\ç^à@)]°=}+ 0 1' 30 31PPM_CONF_2='minQuality 3 32checkRDN 0 33forbiddenChars à 34maxConsecutivePerClass 5 35useCracklib 0 36cracklibDict /var/cache/cracklib/cracklib_dict 37class-upperCase ABCDEFGHIJKLMNOPQRSTUVWXYZ 2 4 38class-lowerCase abcdefghijklmnopqrstuvwxyz 3 4 39class-digit 0123456789 2 4 40class-special <>,?;.:/!§ù%*µ^¨$£²&é~"#'\''{([-|è`_\ç^à@)]°=}+ 0 4' 41 42PPM_CONF_3='minQuality 3 43checkRDN 1 44forbiddenChars 45maxConsecutivePerClass 0 46useCracklib 0 47cracklibDict /var/cache/cracklib/cracklib_dict 48class-upperCase ABCDEFGHIJKLMNOPQRSTUVWXYZ 0 1 49class-lowerCase abcdefghijklmnopqrstuvwxyz 0 1 50class-digit 0123456789 0 1 51class-special <>,?;.:/!§ù%*µ^¨$£²&é~"#'\''{([-|è`_\ç^à@)]°=}+ 0 1' 52 53 54echo "$PPM_CONF_1" > ppm1.conf 55echo "$PPM_CONF_2" > ppm2.conf 56echo "$PPM_CONF_3" > ppm3.conf 57 58 59launch_test() 60{ 61 # launch tests 62 # FORMAT: launch_test [conf_file] [password] [expected_result] 63 # [expected_result] = [PASS|FAIL] 64 65 local CONF="$1" 66 local USER="$2" 67 local PASS="$3" 68 local EXPECT="$4" 69 70 [[ $EXPECT == "PASS" ]] && EXP="0" || EXP="1" 71 72 LD_LIBRARY_PATH="${LIB_PATH}" ./ppm_test "${USER}" "${PASS}" "${CONF}" 73 RES="$?" 74 75 if [ "$RES" -eq "$EXP" ] ; then 76 echo -e "conf=${CONF} user=${USER} pass=${PASS} expect=${EXPECT}... ${GREEN}PASS${NC}" 77 else 78 echo -e "conf=${CONF} user=${USER} pass=${PASS} expect=${EXPECT}... ${RED}FAIL${NC}" 79 ((RESULT+=1)) 80 fi 81 82 echo 83} 84 85 86 87 88launch_test "ppm1.conf" "uid=test,ou=users,dc=my-domain,dc=com" "azerty" "FAIL" 89launch_test "ppm1.conf" "uid=test,ou=users,dc=my-domain,dc=com" "azeRTY" "FAIL" 90launch_test "ppm1.conf" "uid=test,ou=users,dc=my-domain,dc=com" "azeRTY123" "PASS" 91launch_test "ppm1.conf" "uid=test,ou=users,dc=my-domain,dc=com" "azeRTY." "PASS" 92 93 94launch_test "ppm2.conf" "uid=test,ou=users,dc=my-domain,dc=com" "AAaaa01AAaaa01AAaaa0" "PASS" 95# forbidden char 96launch_test "ppm2.conf" "uid=test,ou=users,dc=my-domain,dc=com" "AAaaa01AAaaa01AAaaaà" "FAIL" 97# too much consecutive for upper 98launch_test "ppm2.conf" "uid=test,ou=users,dc=my-domain,dc=com" "AAaaa01AAaaa01AAAAAA" "FAIL" 99# not enough upper 100launch_test "ppm2.conf" "uid=test,ou=users,dc=my-domain,dc=com" "Aaaaa01aaaaa01aa.;.;" "FAIL" 101# not enough lower 102launch_test "ppm2.conf" "uid=test,ou=users,dc=my-domain,dc=com" "aaAAA01BB0123AAA.;.;" "FAIL" 103# not enough digit 104launch_test "ppm2.conf" "uid=test,ou=users,dc=my-domain,dc=com" "1AAAA.;BBB.;.;AA.;.;" "FAIL" 105# not enough points (no point for digit) 106launch_test "ppm2.conf" "uid=test,ou=users,dc=my-domain,dc=com" "AAaaaBBBBaaa01AAaaaa" "FAIL" 107 108# password in RDN 109launch_test "ppm3.conf" "uid=User_Password10-test,ou=users,dc=my-domain,dc=com" "Password10" "FAIL" 110launch_test "ppm3.conf" "uid=User_Passw0rd-test,ou=users,dc=my-domain,dc=com" "Password10" "PASS" 111launch_test "ppm3.conf" "uid=User-Pw-Test,ou=users,dc=my-domain,dc=com" "Password10" "PASS" 112 113 114echo "${RESULT} error(s) encountered" 115 116rm ppm1.conf ppm2.conf ppm3.conf 117exit ${RESULT} 118 119