B x]7@sfddlZddlZddlZGdddejZddZddZdd Zd d Zd d Z e dkrbe dS)Nc@seZdZddZdS) TestPoliciescCs\td}ttd}td}t|||g}dd|D}t|dkrX|dt|dS)Nziam_policy.jsonz actions.jsonz source.txtcSsg|]}t|r|qS)isDenied).0xrrN/Users/ckp/code/work/sw-iam-policy-tester/sample-lambda/scripts/test_module.py sz,TestPolicies.test_policy..rzSome actions were denied )readFilejsonloadssimulatePrincipalPolicylenfailprettyPrintResults)selfZpolicyactionssourceZevaluation_resultsfailedrrr test_policys zTestPolicies.test_policyN)__name__ __module__ __qualname__rrrrrrsrc Cs"t|d}|}WdQRX|S)Nr)openread) file_namefZ read_datarrrr s r cCs td}|j||d}|dS)z1Simulate a set of actions against a custom policyiam)PolicyInputList ActionNamesEvaluationResults)boto3clientZsimulate_custom_policy)rpoliciesr"responserrrsimulateCustomPolicys  r%cCs"td}|j|||d}|dS)zKSimulate a set of actions from a specific principal against a custom policyr)ZPolicySourceArnrrr )r!r"Zsimulate_principal_policy)rrr#r"r$rrrr s  r cCs |ddkS)N EvalDecisionZallowedr)evaluationResultsrrrr(srcCsBd}x8|D]0}d|dd|dd|dd}||7}q W|S) z\prettyPrintResults returns a string formatting the results of a simulation evaluation resultzEvaluated Action Name: ZEvalActionNamez Evaluated Resource name: ZEvalResourceNamez Decision: r& r)r'outputZermessagerrrr,s  $ r__main__) Zunittestr r!TestCaserr r%r rrrmainrrrrs