Reorganized tests using a generator method and fixed error messages.

This commit is contained in:
acsbendi 2019-06-30 17:04:02 +02:00
parent 896f7b6eb2
commit 99336cbe6a

View File

@ -7,14 +7,10 @@ from nose.tools import assert_raises
from moto import mock_iam
@mock_iam
def test_create_policy_with_invalid_policy_documents():
conn = boto3.client('iam', region_name='us-east-1')
invalid_documents_test_cases = [
{
"document": "This is not a json document",
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -24,7 +20,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Policy document must be version 2012-10-17 or greater.'
"error_message": 'Policy document must be version 2012-10-17 or greater.'
},
{
"document": {
@ -35,7 +31,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Policy document must be version 2012-10-17 or greater.'
"error_message": 'Policy document must be version 2012-10-17 or greater.'
},
{
"document": {
@ -46,20 +42,20 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
"Version": "2012-10-17"
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
"Version": "2012-10-17",
"Statement": ["afd"]
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -71,7 +67,7 @@ def test_create_policy_with_invalid_policy_documents():
},
"Extra field": "value"
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -83,7 +79,7 @@ def test_create_policy_with_invalid_policy_documents():
"Extra field": "value"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -95,7 +91,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -107,7 +103,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -118,7 +114,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -129,7 +125,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Actions/Conditions must be prefaced by a vendor, e.g., iam, sdb, ec2, etc.'
"error_message": 'Actions/Conditions must be prefaced by a vendor, e.g., iam, sdb, ec2, etc.'
},
{
"document": {
@ -140,7 +136,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "invalid resource"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Resource invalid resource must be in ARN format or "*".'
"error_message": 'Resource invalid resource must be in ARN format or "*".'
},
{
"document": {
@ -151,14 +147,14 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": ["adf"]
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Resource adf must be in ARN format or "*".'
"error_message": 'Resource adf must be in ARN format or "*".'
},
{
"document": {
"Version": "2012-10-17",
"Statement": []
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -168,7 +164,7 @@ def test_create_policy_with_invalid_policy_documents():
"Action": "s3:ListBucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Policy statement must contain resources.'
"error_message": 'Policy statement must contain resources.'
},
{
"document": {
@ -179,7 +175,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": []
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Policy statement must contain resources.'
"error_message": 'Policy statement must contain resources.'
},
{
"document": {
@ -189,7 +185,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Policy statement must contain actions.'
"error_message": 'Policy statement must contain actions.'
},
{
"document": {
@ -199,7 +195,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -208,7 +204,7 @@ def test_create_policy_with_invalid_policy_documents():
"Effect": "Allow"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Policy statement must contain actions.'
"error_message": 'Policy statement must contain actions.'
},
{
"document": {
@ -224,7 +220,7 @@ def test_create_policy_with_invalid_policy_documents():
}
]
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Policy statement must contain actions.'
"error_message": 'Policy statement must contain actions.'
},
{
"document": {
@ -236,7 +232,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:iam:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: IAM resource path must either be "*" or start with user/, federated-user/, role/, group/, instance-profile/, mfa/, server-certificate/, policy/, sms-mfa/, saml-provider/, oidc-provider/, report/, access-report/.'
"error_message": 'IAM resource path must either be "*" or start with user/, federated-user/, role/, group/, instance-profile/, mfa/, server-certificate/, policy/, sms-mfa/, saml-provider/, oidc-provider/, report/, access-report/.'
},
{
"document": {
@ -248,7 +244,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: The policy failed legacy parsing'
"error_message": 'The policy failed legacy parsing'
},
{
"document": {
@ -260,7 +256,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Resource vendor must be fully qualified and cannot contain regexes.'
"error_message": 'Resource vendor must be fully qualified and cannot contain regexes.'
},
{
"document": {
@ -274,7 +270,7 @@ def test_create_policy_with_invalid_policy_documents():
}
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -285,7 +281,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": ["adfdf", {}]
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -298,7 +294,7 @@ def test_create_policy_with_invalid_policy_documents():
"Condition": []
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -311,7 +307,7 @@ def test_create_policy_with_invalid_policy_documents():
"Condition": "a"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -326,7 +322,7 @@ def test_create_policy_with_invalid_policy_documents():
}
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -341,7 +337,7 @@ def test_create_policy_with_invalid_policy_documents():
}
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -356,7 +352,7 @@ def test_create_policy_with_invalid_policy_documents():
}
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -371,7 +367,7 @@ def test_create_policy_with_invalid_policy_documents():
}
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -385,7 +381,7 @@ def test_create_policy_with_invalid_policy_documents():
}
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -400,7 +396,7 @@ def test_create_policy_with_invalid_policy_documents():
]
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -412,7 +408,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:iam:us-east-1::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: IAM resource arn:aws:iam:us-east-1::example_bucket cannot contain region information.'
"error_message": 'IAM resource arn:aws:iam:us-east-1::example_bucket cannot contain region information.'
},
{
"document": {
@ -424,7 +420,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:us-east-1::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Resource arn:aws:s3:us-east-1::example_bucket can not contain region information.'
"error_message": 'Resource arn:aws:s3:us-east-1::example_bucket can not contain region information.'
},
{
"document": {
@ -437,7 +433,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -450,7 +446,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -468,7 +464,7 @@ def test_create_policy_with_invalid_policy_documents():
}
]
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Statement IDs (SID) in a single policy must be unique.'
"error_message": 'Statement IDs (SID) in a single policy must be unique.'
},
{
"document": {
@ -480,7 +476,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -492,7 +488,7 @@ def test_create_policy_with_invalid_policy_documents():
"NotResource": "*"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.'
"error_message": 'Syntax errors in policy.'
},
{
"document": {
@ -503,7 +499,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket"
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: The policy failed legacy parsing'
"error_message": 'The policy failed legacy parsing'
},
{
"document": {
@ -518,7 +514,7 @@ def test_create_policy_with_invalid_policy_documents():
}
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: The policy failed legacy parsing'
"error_message": 'The policy failed legacy parsing'
},
{
"document": {
@ -532,7 +528,7 @@ def test_create_policy_with_invalid_policy_documents():
}
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Policy document must be version 2012-10-17 or greater.'
"error_message": 'Policy document must be version 2012-10-17 or greater.'
},
{
"document": {
@ -545,11 +541,19 @@ def test_create_policy_with_invalid_policy_documents():
}
}
},
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: The policy failed legacy parsing'
"error_message": 'The policy failed legacy parsing'
}
] # TODO add more tests
def test_create_policy_with_invalid_policy_documents():
for test_case in invalid_documents_test_cases:
yield check_create_policy_with_invalid_policy_document, test_case
@mock_iam
def check_create_policy_with_invalid_policy_document(test_case):
conn = boto3.client('iam', region_name='us-east-1')
with assert_raises(ClientError) as ex:
conn.create_policy(
PolicyName="TestCreatePolicy",