@@ -3,10 +3,15 @@ local treegen = require('luatest.treegen')
33local server = require (' luatest.server' )
44local fun = require (' fun' )
55local yaml = require (' yaml' )
6+ local fio = require (' fio' )
7+ local http_client = require (' http.client' ).new ()
8+
69
710local helpers = require (' test.helpers' )
811
9- local g = t .group ()
12+ local g = t .group (nil , t .helpers .matrix ({use_tls = {true , false }}))
13+
14+ local ssl_data_dir = fio .abspath (fio .pathjoin (helpers .get_testdir_path (), " ssl_data" ))
1015
1116local config = {
1217 credentials = {
@@ -55,29 +60,58 @@ local config = {
5560 },
5661}
5762
58- g .before_each (function ()
63+ local tls_config = table .deepcopy (config )
64+ tls_config .groups [' group-001' ].replicasets [' replicaset-001' ].roles_cfg [' roles.httpd' ].default
65+ .ssl_cert_file = fio .pathjoin (ssl_data_dir , ' server.crt' )
66+
67+ tls_config .groups [' group-001' ].replicasets [' replicaset-001' ].roles_cfg [' roles.httpd' ].default
68+ .ssl_key_file = fio .pathjoin (ssl_data_dir , ' server.enc.key' )
69+
70+ tls_config .groups [' group-001' ].replicasets [' replicaset-001' ].roles_cfg [' roles.httpd' ].default
71+ .ssl_password_file = fio .pathjoin (ssl_data_dir , ' passwords' )
72+
73+ g .before_each (function (cg )
5974 helpers .skip_if_not_tarantool3 ()
6075
6176 local dir = treegen .prepare_directory ({}, {})
6277
78+ local cfg = config
79+ if cg .params .use_tls then
80+ cfg = tls_config
81+ end
82+
6383 local config_file = treegen .write_file (dir , ' config.yaml' ,
64- yaml .encode (config ))
84+ yaml .encode (cfg ))
6585 local opts = {config_file = config_file , chdir = dir }
66- g .server = server :new (fun .chain (opts , {alias = ' instance-001' }):tomap ())
67- helpers .update_lua_env_variables (g .server )
86+ cg .server = server :new (fun .chain (opts , {alias = ' instance-001' }):tomap ())
87+ helpers .update_lua_env_variables (cg .server )
6888
69- g .server :start ()
89+ cg .server :start ()
7090end )
7191
72- g .after_each (function ()
73- g . server : stop ( )
92+ g .after_each (function (cg )
93+ helpers . teardown ( cg . server )
7494end )
7595
76- g .test_httpd_role_usage = function ()
77- t .assert_equals (g .server :eval (
96+ g .test_httpd_role_usage = function (cg )
97+ if cg .params .use_tls then
98+ local resp = http_client :get (' https://localhost:13000/ping' , {
99+ ca_file = fio .pathjoin (ssl_data_dir , ' ca.crt' )
100+ })
101+ t .assert_equals (resp .status , 200 , ' response not 200' )
102+ t .assert_equals (resp .body , ' pong' )
103+ end
104+
105+ -- We can use https only for one endpoind due to we haven't publish separate
106+ -- certificates for it.
107+ local resp = http_client :get (' http://localhost:13001/ping' )
108+ t .assert_equals (resp .status , 200 , ' response not 200' )
109+ t .assert_equals (resp .body , ' pong' )
110+
111+ t .assert_equals (cg .server :eval (
78112 ' return require("test.mocks.mock_role").get_server_port(1)'
79113 ), 13000 )
80- t .assert_equals (g .server :eval (
114+ t .assert_equals (cg .server :eval (
81115 ' return require("test.mocks.mock_role").get_server_port(2)'
82116 ), 13001 )
83117end
0 commit comments