From ed50a5556a788a9780b5a8f85764b509338c1073 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Sun, 22 Jul 2012 05:55:48 +0200 Subject: Add an SSL test --- test/acceptor_SUITE.erl | 61 ++++++++++++++++++++++++++++++++++----- test/acceptor_SUITE_data/cert.pem | 32 ++++++++++++++++++++ 2 files changed, 86 insertions(+), 7 deletions(-) create mode 100644 test/acceptor_SUITE_data/cert.pem diff --git a/test/acceptor_SUITE.erl b/test/acceptor_SUITE.erl index 0a15916..bf74a1d 100644 --- a/test/acceptor_SUITE.erl +++ b/test/acceptor_SUITE.erl @@ -16,17 +16,31 @@ -include_lib("common_test/include/ct.hrl"). --export([all/0, groups/0, init_per_suite/1, end_per_suite/1]). %% ct. --export([tcp_echo/1]). %% tcp. +%% ct. +-export([all/0]). +-export([groups/0]). +-export([init_per_suite/1]). +-export([end_per_suite/1]). +-export([init_per_group/2]). +-export([end_per_group/2]). + +%% ssl. +-export([ssl_echo/1]). + +%% tcp. +-export([tcp_echo/1]). %% ct. all() -> - [{group, tcp}]. + [{group, tcp}, {group, ssl}]. groups() -> - Tests = [tcp_echo], - [{tcp, Tests}]. + [{tcp, [ + tcp_echo + ]}, {ssl, [ + ssl_echo + ]}]. init_per_suite(Config) -> application:start(ranch), @@ -36,6 +50,39 @@ end_per_suite(_) -> application:stop(ranch), ok. +init_per_group(ssl, Config) -> + application:start(crypto), + application:start(public_key), + application:start(ssl), + Config; +init_per_group(_, Config) -> + Config. + +end_per_group(ssl, _) -> + application:stop(ssl), + application:stop(public_key), + application:stop(crypto), + ok; +end_per_group(_, _) -> + ok. + +%% ssl. + +ssl_echo(Config) -> + {ok, _} = ranch:start_listener(ssl_echo, 1, + ranch_ssl, [{port, 0}, + {certfile, ?config(data_dir, Config) ++ "cert.pem"}], + echo_protocol, []), + Port = ranch:get_port(ssl_echo), + {ok, Socket} = ssl:connect("localhost", Port, + [binary, {active, false}, {packet, raw}, + {certfile, ?config(data_dir, Config) ++ "cert.pem"}]), + ok = ssl:send(Socket, <<"SSL Ranch is working!">>), + {ok, <<"SSL Ranch is working!">>} = ssl:recv(Socket, 21, 1000), + ok = ranch:stop_listener(ssl_echo), + {error, closed} = ssl:recv(Socket, 0, 1000), + ok. + %% tcp. tcp_echo(_) -> @@ -44,8 +91,8 @@ tcp_echo(_) -> Port = ranch:get_port(tcp_echo), {ok, Socket} = gen_tcp:connect("localhost", Port, [binary, {active, false}, {packet, raw}]), - ok = gen_tcp:send(Socket, <<"Ranch is working!">>), - {ok, <<"Ranch is working!">>} = gen_tcp:recv(Socket, 0, 1000), + ok = gen_tcp:send(Socket, <<"TCP Ranch is working!">>), + {ok, <<"TCP Ranch is working!">>} = gen_tcp:recv(Socket, 21, 1000), ok = ranch:stop_listener(tcp_echo), {error, closed} = gen_tcp:recv(Socket, 0, 1000), ok. diff --git a/test/acceptor_SUITE_data/cert.pem b/test/acceptor_SUITE_data/cert.pem new file mode 100644 index 0000000..7f2150b --- /dev/null +++ b/test/acceptor_SUITE_data/cert.pem @@ -0,0 +1,32 @@ +-----BEGIN PRIVATE KEY----- +MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANcQOH8U6JHnmXtf +20T5Ue7HSfxql75a56tr1ofrHM4P2P7ek/eP04+W2pFrQ3wLGEcnIVHY1xuUeBr+ +GUIBxNzsB2fKGJHDD4RwYCplzxNGVt1F7VXe3fOCdzsNTUYO9YXHF+lsY3afQ6e1 +yb+OR2MFoVX7JCbYvFoJ4XtqCleRAgMBAAECgYANVT0ba9FrUj9qraurYAWbVxGY +K4eSzpH0R7A6JvJXOBZM3sGvpGQKT+DnCQ5a/1kW+C8Rou7bD95OVhh8xh1NM9ZV +Ho6McI80iA9FtSVxIecDyteDQOlz2YISgFsnuhnWm6bMVr+S2s9pOIyyQmQNEbV9 +WbYv6URnp7E7YoIinQJBAPdusE4jQlnPR3bBeRVeQ+gwtp0yTznE49rOi5d5Kbk8 +0NWd4KCozPZQnLWZpX/Hh3UcF3AWBII7jScySg2ocFcCQQDegpqSGEeXZReIJ8/Y +t3yuGK/F0iTMfwXD5Cn7rau5XSzQ4EvdUFSzlLf1i3mSGlLKQ2XIxNEny2gBD6cT +UuZXAkEA45HWbcdYGyndXIgNSW3tnvxOuL2wyD0iI/ibwrEZgtlAaXhPRPR7rn/t +4chywtdM6pTvqZNWikEjTc2e9njY+QJABq9j13nVRM4ru9J+YyN4In7pYQckReSX +FsCXJlGcdDBBdXEXtmmAcfjI4h6zo1kZHayStUp8gjaRRF7lBSabdwJBALZiddQ7 +HX03nFOvEFe0kygtTGDQywmRA0ZLtGwKpruRCSfkd0GGHR28L4RYGOs/MLMS9na+ +RJfoCyHrn4Tp9Fs= +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIICgDCCAemgAwIBAgIJALu4ZVz5MZO5MA0GCSqGSIb3DQEBBQUAMFkxCzAJBgNV +BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX +aWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xMjA2MTEwNTM5 +MDNaFw0zOTEwMjgwNTM5MDNaMFkxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21l +LVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNV +BAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1xA4fxTo +keeZe1/bRPlR7sdJ/GqXvlrnq2vWh+sczg/Y/t6T94/Tj5bakWtDfAsYRychUdjX +G5R4Gv4ZQgHE3OwHZ8oYkcMPhHBgKmXPE0ZW3UXtVd7d84J3Ow1NRg71hccX6Wxj +dp9Dp7XJv45HYwWhVfskJti8Wgnhe2oKV5ECAwEAAaNQME4wHQYDVR0OBBYEFFXs +nTn66qjp1VqeF816Jg4OJd3yMB8GA1UdIwQYMBaAFFXsnTn66qjp1VqeF816Jg4O +Jd3yMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAHwfPJWK5UsWns79S +jZvdzZ3UPVz0UYj/9Nv/bhxN8HaD1Osj4lFHUiqnTXm7r3hD962lcqRA0dUvVUTv +Ftz5BEqsjUPkLvN4E4ZG0O5mh8mAEm2M3Ok9eDyZW/8c1kX7r82YnF+8TzI+IIu5 +uZ/oqqAeTL/F3oTcTKSbA3WBrpg= +-----END CERTIFICATE----- -- cgit v1.2.3