ejabberd-contrib/ejabberd_auth_http/deps/fusco/test/fusco_tests_SUITE.erl

103 lines
3.4 KiB
Erlang

%%%=============================================================================
%%% @copyright (C) 1999-2013, Erlang Solutions Ltd
%%% @author Diana Corbacho <diana.corbacho@erlang-solutions.com>
%%% @doc
%%% @end
%%%=============================================================================
-module(fusco_tests_SUITE).
-copyright("2013, Erlang Solutions Ltd.").
-include_lib("common_test/include/ct.hrl").
-compile(export_all).
all() ->
[{group, ipv4}, {group, ipv6}, {group, ipv4ssl}, {group, ipv6ssl},
{group, independent}].
init_per_group(ipv4, Config) ->
[{fusco_parameters, {"127.0.0.1", inet, false}} | Config];
init_per_group(ipv6, Config) ->
[{fusco_parameters, {"::1", inet6, false}} | Config];
init_per_group(ipv4ssl, Config) ->
[ok = application:start(App) || App <- apps()],
[{fusco_parameters, {"127.0.0.1", inet, true}} | Config];
init_per_group(ipv6ssl, Config) ->
[ok = application:start(App) || App <- apps()],
[{fusco_parameters, {"::1", inet6, true}} | Config];
init_per_group(independent, Config) ->
[{fusco_parameters, {"127.0.0.1", inet, false}} | Config].
end_per_group(ipv4, _Config) ->
ok;
end_per_group(ipv6, _Config) ->
ok;
end_per_group(ipv4ssl, _Config) ->
[application:stop(App) || App <- lists:reverse(apps())],
ok;
end_per_group(ipv6ssl, _Config) ->
[application:stop(App) || App <- lists:reverse(apps())],
ok;
end_per_group(independent, _Config) ->
ok.
apps() ->
[asn1, crypto, public_key, ssl, fusco].
groups() ->
[{ipv4, [], all_tests()},
{ipv6, [], all_tests()},
{ipv4ssl, [], all_tests()},
{ipv6ssl, [], all_tests()},
{independent, [], independent_tests()}].
all_tests() ->
[prop_http_request, prop_persistent_connection, prop_reconnect,
prop_client_close_connection, prop_connection_refused].
independent_tests() ->
[prop_http_request_cookie_path, prop_http_request_supersede_cookie,
prop_http_request_max_age, prop_http_request_expires].
%%==============================================================================
%% Test cases
%%==============================================================================
prop_http_request(Config) ->
do_prop(prop_http_request_per_family, Config).
prop_persistent_connection(Config) ->
do_prop(prop_persistent_connection_per_family, Config).
prop_reconnect(Config) ->
do_prop(prop_reconnect_per_family, Config).
prop_client_close_connection(Config) ->
do_prop(prop_client_close_connection_per_family, Config).
prop_connection_refused(Config) ->
do_prop(prop_connection_refused_per_family, Config).
prop_http_request_cookie_path(Config) ->
do_prop(prop_http_request_cookie_path, Config).
prop_http_request_supersede_cookie(Config) ->
do_prop(prop_http_request_supersede_cookie, Config).
prop_http_request_max_age(Config) ->
do_prop(prop_http_request_max_age, Config).
prop_http_request_expires(Config) ->
do_prop(prop_http_request_expires, Config).
%%==============================================================================
%% Internal functions
%%==============================================================================
do_prop(Case, Config) ->
{Ip, Family, Ssl} = ?config(fusco_parameters, Config),
case eqc:counterexample(erlang:apply(fusco_tests_eqc, Case, [Ip, Family, Ssl])) of
true ->
true;
Value ->
exit(Value)
end.