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 from moto import mock_iam
@mock_iam invalid_documents_test_cases = [
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", "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": { "document": {
@ -24,7 +20,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "document": {
@ -35,7 +31,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "document": {
@ -46,20 +42,20 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "document": {
"Version": "2012-10-17" "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": { "document": {
"Version": "2012-10-17", "Version": "2012-10-17",
"Statement": ["afd"] "Statement": ["afd"]
}, },
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.' "error_message": 'Syntax errors in policy.'
}, },
{ {
"document": { "document": {
@ -71,7 +67,7 @@ def test_create_policy_with_invalid_policy_documents():
}, },
"Extra field": "value" "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": { "document": {
@ -83,7 +79,7 @@ def test_create_policy_with_invalid_policy_documents():
"Extra field": "value" "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": { "document": {
@ -95,7 +91,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "document": {
@ -107,7 +103,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "document": {
@ -118,7 +114,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "document": {
@ -129,7 +125,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "document": {
@ -140,7 +136,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "invalid resource" "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": { "document": {
@ -151,14 +147,14 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": ["adf"] "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": { "document": {
"Version": "2012-10-17", "Version": "2012-10-17",
"Statement": [] "Statement": []
}, },
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.' "error_message": 'Syntax errors in policy.'
}, },
{ {
"document": { "document": {
@ -168,7 +164,7 @@ def test_create_policy_with_invalid_policy_documents():
"Action": "s3:ListBucket" "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": { "document": {
@ -179,7 +175,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": [] "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": { "document": {
@ -189,7 +185,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "document": {
@ -199,7 +195,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "document": {
@ -208,7 +204,7 @@ def test_create_policy_with_invalid_policy_documents():
"Effect": "Allow" "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": { "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": { "document": {
@ -236,7 +232,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:iam:::example_bucket" "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": { "document": {
@ -248,7 +244,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3::example_bucket" "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": { "document": {
@ -260,7 +256,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws" "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": { "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": { "document": {
@ -285,7 +281,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": ["adfdf", {}] "Resource": ["adfdf", {}]
} }
}, },
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.' "error_message": 'Syntax errors in policy.'
}, },
{ {
"document": { "document": {
@ -298,7 +294,7 @@ def test_create_policy_with_invalid_policy_documents():
"Condition": [] "Condition": []
} }
}, },
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.' "error_message": 'Syntax errors in policy.'
}, },
{ {
"document": { "document": {
@ -311,7 +307,7 @@ def test_create_policy_with_invalid_policy_documents():
"Condition": "a" "Condition": "a"
} }
}, },
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.' "error_message": 'Syntax errors in policy.'
}, },
{ {
"document": { "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": { "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": { "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": { "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": { "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": { "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": { "document": {
@ -412,7 +408,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:iam:us-east-1::example_bucket" "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": { "document": {
@ -424,7 +420,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:us-east-1::example_bucket" "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": { "document": {
@ -437,7 +433,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "document": {
@ -450,7 +446,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "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": { "document": {
@ -480,7 +476,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "document": {
@ -492,7 +488,7 @@ def test_create_policy_with_invalid_policy_documents():
"NotResource": "*" "NotResource": "*"
} }
}, },
"error_message": 'An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.' "error_message": 'Syntax errors in policy.'
}, },
{ {
"document": { "document": {
@ -503,7 +499,7 @@ def test_create_policy_with_invalid_policy_documents():
"Resource": "arn:aws:s3:::example_bucket" "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": { "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": { "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": { "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 ] # TODO add more tests
def test_create_policy_with_invalid_policy_documents():
for test_case in invalid_documents_test_cases: 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: with assert_raises(ClientError) as ex:
conn.create_policy( conn.create_policy(
PolicyName="TestCreatePolicy", PolicyName="TestCreatePolicy",