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