You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Comprehensive test suite for huntridge-labs/argus — validates the container security scanning composite actions, reusable workflows, and the full scanner ecosystem.
What's Being Tested
Component
Purpose
scanner-container
Composite action: runs trivy, grype, syft on a single image
You can test an Argus feature branch before merging to main:
# Test a feature branch (unit + action tests use the custom ref)
gh workflow run test-suite.yml -f argus_ref=feat/my-feature
# Test only unit tests against a branch
gh workflow run test-suite.yml -f scope=unit -f argus_ref=feat/my-feature
# Test only direct action tests against a branch
gh workflow run test-suite.yml -f scope=actions -f argus_ref=feat/my-feature
Scope of feature branch testing:
Unit tests (U1-U5): Full support — checkout argus at the specified ref and run pytest
Direct action tests (A1-A5): Full support — checkout argus at the specified ref and use local action paths
Remote/Discover/Combination tests: Always test @main — GitHub Actions requires static refs for reusable workflow uses: directives
Validates the argus scn-detector action — classifies IaC changes into FedRAMP SCN categories. Run with scope=scn.
#
Test
IaC Format
Expected Category
Validates
S1
routine-tags
Terraform
ROUTINE
tags.* pattern match
S2
routine-description
Terraform
ROUTINE
description pattern match
S3
adaptive-instance-type
Terraform (modify)
ADAPTIVE
instance_type modify rule
S4
adaptive-iam-attachment
Terraform
ADAPTIVE
aws_iam_policy_attachment create
S5
transformative-iam-role
Terraform
TRANSFORMATIVE
aws_iam_role create
S6
transformative-db-engine
Terraform (modify)
TRANSFORMATIVE
aws_rds_* engine modify
S7
impact-encryption
Terraform (modify)
IMPACT
Encryption removal
S8
impact-public-sg
Terraform
IMPACT
0.0.0.0/0 ingress pattern
S9
impact-iam-user
Terraform
IMPACT
aws_iam_user create
S10
kubernetes-detection
Kubernetes
detected
K8s YAML format detection
S11
cloudformation-detection
CloudFormation
detected
CFN YAML format detection
S12
no-iac-changes
non-IaC
NONE
has_changes=false
S13
fail-on-impact
Terraform
IMPACT (fails)
fail_on_category=impact enforcement
S14
fail-on-adaptive
Terraform
ADAPTIVE (fails)
fail_on_category=adaptive enforcement
S15
mixed-multi-category
Terraform (multi-file)
IMPACT
Highest category wins
S16
dry-run-issues
Terraform
ADAPTIVE
Dry-run mode: issue payloads without API calls
S17
manual-review
Terraform
MANUAL_REVIEW
Unmatched resource triggers manual review
S18-S25
additional coverage
Various
Various
Delete ops, custom profiles, multi-resource, AI fallback
Regression Tests — test-suite.yml
#
Test
Validates
I1
infrastructure-scan
trivy-iac + checkov still work
I2
no-hardcoded-urls
No github.com URLs in action shell scripts
I3
config-driven-scan
container-scan-from-config.yml reusable workflow still works
Quick Start
# Runs automatically on every push to main (concurrency: 1)# Also runs weekly on Sunday 9am UTC# Run full suite manually
gh workflow run test-suite.yml
# Run specific scope
gh workflow run test-suite.yml -f scope=unit
gh workflow run test-suite.yml -f scope=remote
gh workflow run test-suite.yml -f scope=discover
gh workflow run test-suite.yml -f scope=actions
gh workflow run test-suite.yml -f scope=combination
gh workflow run test-suite.yml -f scope=scn
# Test an argus feature branch
gh workflow run test-suite.yml -f argus_ref=feat/my-feature
# Monitor
gh run watch
After the C-series combination tests, parameter pair coverage is:
Parameter Pair
Coverage
mode x scanners
14/14 (100%)
mode x severity
10/10 (100%)
mode x allow_failure
4/4 (100%)
severity x allow_failure
8/10 (80%)
scanners x severity
19/35 (54%)
Remaining gaps are syft-involving severity combos (meaningless — syft is SBOM-only, doesn't do vulnerability scanning).
(1)container-scan.yml uses continue-on-error: true on scan jobs, so the reusable workflow always returns success even when the scanner-container action triggers a severity failure internally. The threshold enforcement happens inside the action (exit 1), but the wrapper absorbs it. Tests validate the workflow completed; the severity check ran correctly inside.