|
|
@@ -0,0 +1,97 @@
|
|
|
+# SPDX-FileCopyrightText: 2021 Andrea Pappacoda
|
|
|
+#
|
|
|
+# SPDX-License-Identifier: MIT
|
|
|
+
|
|
|
+gtest_dep = dependency('gtest', main: true)
|
|
|
+openssl = find_program('openssl')
|
|
|
+test_conf = files('test.conf')
|
|
|
+
|
|
|
+key_pem = custom_target(
|
|
|
+ 'key_pem',
|
|
|
+ output: 'key.pem',
|
|
|
+ command: [openssl, 'genrsa', '-out', '@OUTPUT@', '2048']
|
|
|
+)
|
|
|
+
|
|
|
+temp_req = custom_target(
|
|
|
+ 'temp_req',
|
|
|
+ input: key_pem,
|
|
|
+ output: 'temp_req',
|
|
|
+ command: [openssl, 'req', '-new', '-batch', '-config', test_conf, '-key', '@INPUT@', '-out', '@OUTPUT@']
|
|
|
+)
|
|
|
+
|
|
|
+cert_pem = custom_target(
|
|
|
+ 'cert_pem',
|
|
|
+ input: [temp_req, key_pem],
|
|
|
+ output: 'cert.pem',
|
|
|
+ command: [openssl, 'x509', '-in', '@INPUT0@', '-days', '3650', '-req', '-signkey', '@INPUT1@', '-out', '@OUTPUT@']
|
|
|
+)
|
|
|
+
|
|
|
+cert2_pem = custom_target(
|
|
|
+ 'cert2_pem',
|
|
|
+ input: key_pem,
|
|
|
+ output: 'cert2.pem',
|
|
|
+ command: [openssl, 'req', '-x509', '-config', test_conf, '-key', '@INPUT@', '-sha256', '-days', '3650', '-nodes', '-out', '@OUTPUT@', '-extensions', 'SAN']
|
|
|
+)
|
|
|
+
|
|
|
+rootca_key_pem = custom_target(
|
|
|
+ 'rootca_key_pem',
|
|
|
+ output: 'rootCA.key.pem',
|
|
|
+ command: [openssl, 'genrsa', '-out', '@OUTPUT@', '2048']
|
|
|
+)
|
|
|
+
|
|
|
+rootca_cert_pem = custom_target(
|
|
|
+ 'rootca_cert_pem',
|
|
|
+ input: rootca_key_pem,
|
|
|
+ output: 'rootCA.cert.pem',
|
|
|
+ command: [openssl, 'req', '-x509', '-new', '-batch', '-config', files('test.rootCA.conf'), '-key', '@INPUT@', '-days', '1024', '-out', '@OUTPUT@']
|
|
|
+)
|
|
|
+
|
|
|
+client_key_pem = custom_target(
|
|
|
+ 'client_key_pem',
|
|
|
+ output: 'client.key.pem',
|
|
|
+ command: [openssl, 'genrsa', '-out', '@OUTPUT@', '2048']
|
|
|
+)
|
|
|
+
|
|
|
+client_temp_req = custom_target(
|
|
|
+ 'client_temp_req',
|
|
|
+ input: client_key_pem,
|
|
|
+ output: 'client_temp_req',
|
|
|
+ command: [openssl, 'req', '-new', '-batch', '-config', test_conf, '-key', '@INPUT@', '-out', '@OUTPUT@']
|
|
|
+)
|
|
|
+
|
|
|
+client_cert_pem = custom_target(
|
|
|
+ 'client_cert_pem',
|
|
|
+ input: [client_temp_req, rootca_cert_pem, rootca_key_pem],
|
|
|
+ output: 'client.cert.pem',
|
|
|
+ command: [openssl, 'x509', '-in', '@INPUT0@', '-days', '370', '-req', '-CA', '@INPUT1@', '-CAkey', '@INPUT2@', '-CAcreateserial', '-out', '@OUTPUT@']
|
|
|
+)
|
|
|
+
|
|
|
+# Copy test files to the build directory
|
|
|
+configure_file(input: 'ca-bundle.crt', output: 'ca-bundle.crt', copy: true)
|
|
|
+configure_file(input: 'image.jpg', output: 'image.jpg', copy: true)
|
|
|
+subdir(join_paths('www', 'dir'))
|
|
|
+subdir(join_paths('www2', 'dir'))
|
|
|
+subdir(join_paths('www3', 'dir'))
|
|
|
+
|
|
|
+test(
|
|
|
+ 'main',
|
|
|
+ executable(
|
|
|
+ 'main',
|
|
|
+ 'test.cc',
|
|
|
+ dependencies: [
|
|
|
+ cpp_httplib_dep,
|
|
|
+ gtest_dep
|
|
|
+ ]
|
|
|
+ ),
|
|
|
+ depends: [
|
|
|
+ key_pem,
|
|
|
+ cert_pem,
|
|
|
+ cert2_pem,
|
|
|
+ rootca_key_pem,
|
|
|
+ rootca_cert_pem,
|
|
|
+ client_key_pem,
|
|
|
+ client_cert_pem
|
|
|
+ ],
|
|
|
+ workdir: meson.current_build_dir(),
|
|
|
+ timeout: 300
|
|
|
+)
|