def links(self): """Return a dictionary of the action names as keys and their API documentation links as values""" results = {} unique_action_names = set() # unique_action_names will be in the InfrastructureModification block for any given policy. # So if it shows up in ResourceExposure, it will also be in InfrastructureModification # Or if it shows up in DataExfiltration or PrivilegeEscalation, it will also be in InfrastructureModification # Let's create a set of unique_action_names that are in InfrastructureModification # First, let's get them from ManagedPolicyDetails # Then, the inline policies from GroupDetails, RoleDetails, and UserDetails unique_action_names.update( self.group_detail_list.all_infrastructure_modification_actions_by_inline_policies ) unique_action_names.update( self.role_detail_list.all_infrastructure_modification_actions_by_inline_policies ) unique_action_names.update( self.user_detail_list.all_infrastructure_modification_actions_by_inline_policies ) unique_action_names.update( self.policies.all_infrastructure_modification_actions ) unique_action_names = sorted(unique_action_names) all_action_links = get_all_action_links() for action in unique_action_names: if action in all_action_links: results[action] = all_action_links[action] return results
def test_get_all_links(self): """querying.actions.get_all_action_links""" results = get_all_action_links() self.assertTrue(len(results.keys()) > 8000)