From 876ff476f11ff1f4efcf1a6161ff0b31f8c28a28 Mon Sep 17 00:00:00 2001 From: Robin Taylor Date: Sat, 20 Apr 2019 22:50:28 +0100 Subject: [PATCH] Implementing delete-group endpoint and appropriate test case --- moto/iam/models.py | 6 ++++++ moto/iam/responses.py | 6 ++++++ tests/test_iam/test_iam_groups.py | 11 +++++++++++ 3 files changed, 23 insertions(+) diff --git a/moto/iam/models.py b/moto/iam/models.py index 2a76e9126..9eefc9c70 100644 --- a/moto/iam/models.py +++ b/moto/iam/models.py @@ -1221,6 +1221,12 @@ class IAMBackend(BaseBackend): group = self.get_group(group_name) return group.get_policy(policy_name) + def delete_group(self, group_name): + try: + del self.groups[group_name] + except KeyError: + raise IAMNotFoundException("Group {0} not found".format(group_name)) + def create_user(self, user_name, path="/"): if user_name in self.users: raise IAMConflictException( diff --git a/moto/iam/responses.py b/moto/iam/responses.py index 08fe13dc5..ac6332080 100644 --- a/moto/iam/responses.py +++ b/moto/iam/responses.py @@ -428,6 +428,12 @@ class IamResponse(BaseResponse): template = self.response_template(GET_GROUP_POLICY_TEMPLATE) return template.render(name="GetGroupPolicyResponse", **policy_result) + def delete_group(self): + group_name = self._get_param('GroupName') + iam_backend.delete_group(group_name) + template = self.response_template(GENERIC_EMPTY_TEMPLATE) + return template.render(name='DeleteGroup') + def create_user(self): user_name = self._get_param("UserName") path = self._get_param("Path") diff --git a/tests/test_iam/test_iam_groups.py b/tests/test_iam/test_iam_groups.py index 7fd299281..bb54761a2 100644 --- a/tests/test_iam/test_iam_groups.py +++ b/tests/test_iam/test_iam_groups.py @@ -182,3 +182,14 @@ def test_list_group_policies(): conn.list_group_policies(GroupName="my-group")["PolicyNames"].should.equal( ["my-policy"] ) + + +@mock_iam +def test_delete_group(): + conn = boto3.client('iam', region_name='us-east-1') + conn.create_group(GroupName='my-group') + groups = conn.list_groups() + assert groups['Groups'][0]['GroupName'] == 'my-group' + assert len(groups['Groups']) == 1 + conn.delete_group(GroupName='my-group') + conn.list_groups()['Groups'].should.be.empty