moto/tests/test_iam/test_iam_groups.py

196 lines
5.9 KiB
Python
Raw Normal View History

from __future__ import unicode_literals
2018-10-17 00:14:23 +00:00
from datetime import datetime
import boto
import boto3
import sure # noqa
from nose.tools import assert_raises
from boto.exception import BotoServerError
2017-02-16 03:35:45 +00:00
from moto import mock_iam, mock_iam_deprecated
MOCK_POLICY = """
{
"Version": "2012-10-17",
"Statement":
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::example_bucket"
}
}
"""
2017-02-16 03:35:45 +00:00
@mock_iam_deprecated()
def test_create_group():
conn = boto.connect_iam()
2019-10-31 15:44:26 +00:00
conn.create_group("my-group")
with assert_raises(BotoServerError):
2019-10-31 15:44:26 +00:00
conn.create_group("my-group")
2017-02-16 03:35:45 +00:00
@mock_iam_deprecated()
def test_get_group():
conn = boto.connect_iam()
2019-10-31 15:44:26 +00:00
conn.create_group("my-group")
conn.get_group("my-group")
with assert_raises(BotoServerError):
2019-10-31 15:44:26 +00:00
conn.get_group("not-group")
2018-10-17 00:14:23 +00:00
@mock_iam()
def test_get_group_current():
2019-10-31 15:44:26 +00:00
conn = boto3.client("iam", region_name="us-east-1")
conn.create_group(GroupName="my-group")
result = conn.get_group(GroupName="my-group")
2018-10-17 00:14:23 +00:00
2019-10-31 15:44:26 +00:00
assert result["Group"]["Path"] == "/"
assert result["Group"]["GroupName"] == "my-group"
assert isinstance(result["Group"]["CreateDate"], datetime)
assert result["Group"]["GroupId"]
assert result["Group"]["Arn"] == "arn:aws:iam::123456789012:group/my-group"
assert not result["Users"]
2018-10-17 00:14:23 +00:00
# Make a group with a different path:
2019-10-31 15:44:26 +00:00
other_group = conn.create_group(GroupName="my-other-group", Path="some/location")
assert other_group["Group"]["Path"] == "some/location"
assert (
other_group["Group"]["Arn"]
== "arn:aws:iam::123456789012:group/some/location/my-other-group"
)
2018-10-17 00:14:23 +00:00
2017-02-16 03:35:45 +00:00
@mock_iam_deprecated()
def test_get_all_groups():
conn = boto.connect_iam()
2019-10-31 15:44:26 +00:00
conn.create_group("my-group1")
conn.create_group("my-group2")
groups = conn.get_all_groups()["list_groups_response"]["list_groups_result"][
"groups"
]
groups.should.have.length_of(2)
2017-02-16 03:35:45 +00:00
@mock_iam_deprecated()
def test_add_user_to_group():
conn = boto.connect_iam()
with assert_raises(BotoServerError):
2019-10-31 15:44:26 +00:00
conn.add_user_to_group("my-group", "my-user")
conn.create_group("my-group")
with assert_raises(BotoServerError):
2019-10-31 15:44:26 +00:00
conn.add_user_to_group("my-group", "my-user")
conn.create_user("my-user")
conn.add_user_to_group("my-group", "my-user")
2017-02-16 03:35:45 +00:00
@mock_iam_deprecated()
def test_remove_user_from_group():
conn = boto.connect_iam()
with assert_raises(BotoServerError):
2019-10-31 15:44:26 +00:00
conn.remove_user_from_group("my-group", "my-user")
conn.create_group("my-group")
conn.create_user("my-user")
with assert_raises(BotoServerError):
2019-10-31 15:44:26 +00:00
conn.remove_user_from_group("my-group", "my-user")
conn.add_user_to_group("my-group", "my-user")
conn.remove_user_from_group("my-group", "my-user")
2017-02-16 03:35:45 +00:00
@mock_iam_deprecated()
def test_get_groups_for_user():
conn = boto.connect_iam()
2019-10-31 15:44:26 +00:00
conn.create_group("my-group1")
conn.create_group("my-group2")
conn.create_group("other-group")
conn.create_user("my-user")
conn.add_user_to_group("my-group1", "my-user")
conn.add_user_to_group("my-group2", "my-user")
groups = conn.get_groups_for_user("my-user")["list_groups_for_user_response"][
"list_groups_for_user_result"
]["groups"]
groups.should.have.length_of(2)
2017-03-05 14:58:39 +00:00
@mock_iam_deprecated()
def test_put_group_policy():
conn = boto.connect_iam()
2019-10-31 15:44:26 +00:00
conn.create_group("my-group")
conn.put_group_policy("my-group", "my-policy", MOCK_POLICY)
2017-10-01 22:02:00 +00:00
@mock_iam
def test_attach_group_policies():
2019-10-31 15:44:26 +00:00
conn = boto3.client("iam", region_name="us-east-1")
conn.create_group(GroupName="my-group")
conn.list_attached_group_policies(GroupName="my-group")[
"AttachedPolicies"
].should.be.empty
policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role"
conn.list_attached_group_policies(GroupName="my-group")[
"AttachedPolicies"
].should.be.empty
conn.attach_group_policy(GroupName="my-group", PolicyArn=policy_arn)
conn.list_attached_group_policies(GroupName="my-group")[
"AttachedPolicies"
].should.equal(
[{"PolicyName": "AmazonElasticMapReduceforEC2Role", "PolicyArn": policy_arn}]
)
conn.detach_group_policy(GroupName="my-group", PolicyArn=policy_arn)
conn.list_attached_group_policies(GroupName="my-group")[
"AttachedPolicies"
].should.be.empty
2017-10-01 22:04:59 +00:00
2017-10-01 22:02:00 +00:00
2017-03-05 14:58:39 +00:00
@mock_iam_deprecated()
def test_get_group_policy():
conn = boto.connect_iam()
2019-10-31 15:44:26 +00:00
conn.create_group("my-group")
with assert_raises(BotoServerError):
2019-10-31 15:44:26 +00:00
conn.get_group_policy("my-group", "my-policy")
2019-10-31 15:44:26 +00:00
conn.put_group_policy("my-group", "my-policy", MOCK_POLICY)
conn.get_group_policy("my-group", "my-policy")
2017-10-01 22:02:06 +00:00
2017-03-05 14:58:39 +00:00
@mock_iam_deprecated()
def test_get_all_group_policies():
conn = boto.connect_iam()
2019-10-31 15:44:26 +00:00
conn.create_group("my-group")
policies = conn.get_all_group_policies("my-group")["list_group_policies_response"][
"list_group_policies_result"
]["policy_names"]
assert policies == []
2019-10-31 15:44:26 +00:00
conn.put_group_policy("my-group", "my-policy", MOCK_POLICY)
policies = conn.get_all_group_policies("my-group")["list_group_policies_response"][
"list_group_policies_result"
]["policy_names"]
assert policies == ["my-policy"]
@mock_iam()
def test_list_group_policies():
2019-10-31 15:44:26 +00:00
conn = boto3.client("iam", region_name="us-east-1")
conn.create_group(GroupName="my-group")
conn.list_group_policies(GroupName="my-group")["PolicyNames"].should.be.empty
conn.put_group_policy(
GroupName="my-group", PolicyName="my-policy", PolicyDocument=MOCK_POLICY
)
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