diff --git a/pymisp/api.py b/pymisp/api.py index 6f0b4bc..60b4ef6 100644 --- a/pymisp/api.py +++ b/pymisp/api.py @@ -1921,6 +1921,15 @@ class PyMISP: s.from_dict(**sharing_group_j) return s + def sharing_group_exists(self, sharing_group: Union[MISPSharingGroup, int, str, UUID]) -> bool: + """Fast check if sharing group exists. + + :param sharing_group: Sharing group to check + """ + sharing_group_id = get_uuid_or_id_from_abstract_misp(sharing_group) + r = self._prepare_request('HEAD', f'sharing_groups/view/{sharing_group_id}') + return self._check_head_response(r) + def delete_sharing_group(self, sharing_group: Union[MISPSharingGroup, int, str, UUID]) -> Dict: """Delete a sharing group diff --git a/tests/testlive_comprehensive.py b/tests/testlive_comprehensive.py index 633afed..f1afa93 100644 --- a/tests/testlive_comprehensive.py +++ b/tests/testlive_comprehensive.py @@ -2077,6 +2077,10 @@ class TestComprehensive(unittest.TestCase): sharing_group = self.admin_misp_connector.add_sharing_group(sg, pythonify=True) self.assertEqual(sharing_group.name, 'Testcases SG') self.assertEqual(sharing_group.releasability, 'Testing') + # Test `sharing_group_exists` method + self.assertTrue(self.admin_misp_connector.sharing_group_exists(sharing_group)) + self.assertTrue(self.admin_misp_connector.sharing_group_exists(sharing_group.id)) + self.assertTrue(self.admin_misp_connector.sharing_group_exists(sharing_group.uuid)) # add org r = self.admin_misp_connector.add_org_to_sharing_group(sharing_group, self.test_org, extend=True) @@ -2125,6 +2129,10 @@ class TestComprehensive(unittest.TestCase): r = self.admin_misp_connector.delete_sharing_group(sharing_group.id) self.assertEqual(r['message'], 'SharingGroup deleted') + self.assertFalse(self.admin_misp_connector.sharing_group_exists(sharing_group)) + self.assertFalse(self.admin_misp_connector.sharing_group_exists(sharing_group.id)) + self.assertFalse(self.admin_misp_connector.sharing_group_exists(sharing_group.uuid)) + def test_feeds(self): # Add feed = MISPFeed()