Commit af7211e9 authored by Peter Eisentraut's avatar Peter Eisentraut

passwordcheck: Add test suite

Also improve one error message.
Reviewed-by: default avatarDavid Steele <david@pgmasters.net>
parent 8423bf4f
# Generated subdirectories
/log/
/results/
/tmp_check/
...@@ -8,6 +8,11 @@ PGFILEDESC = "passwordcheck - strengthen user password checks" ...@@ -8,6 +8,11 @@ PGFILEDESC = "passwordcheck - strengthen user password checks"
# PG_CPPFLAGS = -DUSE_CRACKLIB '-DCRACKLIB_DICTPATH="/usr/lib/cracklib_dict"' # PG_CPPFLAGS = -DUSE_CRACKLIB '-DCRACKLIB_DICTPATH="/usr/lib/cracklib_dict"'
# SHLIB_LINK = -lcrack # SHLIB_LINK = -lcrack
REGRESS_OPTS = --temp-config $(srcdir)/passwordcheck.conf
REGRESS = passwordcheck
# disabled because these tests require setting shared_preload_libraries
NO_INSTALLCHECK = 1
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs) PGXS := $(shell $(PG_CONFIG) --pgxs)
......
CREATE USER regress_user1;
-- ok
ALTER USER regress_user1 PASSWORD 'a_nice_long_password';
-- error: too short
ALTER USER regress_user1 PASSWORD 'tooshrt';
ERROR: password is too short
-- error: contains user name
ALTER USER regress_user1 PASSWORD 'xyzregress_user1';
ERROR: password must not contain user name
-- error: contains only letters
ALTER USER regress_user1 PASSWORD 'alessnicelongpassword';
ERROR: password must contain both letters and nonletters
-- encrypted ok (password is "secret")
ALTER USER regress_user1 PASSWORD 'md51a44d829a20a23eac686d9f0d258af13';
-- error: password is user name
ALTER USER regress_user1 PASSWORD 'md5e589150ae7d28f93333afae92b36ef48';
ERROR: password must not equal user name
DROP USER regress_user1;
...@@ -70,7 +70,7 @@ check_password(const char *username, ...@@ -70,7 +70,7 @@ check_password(const char *username,
if (plain_crypt_verify(username, shadow_pass, username, &logdetail) == STATUS_OK) if (plain_crypt_verify(username, shadow_pass, username, &logdetail) == STATUS_OK)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE), (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("password must not contain user name"))); errmsg("password must not equal user name")));
} }
else else
{ {
......
shared_preload_libraries = 'passwordcheck'
CREATE USER regress_user1;
-- ok
ALTER USER regress_user1 PASSWORD 'a_nice_long_password';
-- error: too short
ALTER USER regress_user1 PASSWORD 'tooshrt';
-- error: contains user name
ALTER USER regress_user1 PASSWORD 'xyzregress_user1';
-- error: contains only letters
ALTER USER regress_user1 PASSWORD 'alessnicelongpassword';
-- encrypted ok (password is "secret")
ALTER USER regress_user1 PASSWORD 'md51a44d829a20a23eac686d9f0d258af13';
-- error: password is user name
ALTER USER regress_user1 PASSWORD 'md5e589150ae7d28f93333afae92b36ef48';
DROP USER regress_user1;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment