-- Citus uses ssl by default now. It does so by turning on ssl and if needed will generate
-- self-signed certificates.

-- To test this we will verify that SSL is set to ON for all machines, and we will make
-- sure connections to workers use SSL by having it required in citus.conn_nodeinfo and
-- lastly we will inspect the ssl state for connections to the workers

-- ssl can only be enabled by default on installations of postgres 10 and above that are
-- OpenSSL-enabled.
SHOW server_version \gset
SHOW ssl_ciphers \gset
WITH features AS (
    SELECT
        substring(:'server_version', '\d+')::int >= 10 AS version_ten_or_above,
        :'ssl_ciphers' != 'none' AS hasssl
)
SELECT (
    true
    AND version_ten_or_above
    AND hasssl
) AS ssl_by_default_supported FROM features;

SHOW ssl;
SELECT run_command_on_workers($$
    SHOW ssl;
$$);

SHOW citus.node_conninfo;
SELECT run_command_on_workers($$
    SHOW citus.node_conninfo;
$$);

SELECT run_command_on_workers($$
    SELECT ssl FROM pg_stat_ssl WHERE pid = pg_backend_pid();
$$);

SHOW ssl_ciphers;
SELECT run_command_on_workers($$
    SHOW ssl_ciphers;
$$);
