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)
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))
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")
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))