def test_no_and_partialsecret_data(self, mock_secret): """When secret is valid, interpolate urlTemplate""" expr = ExperimentResource(**er_example) metric_resource: MetricResource = expr.status.metrics[0].metricObj metric_resource.spec.urlTemplate = "https://prometheus.com:${port}/$endpoint" metric_resource.spec.secret = "valid" mock_secret.return_value = ({ "port": 8080, "endpoint": "nothingtosee" }, None) (url, err) = get_url(metric_resource) mock_secret.assert_called_with(metric_resource) assert url == "https://prometheus.com:8080/nothingtosee" assert err is None mock_secret.return_value = ({"port": 8080}, None) (url, err) = get_url(metric_resource) mock_secret.assert_called_with(metric_resource) assert url == "https://prometheus.com:8080/$endpoint" assert err is None mock_secret.return_value = {}, None (url, err) = get_url(metric_resource) mock_secret.assert_called_with(metric_resource) assert url == "https://prometheus.com:${port}/$endpoint" assert err is None mock_secret.return_value = None, None (url, err) = get_url(metric_resource) mock_secret.assert_called_with(metric_resource) assert url == "https://prometheus.com:${port}/$endpoint" assert err is None
def test_no_secret_ref(self, mock_secret): """When secret is None, url equals urlTemplate""" expr = ExperimentResource(**er_example) metric_resource: MetricResource = expr.status.metrics[0].metricObj url, _ = get_url(metric_resource) self.assertFalse(mock_secret.called, \ "attempt to fetch secret when no secret is referenced in metric resource") assert url == metric_resource.spec.urlTemplate
def test_invalid_secret(self, mock_secret): """When secret is invalid, get error""" expr = ExperimentResource(**er_example) metric_resource: MetricResource = expr.status.metrics[0].metricObj metric_resource.spec.secret = "invalid" mock_secret.return_value = ({}, \ KeyError("cannot find secret invalid in namespace iter8-system")) (url, err) = get_url(metric_resource) mock_secret.assert_called_with(metric_resource) assert url is None assert err is not None