Current section
Files
Jump to
Current section
Files
test/ssl_tests.erl
%% MySQL/OTP – MySQL client library for Erlang/OTP
%% Copyright (C) 2017 Piotr Nosek, Viktor Söderqvist
%%
%% This file is part of MySQL/OTP.
%%
%% MySQL/OTP is free software: you can redistribute it and/or modify it under
%% the terms of the GNU Lesser General Public License as published by the Free
%% Software Foundation, either version 3 of the License, or (at your option)
%% any later version.
%%
%% This program is distributed in the hope that it will be useful, but WITHOUT
%% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
%% FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
%% more details.
%%
%% You should have received a copy of the GNU Lesser General Public License
%% along with this program. If not, see <https://www.gnu.org/licenses/>.
%% @doc This module tests to connect to a database over SSL.
-module(ssl_tests).
-include_lib("eunit/include/eunit.hrl").
-define(ssl_user, "otptestssl").
-define(ssl_password, "otptestssl").
-define(cacertfile, "test/ssl/ca.pem").
successful_ssl_connect_test() ->
[ application:start(App) || App <- [crypto, asn1, public_key, ssl] ],
common_basic_check([{ssl, [{cacertfile, ?cacertfile}]},
{user, ?ssl_user}, {password, ?ssl_password}]),
common_conn_close(),
ok.
common_basic_check(ExtraOpts) ->
Options = [{name, {local, tardis}},
{queries, ["SET @foo = 'bar'", "SELECT 1",
"SELECT 1; SELECT 2"]},
{prepare, [{foo, "SELECT @foo"}]} | ExtraOpts],
{ok, Pid} = mysql:start_link(Options),
%% Check that queries and prepare has been done.
?assertEqual({ok, [<<"@foo">>], [[<<"bar">>]]},
mysql:execute(Pid, foo, [])),
Pid.
common_conn_close() ->
Pid = whereis(tardis),
process_flag(trap_exit, true),
exit(Pid, normal),
receive
{'EXIT', Pid, normal} -> ok
after
5000 -> error({cant_stop_connection, Pid})
end,
process_flag(trap_exit, false).