--- /dev/null
+Before:
+ runtime ale_linters/terraform/tfsec.vim
+
+After:
+ call ale#linter#Reset()
+
+Execute(The tfsec handler should handle empty output):
+ AssertEqual
+ \ [],
+ \ ale_linters#terraform#tfsec#Handle(bufnr(''), ['{"results": null}'])
+
+Execute(The tfsec handler should parse results correctly):
+ AssertEqual
+ \ [
+ \ {
+ \ 'filename': '/test/main.tf',
+ \ 'lnum': 10,
+ \ 'end_lnum': 12,
+ \ 'text': "IAM policy document uses sensitive action 'iam:PassRole' on wildcarded resource '*'",
+ \ 'code': 'aws-iam-no-policy-wildcards',
+ \ 'type': 'W',
+ \ },
+ \],
+ \ ale_linters#terraform#tfsec#Handle(bufnr(''), json_encode(
+ \ {
+ \ "results": [
+ \ {
+ \ "rule_id": "AVD-AWS-0057",
+ \ "long_id": "aws-iam-no-policy-wildcards",
+ \ "rule_description": "IAM policy should avoid use of wildcards and instead apply the principle of least privilege",
+ \ "rule_provider": "aws",
+ \ "rule_service": "iam",
+ \ "impact": "Overly permissive policies may grant access to sensitive resources",
+ \ "resolution": "Specify the exact permissions required, and to which resources they should apply instead of using wildcards.",
+ \ "links": [
+ \ "https://aquasecurity.github.io/tfsec/v1.28.0/checks/aws/iam/no-policy-wildcards/",
+ \ "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document"
+ \ ],
+ \ "description": "IAM policy document uses sensitive action 'iam:PassRole' on wildcarded resource '*'",
+ \ "severity": "HIGH",
+ \ "warning": v:false,
+ \ "status": 0,
+ \ "resource": "data.aws_iam_policy_document.default",
+ \ "location": {
+ \ "filename": "/test/main.tf",
+ \ "start_line": 10,
+ \ "end_line": 12
+ \ }
+ \ }
+ \ ]
+ \ }
+ \))