|
12 | 12 | DatasourcePermissions,
|
13 | 13 | DatasourceLegacyPermissions,
|
14 | 14 | DatasourceQueryResourceCaching,
|
| 15 | + DatasourceLabelBasedAccessControl, |
15 | 16 | )
|
16 | 17 |
|
17 | 18 |
|
@@ -1022,3 +1023,79 @@ def test_update_datasource_cache_no_valid_result(self, call_the_api_mock):
|
1022 | 1023 |
|
1023 | 1024 | with self.assertRaises(Exception):
|
1024 | 1025 | datasource.update_datasource_cache("test", datasource_cache)
|
| 1026 | + |
| 1027 | + |
| 1028 | +class DatasourceLabelBasedAccessControlTestCase(TestCase): |
| 1029 | + @patch("grafana_api.api.Api.call_the_api") |
| 1030 | + def test_get_lbac_rules_for_datasource(self, call_the_api_mock): |
| 1031 | + model: APIModel = APIModel(host=MagicMock(), token=MagicMock()) |
| 1032 | + datasource: DatasourceLabelBasedAccessControl = ( |
| 1033 | + DatasourceLabelBasedAccessControl(grafana_api_model=model) |
| 1034 | + ) |
| 1035 | + |
| 1036 | + call_the_api_mock.return_value = list([{"id": 1}]) |
| 1037 | + |
| 1038 | + self.assertEqual([{"id": 1}], datasource.get_lbac_rules_for_datasource("test")) |
| 1039 | + |
| 1040 | + @patch("grafana_api.api.Api.call_the_api") |
| 1041 | + def test_get_lbac_rules_for_datasource_no_uid(self, call_the_api_mock): |
| 1042 | + model: APIModel = APIModel(host=MagicMock(), token=MagicMock()) |
| 1043 | + datasource: DatasourceLabelBasedAccessControl = ( |
| 1044 | + DatasourceLabelBasedAccessControl(grafana_api_model=model) |
| 1045 | + ) |
| 1046 | + |
| 1047 | + call_the_api_mock.return_value = None |
| 1048 | + |
| 1049 | + with self.assertRaises(ValueError): |
| 1050 | + datasource.get_lbac_rules_for_datasource("") |
| 1051 | + |
| 1052 | + @patch("grafana_api.api.Api.call_the_api") |
| 1053 | + def test_get_lbac_rules_for_datasource_no_valid_rules(self, call_the_api_mock): |
| 1054 | + model: APIModel = APIModel(host=MagicMock(), token=MagicMock()) |
| 1055 | + datasource: DatasourceLabelBasedAccessControl = ( |
| 1056 | + DatasourceLabelBasedAccessControl(grafana_api_model=model) |
| 1057 | + ) |
| 1058 | + |
| 1059 | + call_the_api_mock.return_value = None |
| 1060 | + |
| 1061 | + with self.assertRaises(Exception): |
| 1062 | + datasource.get_lbac_rules_for_datasource("test") |
| 1063 | + |
| 1064 | + @patch("grafana_api.api.Api.call_the_api") |
| 1065 | + def test_update_lbac_rules_for_datasource(self, call_the_api_mock): |
| 1066 | + model: APIModel = APIModel(host=MagicMock(), token=MagicMock()) |
| 1067 | + datasource: DatasourceLabelBasedAccessControl = ( |
| 1068 | + DatasourceLabelBasedAccessControl(grafana_api_model=model) |
| 1069 | + ) |
| 1070 | + |
| 1071 | + call_the_api_mock.return_value = dict({"dataSourceID": 1}) |
| 1072 | + |
| 1073 | + self.assertEqual( |
| 1074 | + {"dataSourceID": 1}, datasource.update_lbac_rules_for_datasource("test") |
| 1075 | + ) |
| 1076 | + |
| 1077 | + @patch("grafana_api.api.Api.call_the_api") |
| 1078 | + def test_update_lbac_rules_for_datasource_no_uid(self, call_the_api_mock): |
| 1079 | + model: APIModel = APIModel(host=MagicMock(), token=MagicMock()) |
| 1080 | + datasource: DatasourceLabelBasedAccessControl = ( |
| 1081 | + DatasourceLabelBasedAccessControl(grafana_api_model=model) |
| 1082 | + ) |
| 1083 | + |
| 1084 | + call_the_api_mock.return_value = None |
| 1085 | + |
| 1086 | + with self.assertRaises(ValueError): |
| 1087 | + datasource.update_lbac_rules_for_datasource("") |
| 1088 | + |
| 1089 | + @patch("grafana_api.api.Api.call_the_api") |
| 1090 | + def test_update_lbac_rules_for_datasource_no_update_possible( |
| 1091 | + self, call_the_api_mock |
| 1092 | + ): |
| 1093 | + model: APIModel = APIModel(host=MagicMock(), token=MagicMock()) |
| 1094 | + datasource: DatasourceLabelBasedAccessControl = ( |
| 1095 | + DatasourceLabelBasedAccessControl(grafana_api_model=model) |
| 1096 | + ) |
| 1097 | + |
| 1098 | + call_the_api_mock.return_value = dict() |
| 1099 | + |
| 1100 | + with self.assertRaises(Exception): |
| 1101 | + datasource.update_lbac_rules_for_datasource("test") |
0 commit comments