summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2016-12-28 17:56:44 +0100
committerMichael Klishin <mklishin@pivotal.io>2016-12-28 17:56:44 +0100
commitf2012f2d9b07b8e92549cb115541e3af507e8083 (patch)
treea13368488de6e24de78dbcb312d6e68981d5f177
parent109c449c269baf0f27645a818a1b8a6fb23d7418 (diff)
downloadrabbitmq-server-git-f2012f2d9b07b8e92549cb115541e3af507e8083.tar.gz
Basic property-based tests for min length validation strategy
-rw-r--r--test/credential_validation_SUITE.erl41
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).