47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
import json
|
|
|
|
from moto.awslambda.policy import Policy
|
|
|
|
|
|
class MockLambdaFunction:
|
|
def __init__(self, arn):
|
|
self.function_arn = arn
|
|
self.policy = None
|
|
|
|
|
|
def test_policy():
|
|
policy = Policy(MockLambdaFunction("arn"))
|
|
statement = {
|
|
"StatementId": "statement0",
|
|
"Action": "lambda:InvokeFunction",
|
|
"FunctionName": "function_name",
|
|
"Principal": "events.amazonaws.com",
|
|
"SourceArn": "arn:aws:events:us-east-1:111111111111:rule/rule_name",
|
|
"SourceAccount": "111111111111",
|
|
}
|
|
|
|
expected = {
|
|
"Action": "lambda:InvokeFunction",
|
|
"FunctionName": "function_name",
|
|
"Principal": {"Service": "events.amazonaws.com"},
|
|
"Effect": "Allow",
|
|
"Resource": "arn",
|
|
"Sid": "statement0",
|
|
"Condition": {
|
|
"ArnLike": {
|
|
"AWS:SourceArn": "arn:aws:events:us-east-1:111111111111:rule/rule_name",
|
|
},
|
|
"StringEquals": {"AWS:SourceAccount": "111111111111"},
|
|
},
|
|
}
|
|
|
|
policy.add_statement(json.dumps(statement))
|
|
assert expected == policy.statements[0]
|
|
|
|
sid = statement.get("StatementId", None)
|
|
if sid is None:
|
|
raise "TestCase.statement does not contain StatementId"
|
|
|
|
policy.del_statement(sid)
|
|
assert [] == policy.statements
|