Fix rbac mocking in unit tests

Seems like the rbac object wasn't being mocked correctly. Especialy
the disable_rbac property, which is set to False by default, but
the tests behaved as if it was set to True, which wasn't the intention.

This patch sets the property to False and fixes 2 tests, which broke
because of this. The new behavior of the tests is actually the
correct behavior in those situations.

Change-Id: I58d32d2728cf45486e54a12921834a5f3764aeb6
This commit is contained in:
Jaromir Wysoglad
2025-04-10 04:15:43 -04:00
parent d86f7f1b1f
commit 4957ec6bf7
2 changed files with 28 additions and 6 deletions

View File

@@ -34,6 +34,7 @@ class QueryManagerTest(testtools.TestCase):
self.rbac = mock.Mock(wraps=rbac.Rbac(self.client, mock.Mock())) self.rbac = mock.Mock(wraps=rbac.Rbac(self.client, mock.Mock()))
self.rbac.default_labels = {'project': 'project_id'} self.rbac.default_labels = {'project': 'project_id'}
self.rbac.rbac_init_succesful = True self.rbac.rbac_init_succesful = True
self.rbac.disable_rbac = False
self.manager = python_api.QueryManager(self.client) self.manager = python_api.QueryManager(self.client)
@@ -41,15 +42,32 @@ class QueryManagerTest(testtools.TestCase):
self.client.query = self.manager self.client.query = self.manager
def test_list(self): def test_list(self):
returned_by_prom = {'data': ['metric1', 'test42', 'abc2']} returned_by_prom_rbac = {
'data': [
{
'__name__': 'metric1',
'label1': 'foo'
},
{
'__name__': 'test42',
'anotherlabel': 'bar'
},
{
'__name__': 'abc2',
}
]
}
returned_by_prom_no_rbac = {'data': ['metric1', 'test42', 'abc2']}
expected = ['abc2', 'metric1', 'test42'] expected = ['abc2', 'metric1', 'test42']
with mock.patch.object(prometheus_client.PrometheusAPIClient, '_get', with mock.patch.object(prometheus_client.PrometheusAPIClient, '_get',
return_value=returned_by_prom): return_value=returned_by_prom_rbac):
ret1 = self.manager.list() ret1 = self.manager.list()
ret2 = self.manager.list(disable_rbac=True)
self.assertEqual(expected, ret1) self.assertEqual(expected, ret1)
with mock.patch.object(prometheus_client.PrometheusAPIClient, '_get',
return_value=returned_by_prom_no_rbac):
ret2 = self.manager.list(disable_rbac=True)
self.assertEqual(expected, ret2) self.assertEqual(expected, ret2)
def test_show(self): def test_show(self):
@@ -79,7 +97,8 @@ class QueryManagerTest(testtools.TestCase):
self.assertThat(ret2, expected_matcher) self.assertThat(ret2, expected_matcher)
def test_query(self): def test_query(self):
query = 'some_metric' queried_metric_name = 'some_metric'
query = queried_metric_name
returned_by_prom = { returned_by_prom = {
'data': { 'data': {
'resultType': 'non-vector' 'resultType': 'non-vector'
@@ -92,7 +111,9 @@ class QueryManagerTest(testtools.TestCase):
expected = [prometheus_client.PrometheusMetric(returned_by_prom)] expected = [prometheus_client.PrometheusMetric(returned_by_prom)]
expected_matcher = MetricListMatcher(expected) expected_matcher = MetricListMatcher(expected)
with mock.patch.object(prometheus_client.PrometheusAPIClient, '_get', with mock.patch.object(prometheus_client.PrometheusAPIClient, '_get',
return_value=returned_by_prom): return_value=returned_by_prom), \
mock.patch.object(python_api.QueryManager, 'list',
return_value=queried_metric_name):
ret1 = self.manager.query(query) ret1 = self.manager.query(query)
self.rbac.enrich_query.assert_called_with(query, self.rbac.enrich_query.assert_called_with(query,
disable_rbac=False) disable_rbac=False)

View File

@@ -29,6 +29,7 @@ class RbacTest(testtools.TestCase):
self.rbac.default_labels = { self.rbac.default_labels = {
"project": self.rbac.project_id "project": self.rbac.project_id
} }
self.rbac.disable_rbac = False
def test_constructor(self): def test_constructor(self):
with mock.patch.object(session.Session, 'get_project_id', with mock.patch.object(session.Session, 'get_project_id',