use strict; use warnings; use Setup; use Hydra::Config; my %ctx = test_init(hydra_config => q| listen_address = 127.0.0.1 port = 9199 |); require Hydra::Helper::Nix; use Test2::V0; is(Hydra::Helper::Nix::getHydraNotifyPrometheusConfig(getHydraConfig()), { 'listen_address' => "127.0.0.1", 'port' => 9199 }, "Reading specific configuration from the hydra.conf works"); is(Hydra::Helper::Nix::getHydraNotifyPrometheusConfig({ "hydra_notify" => ":)" }), undef, "Invalid (hydra_notify is a string) configuration options are undef"); is(Hydra::Helper::Nix::getHydraNotifyPrometheusConfig({ "hydra_notify" => [] }), undef, "Invalid (hydra_notify is a list) configuration options are undef"); is(Hydra::Helper::Nix::getHydraNotifyPrometheusConfig({ "hydra_notify" => {} }), undef, "Invalid (hydra_notify is an empty hash) configuration options are undef"); is(Hydra::Helper::Nix::getHydraNotifyPrometheusConfig({ "hydra_notify" => { "prometheus" => ":)" } }), undef, "Invalid (hydra_notify.prometheus is a string) configuration options are undef"); is(Hydra::Helper::Nix::getHydraNotifyPrometheusConfig({ "hydra_notify" => { "prometheus" => {} } }), undef, "Invalid (hydra_notify.prometheus is an empty hash) configuration options are undef"); is(Hydra::Helper::Nix::getHydraNotifyPrometheusConfig({ "hydra_notify" => { "prometheus" => { "listen_address" => "0.0.0.0" } } }), undef, "Invalid (hydra_notify.prometheus.port is missing) configuration options are undef"); is(Hydra::Helper::Nix::getHydraNotifyPrometheusConfig({ "hydra_notify" => { "prometheus" => { "port" => 1234 } } }), undef, "Invalid (hydra_notify.prometheus.listen_address is missing) configuration options are undef"); is(Hydra::Helper::Nix::getHydraNotifyPrometheusConfig({ "hydra_notify" => { "prometheus" => { "listen_address" => "127.0.0.1", "port" => 1234 } } }), { "listen_address" => "127.0.0.1", "port" => 1234 }, "Fully specified hydra_notify.prometheus config is valid and returned"); is(Hydra::Helper::Nix::getHydraNotifyPrometheusConfig({ "hydra_notify" => { "prometheus" => { "listen_address" => "127.0.0.1", "port" => 1234, "extra_keys" => "meh", } } }), { "listen_address" => "127.0.0.1", "port" => 1234 }, "extra configuration in hydra_notify.prometheus is not returned"); done_testing;