예제 #1
0
    def test_iam_policy_builder(self):
        policy = IAMPolicyBuilder(principal="arn:aws:iam::account-id:user/foo",
                                  action="s3:GetObject")
        policy.add_action("s3:PutObject")
        policy.add_resource("arn:aws:s3:::examplebucket")
        policy.add_statement(effect="Deny")
        expected = {
            "Version":
            "2012-10-17",
            "Statement": [{
                "Action": ["s3:GetObject", "s3:PutObject"],
                "Resource": ["arn:aws:s3:::examplebucket"],
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::account-id:user/foo"
                }
            }, {
                "Action": [],
                "Effect": "Deny"
            }]
        }
        self.assertEqual(json.loads(str(policy)), expected)

        policy = IAMPolicyBuilder(expected)
        self.assertEqual(json.loads(str(policy)), expected)
        self.assertEqual(len(policy.policy["Statement"]), 2)
        policy.add_statement(principal="arn:aws:iam::account-id:user/foo",
                             action=["s3:GetObject", "s3:PutObject"],
                             resource=["arn:aws:s3:::examplebucket"])
        self.assertEqual(len(policy.policy["Statement"]), 2)
        policy.add_statement(principal="arn:aws:iam::account-id:user/foo",
                             action="s3:GetObject",
                             resource="arn:aws:s3:::examplebucket")
        self.assertEqual(len(policy.policy["Statement"]), 2)
        policy.add_statement(
            principal="arn:aws:iam::account-id:user/foo",
            action=["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
            resource=["arn:aws:s3:::examplebucket"])
        self.assertEqual(len(policy.policy["Statement"]), 3)
        policy.add_statement(
            principal="arn:aws:iam::account-id:user/foo",
            action=["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
            resource=["arn:aws:s3:::examplebucket"])
        self.assertEqual(len(policy.policy["Statement"]), 3)
        policy.add_statement(
            principal="arn:aws:iam::account-id:user/foo",
            action=["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
            resource=["arn:aws:s3:::examplebucket2"])
        self.assertEqual(len(policy.policy["Statement"]), 4)
        policy.add_statement(
            principal="arn:aws:iam::account-id:user/bar",
            action=["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
            resource=["arn:aws:s3:::examplebucket2"])
        self.assertEqual(len(policy.policy["Statement"]), 5)
        policy.add_statement(effect="Deny")
        self.assertEqual(len(policy.policy["Statement"]), 6)
        policy.add_statement()
        self.assertEqual(len(policy.policy["Statement"]), 7)
예제 #2
0
파일: test.py 프로젝트: MrOlm/aegea
 def test_date_utils(self):
     with self.assertRaises(TypeError):
         Timestamp()
     self.assertEqual(str(Timestamp(12345)), "1970-01-01 00:00:12+00:00")
     self.assertEqual(str(Timestamp(1466533609099)), "2016-06-21 18:26:49+00:00")
     for valid_input in "5s", "-5s", "5m", "-5m", "5h", "-5h", "5d", "-5d", "5w", "-5w", "2016-06-21 18:26:49":
         self.assertTrue(isinstance(Timestamp(valid_input), datetime.datetime))
     for invalid_input in None, "", {}, []:
         with self.assertRaises(Exception):
             print(Timestamp(invalid_input))
예제 #3
0
    def test_aws_utils(self):
        if not USING_PYTHON2:
            self.assertTrue(
                isinstance(get_ondemand_price_usd("us-east-1", "t2.micro"),
                           str))
        self.assertEquals(str(ARN(region="", account_id="")), "arn:aws::::")
        self.assertTrue(str(ARN()).startswith("arn:aws:"))
        self.assertEquals(str(ARN("arn:aws:foo:bar:xyz:zzt")),
                          "arn:aws:foo:bar:xyz:zzt")
        self.assertEquals(
            str(
                ARN("arn:aws:a:b:c:d",
                    service="x",
                    region="us-west-1",
                    account_id="1",
                    resource="2")), "arn:aws:x:us-west-1:1:2")
        get_user_data(commands=["ls"], packages=["foo"], files=["bar"])

        # Test serialization of tweak.Config objects
        from tweak import Config
        d = dict(x={}, y=[1, 2])
        c = Config(save_on_exit=False, _parent=self, _data=d)

        aegea.util.aws.dns.config = c
        c.dns = {}
        c.dns.private_zone = "aegea.test"
        with self.assertRaises(AegeaException):
            aegea.util.aws.dns.DNSZone(create_default_private_zone=False)
        with self.assertRaises(AegeaException):
            aegea.util.aws.dns.DNSZone(zone_name="foobar",
                                       create_default_private_zone=False)

        self.assertEquals(get_user_data(foo=c, bar=2),
                          get_user_data(bar=2, foo=c))
        # ensure_s3_bucket()
        self.assertEqual(encode_tags(["foo=bar"]), [{
            'Key': 'foo',
            'Value': 'bar'
        }])
        self.assertEqual(encode_tags(dict(foo="bar")), [{
            'Key': 'foo',
            'Value': 'bar'
        }])
        self.assertEqual(decode_tags([dict(Key="foo", Value="bar")]),
                         {'foo': 'bar'})
        filter_by_tags(resources.ec2.instances, Name="")
        self.assertEqual(get_bdm(), [
            dict(VirtualName="ephemeral" + str(i),
                 DeviceName="xvd" + chr(ord("b") + i)) for i in range(12)
        ])
        # for instance in resources.ec2.instances.all():
        #     get_iam_role_for_instance(instance.id)
        #     break
        make_waiter(clients.efs.describe_file_systems,
                    "FileSystems[].LifeCycleState", "available", "pathAny")
예제 #4
0
    def test_aws_utils(self):
        self.assertTrue(isinstance(get_ondemand_price_usd("us-east-1", "t2.micro"), str))
        self.assertEquals(str(ARN(region="", account_id="")), "arn:aws::::")
        self.assertTrue(str(ARN()).startswith("arn:aws:"))
        self.assertEquals(str(ARN("arn:aws:foo:bar:xyz:zzt")), "arn:aws:foo:bar:xyz:zzt")
        self.assertEquals(str(ARN("arn:aws:a:b:c:d", service="x", region="us-west-1", account_id="1", resource="2")),
                          "arn:aws:x:us-west-1:1:2")
        with self.assertRaises(AegeaException):
            DNSZone(use_unique_private_zone=False)
        get_user_data(commands=["ls"], packages=["foo"], files=["bar"])

        # Test serialization of tweak.Config objects
        from tweak import Config
        d = dict(x={}, y=[1, 2])
        c = Config(save_on_exit=False, _parent=self, _data=d)
        self.assertEquals(get_user_data(foo=c, bar=2), get_user_data(bar=2, foo=c))