diff options
| author | Michael Klishin <mklishin@pivotal.io> | 2016-12-28 17:56:44 +0100 |
|---|---|---|
| committer | Michael Klishin <mklishin@pivotal.io> | 2016-12-28 17:56:44 +0100 |
| commit | f2012f2d9b07b8e92549cb115541e3af507e8083 (patch) | |
| tree | a13368488de6e24de78dbcb312d6e68981d5f177 /test | |
| parent | 109c449c269baf0f27645a818a1b8a6fb23d7418 (diff) | |
| download | rabbitmq-server-git-f2012f2d9b07b8e92549cb115541e3af507e8083.tar.gz | |
Basic property-based tests for min length validation strategy
Diffstat (limited to 'test')
| -rw-r--r-- | test/credential_validation_SUITE.erl | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/test/credential_validation_SUITE.erl b/test/credential_validation_SUITE.erl index 4d7a9ddd8e..ce3a60c678 100644 --- a/test/credential_validation_SUITE.erl +++ b/test/credential_validation_SUITE.erl @@ -17,6 +17,7 @@ -module(credential_validation_SUITE). -compile(export_all). +-include_lib("proper/include/proper.hrl"). -include_lib("common_test/include/ct.hrl"). -include_lib("eunit/include/eunit.hrl"). @@ -24,7 +25,9 @@ all() -> [ basic_unconditionally_accepting_succeeds, min_length_fails, - min_length_succeeds + min_length_succeeds, + min_length_proper_fails, + min_length_proper_succeeds ]. init_per_testcase(_, Config) -> @@ -75,3 +78,39 @@ min_length_succeeds(_Config) -> ?assertEqual(ok, F(crypto:strong_rand_bytes(20), 20)), ?assertEqual(ok, F(crypto:strong_rand_bytes(40), 30)), ?assertEqual(ok, F(crypto:strong_rand_bytes(50), 50)). + +min_length_proper_fails(_Config) -> + rabbit_ct_proper_helpers:run_proper(fun prop_min_length_fails_validation/0, [], 500). + +min_length_proper_succeeds(_Config) -> + rabbit_ct_proper_helpers:run_proper(fun prop_min_length_passes_validation/0, [], 500). + +%% +%% PropEr +%% + +prop_min_length_fails_validation() -> + N = 5, + F = fun rabbit_credential_validator_min_length:validate_password/2, + ?FORALL(Val, binary(N), + ?FORALL(Length, choose(N + 1, 100), + failed_validation(F(Val, Length + 1)))). + +prop_min_length_passes_validation() -> + N = 20, + F = fun rabbit_credential_validator_min_length:validate_password/2, + ?FORALL(Val, binary(N), + ?FORALL(Length, choose(1, N - 1), + passed_validation(F(Val, Length)))). + +%% +%% Helpers +%% + +passed_validation(ok) -> + true; +passed_validation({error, _}) -> + false. + +failed_validation(Result) -> + not passed_validation(Result). |
