Add unit tests for Azure ResourceGroup parsing#698
Conversation
Signed-off-by: Ben <ben@armosec.io>
📝 WalkthroughWalkthroughAdds comprehensive unit tests for Azure resource group parsing and cloud metadata enrichment functions, covering valid and invalid providerID formats, edge cases, and enrichment behavior conditions. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@pkg/cloudmetadata/metadata_test.go`:
- Around line 132-143: The test case named "no change if providerID doesn't
contain resourceGroups" is inconsistent: its name implies no-change but
wantUnchanged is false; update the test to reflect intent by setting
wantUnchanged to true (or alternatively rename the case to indicate a change).
Locate the table-driven test entry (the struct with fields name, node
(corev1.Node with Spec.ProviderID
"azure:///subscriptions/.../virtualMachines/vm1"), cMetadata
(armotypes.CloudMetadata with ProviderAzure), wantRG, and wantUnchanged) and
change wantUnchanged from false to true so the expectation matches the case
name.
| name: "no change if providerID doesn't contain resourceGroups", | ||
| node: &corev1.Node{ | ||
| Spec: corev1.NodeSpec{ | ||
| ProviderID: "azure:///subscriptions/sub-id/providers/Microsoft.Compute/virtualMachines/vm1", | ||
| }, | ||
| }, | ||
| cMetadata: &armotypes.CloudMetadata{ | ||
| Provider: armotypes.ProviderAzure, | ||
| }, | ||
| wantRG: "", | ||
| wantUnchanged: false, | ||
| }, |
There was a problem hiding this comment.
Align the “no change” case with its expectation.
The case name says “no change,” but wantUnchanged is false. This weakens the intent of the test.
🔧 Suggested fix
- wantUnchanged: false,
+ wantUnchanged: true,📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| name: "no change if providerID doesn't contain resourceGroups", | |
| node: &corev1.Node{ | |
| Spec: corev1.NodeSpec{ | |
| ProviderID: "azure:///subscriptions/sub-id/providers/Microsoft.Compute/virtualMachines/vm1", | |
| }, | |
| }, | |
| cMetadata: &armotypes.CloudMetadata{ | |
| Provider: armotypes.ProviderAzure, | |
| }, | |
| wantRG: "", | |
| wantUnchanged: false, | |
| }, | |
| name: "no change if providerID doesn't contain resourceGroups", | |
| node: &corev1.Node{ | |
| Spec: corev1.NodeSpec{ | |
| ProviderID: "azure:///subscriptions/sub-id/providers/Microsoft.Compute/virtualMachines/vm1", | |
| }, | |
| }, | |
| cMetadata: &armotypes.CloudMetadata{ | |
| Provider: armotypes.ProviderAzure, | |
| }, | |
| wantRG: "", | |
| wantUnchanged: true, | |
| }, |
🤖 Prompt for AI Agents
In `@pkg/cloudmetadata/metadata_test.go` around lines 132 - 143, The test case
named "no change if providerID doesn't contain resourceGroups" is inconsistent:
its name implies no-change but wantUnchanged is false; update the test to
reflect intent by setting wantUnchanged to true (or alternatively rename the
case to indicate a change). Locate the table-driven test entry (the struct with
fields name, node (corev1.Node with Spec.ProviderID
"azure:///subscriptions/.../virtualMachines/vm1"), cMetadata
(armotypes.CloudMetadata with ProviderAzure), wantRG, and wantUnchanged) and
change wantUnchanged from false to true so the expectation matches the case
name.
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [kubescape-operator](https://kubescape.io/) ([source](https://github.com/kubescape/helm-charts)) | patch | `1.30.2` → `1.30.3` | --- ### Release Notes <details> <summary>kubescape/helm-charts (kubescape-operator)</summary> ### [`v1.30.3`](https://github.com/kubescape/helm-charts/releases/tag/kubescape-operator-1.30.3) [Compare Source](https://github.com/kubescape/helm-charts/compare/kubescape-operator-1.30.2...kubescape-operator-1.30.3) Kubescape is an E2E Kubernetes cluster security platform #### What's Changed - chore: adding the ability to adjust the source of busybox by [@​drew-viles](https://github.com/drew-viles) in [#​784](https://github.com/kubescape/helm-charts/pull/784) - add k8s context tag by [@​YakirOren](https://github.com/YakirOren) in [#​785](https://github.com/kubescape/helm-charts/pull/785) - run system tests from private repo by [@​bvolovat](https://github.com/bvolovat) in [#​786](https://github.com/kubescape/helm-charts/pull/786) - add stream logs and wait for tests finish by [@​bvolovat](https://github.com/bvolovat) in [#​787](https://github.com/kubescape/helm-charts/pull/787) - fix attempt by [@​bvolovat](https://github.com/bvolovat) in [#​788](https://github.com/kubescape/helm-charts/pull/788) - Update 02-e2e-test.yaml by [@​armobot](https://github.com/armobot) in [#​789](https://github.com/kubescape/helm-charts/pull/789) - Run test from private repo by [@​bvolovat](https://github.com/bvolovat) in [#​791](https://github.com/kubescape/helm-charts/pull/791) - add workflow\_call by [@​bvolovat](https://github.com/bvolovat) in [#​792](https://github.com/kubescape/helm-charts/pull/792) - add startup probe by [@​YakirOren](https://github.com/YakirOren) in [#​793](https://github.com/kubescape/helm-charts/pull/793) - <kubescape/kubescape@v3.0.47...v3.0.48> - Fix typos in documentation by [@​oglok](https://github.com/oglok) in [kubescape/kubescape#1913](https://github.com/kubescape/kubescape/pull/1913) - fix: Kustomize directory analysis not working by [@​majiayu000](https://github.com/majiayu000) in [kubescape/kubescape#1914](https://github.com/kubescape/kubescape/pull/1914) - feat: Define labels to copy from workloads to reports by [@​majiayu000](https://github.com/majiayu000) in [kubescape/kubescape#1915](https://github.com/kubescape/kubescape/pull/1915) - Add SkipPersistence flag to MetricsQueryParams in metrics endpoint by [@​BroderPeters](https://github.com/BroderPeters) in [kubescape/kubescape#1917](https://github.com/kubescape/kubescape/pull/1917) - ci: update scorecard action version by [@​AndrewCharlesHay](https://github.com/AndrewCharlesHay) in [kubescape/kubescape#1918](https://github.com/kubescape/kubescape/pull/1918) - update test lists by [@​amirmalka](https://github.com/amirmalka) in [kubescape/kubescape#1919](https://github.com/kubescape/kubescape/pull/1919) - build(deps): Bump github.com/sigstore/cosign/v3 from 3.0.3-0.20251208232815-901b44d65952 to 3.0.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [kubescape/kubescape#1920](https://github.com/kubescape/kubescape/pull/1920) - Update build number retrieval and permissions in workflow by [@​matthyx](https://github.com/matthyx) in [kubescape/kubescape#1921](https://github.com/kubescape/kubescape/pull/1921) - Fix workload scan to include allcontrols framework by [@​Copilot](https://github.com/Copilot) in [kubescape/kubescape#1922](https://github.com/kubescape/kubescape/pull/1922) - build(deps): Bump github.com/sigstore/fulcio from 1.8.4 to 1.8.5 by [@​dependabot](https://github.com/dependabot)\[bot] in [kubescape/kubescape#1923](https://github.com/kubescape/kubescape/pull/1923) - Fix panic on unsafe interface{} to string type assertions by [@​Copilot](https://github.com/Copilot) in [kubescape/kubescape#1926](https://github.com/kubescape/kubescape/pull/1926) - build(deps): Bump github.com/theupdateframework/go-tuf/v2 from 2.3.0 to 2.3.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [kubescape/kubescape#1927](https://github.com/kubescape/kubescape/pull/1927) - build(deps): Bump github.com/sigstore/rekor from 1.4.3 to 1.5.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [kubescape/kubescape#1928](https://github.com/kubescape/kubescape/pull/1928) - <kubescape/operator@v0.2.121...v0.2.126> - bump version by [@​jnathangreeg](https://github.com/jnathangreeg) in [kubescape/operator#349](https://github.com/kubescape/operator/pull/349) - Fix comment typo in checkECRRegistry function to clarify \_catalog end… by [@​jnathangreeg](https://github.com/jnathangreeg) in [kubescape/operator#351](https://github.com/kubescape/operator/pull/351) - add permissions by [@​bvolovat](https://github.com/bvolovat) in [kubescape/operator#352](https://github.com/kubescape/operator/pull/352) - bump github.com/armosec/armoapi-go v0.0.673 by [@​matthyx](https://github.com/matthyx) in [kubescape/operator#353](https://github.com/kubescape/operator/pull/353) - bump github.com/kubescape/go-logger v0.0.26 by [@​matthyx](https://github.com/matthyx) in [kubescape/operator#354](https://github.com/kubescape/operator/pull/354) - bump github.com/goradd/maps v1.3.0 by [@​matthyx](https://github.com/matthyx) in [kubescape/operator#355](https://github.com/kubescape/operator/pull/355) - <kubescape/kubevuln@v0.3.98...v0.3.104> - replace debian 12 with debian 13 when building container images by [@​pfarikrispy](https://github.com/pfarikrispy) in [kubescape/kubevuln#317](https://github.com/kubescape/kubevuln/pull/317) - Add comprehensive documentation and governance by [@​matthyx](https://github.com/matthyx) in [kubescape/kubevuln#318](https://github.com/kubescape/kubevuln/pull/318) - Bump github.com/cilium/cilium from 1.16.9 to 1.16.17 by [@​dependabot](https://github.com/dependabot)\[bot] in [kubescape/kubevuln#319](https://github.com/kubescape/kubevuln/pull/319) - Add timeout to Grype DB update with graceful fallback to prevent indefinite readiness probe failures by [@​Copilot](https://github.com/Copilot) in [kubescape/kubevuln#320](https://github.com/kubescape/kubevuln/pull/320) - Prevent DB update cancellation on readiness probe by [@​matthyx](https://github.com/matthyx) in [kubescape/kubevuln#321](https://github.com/kubescape/kubevuln/pull/321) - <kubescape/storage@v0.0.237...v0.0.239> - feat: handle large object storage by clearing spec and updating annotations by [@​matthyx](https://github.com/matthyx) in [kubescape/storage#279](https://github.com/kubescape/storage/pull/279) - bump k8s version to v0.35.0 by [@​matthyx](https://github.com/matthyx) in [kubescape/storage#280](https://github.com/kubescape/storage/pull/280) - <kubescape/node-agent@v0.3.11...v0.3.36> - feat: propagate IsTriggerAlert field from rules to runtime alerts by [@​slashben](https://github.com/slashben) in [kubescape/node-agent#686](https://github.com/kubescape/node-agent/pull/686) - Generating release by [@​slashben](https://github.com/slashben) in [kubescape/node-agent#688](https://github.com/kubescape/node-agent/pull/688) - Feature/rule engine redesign by [@​YakirOren](https://github.com/YakirOren) in [kubescape/node-agent#685](https://github.com/kubescape/node-agent/pull/685) - refactor: update cloud metadata types to use armotypes package by [@​matthyx](https://github.com/matthyx) in [kubescape/node-agent#689](https://github.com/kubescape/node-agent/pull/689) - Replace host sensor with node agent sensing by [@​Bezbran](https://github.com/Bezbran) in [kubescape/node-agent#681](https://github.com/kubescape/node-agent/pull/681) - use k8s-interface by [@​Bezbran](https://github.com/Bezbran) in [kubescape/node-agent#691](https://github.com/kubescape/node-agent/pull/691) - optimize header parsing and add early return in ruleAppliesToContext by [@​YakirOren](https://github.com/YakirOren) in [kubescape/node-agent#692](https://github.com/kubescape/node-agent/pull/692) - improve field accessor retrieval with nil checks and type assertions by [@​matthyx](https://github.com/matthyx) in [kubescape/node-agent#694](https://github.com/kubescape/node-agent/pull/694) - Bump github.com/sigstore/sigstore from 1.9.5 to 1.10.4 by [@​dependabot](https://github.com/dependabot)\[bot] in [kubescape/node-agent#696](https://github.com/kubescape/node-agent/pull/696) - Add Azure ResourceGroup enrichment to CloudMetadata by [@​slashben](https://github.com/slashben) in [kubescape/node-agent#697](https://github.com/kubescape/node-agent/pull/697) - Add unit tests for Azure ResourceGroup parsing by [@​slashben](https://github.com/slashben) in [kubescape/node-agent#698](https://github.com/kubescape/node-agent/pull/698) - remove toMap function by [@​YakirOren](https://github.com/YakirOren) in [kubescape/node-agent#693](https://github.com/kubescape/node-agent/pull/693) - run system test from private repo by [@​bvolovat](https://github.com/bvolovat) in [kubescape/node-agent#700](https://github.com/kubescape/node-agent/pull/700) - bump: update golang-set dependency to v2.8.0 by [@​matthyx](https://github.com/matthyx) in [kubescape/node-agent#701](https://github.com/kubescape/node-agent/pull/701) - bump: update armoapi-go dependency to v0.0.671 by [@​matthyx](https://github.com/matthyx) in [kubescape/node-agent#702](https://github.com/kubescape/node-agent/pull/702) - update the tests\_groups by [@​bvolovat](https://github.com/bvolovat) in [kubescape/node-agent#703](https://github.com/kubescape/node-agent/pull/703) - bump: update dependencies for backend, storage, and OpenAPI packages by [@​matthyx](https://github.com/matthyx) in [kubescape/node-agent#704](https://github.com/kubescape/node-agent/pull/704) - update chart repo by [@​bvolovat](https://github.com/bvolovat) in [kubescape/node-agent#705](https://github.com/kubescape/node-agent/pull/705) - bump: update cel-go dependency to v0.26.1 by [@​matthyx](https://github.com/matthyx) in [kubescape/node-agent#706](https://github.com/kubescape/node-agent/pull/706) - Implement ClusterUID enrichment for runtime alerts by [@​slashben](https://github.com/slashben) in [kubescape/node-agent#708](https://github.com/kubescape/node-agent/pull/708) - fix a bug where failed expressions would recompile on every event by [@​YakirOren](https://github.com/YakirOren) in [kubescape/node-agent#690](https://github.com/kubescape/node-agent/pull/690) - fix container watcher error propagation by [@​YakirOren](https://github.com/YakirOren) in [kubescape/node-agent#709](https://github.com/kubescape/node-agent/pull/709) - add permissions by [@​bvolovat](https://github.com/bvolovat) in [kubescape/node-agent#710](https://github.com/kubescape/node-agent/pull/710) - upgrade to IG v0.48.1 by [@​matthyx](https://github.com/matthyx) in [kubescape/node-agent#695](https://github.com/kubescape/node-agent/pull/695) - <kubescape/synchronizer@v0.0.127...v0.0.128> - perf: optimize memory usage by avoiding string-to-byte conversions by [@​amirmalka](https://github.com/amirmalka) in [kubescape/synchronizer#135](https://github.com/kubescape/synchronizer/pull/135) #### New Contributors - [@​drew-viles](https://github.com/drew-viles) made their first contribution in [#​784](https://github.com/kubescape/helm-charts/pull/784) - [@​YakirOren](https://github.com/YakirOren) made their first contribution in [#​785](https://github.com/kubescape/helm-charts/pull/785) - [@​armobot](https://github.com/armobot) made their first contribution in [#​789](https://github.com/kubescape/helm-charts/pull/789) - [@​pfarikrispy](https://github.com/pfarikrispy) made their first contribution in [kubescape/kubevuln#317](https://github.com/kubescape/kubevuln/pull/317) - [@​bvolovat](https://github.com/bvolovat) made their first contribution in [kubescape/operator#352](https://github.com/kubescape/operator/pull/352) - [@​oglok](https://github.com/oglok) made their first contribution in [kubescape/kubescape#1913](https://github.com/kubescape/kubescape/pull/1913) - [@​majiayu000](https://github.com/majiayu000) made their first contribution in [kubescape/kubescape#1914](https://github.com/kubescape/kubescape/pull/1914) - [@​BroderPeters](https://github.com/BroderPeters) made their first contribution in [kubescape/kubescape#1917](https://github.com/kubescape/kubescape/pull/1917) - [@​AndrewCharlesHay](https://github.com/AndrewCharlesHay) made their first contribution in [kubescape/kubescape#1918](https://github.com/kubescape/kubescape/pull/1918) - [@​Bezbran](https://github.com/Bezbran) made their first contribution in [kubescape/node-agent#681](https://github.com/kubescape/node-agent/pull/681) - [@​bvolovat](https://github.com/bvolovat) made their first contribution in [kubescape/node-agent#700](https://github.com/kubescape/node-agent/pull/700) **Full Changelog**: <kubescape/helm-charts@kubescape-operator-1.30.2...kubescape-operator-1.30.3> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/Darkflame72/home-ops). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NS4yIiwidXBkYXRlZEluVmVyIjoiNDIuOTUuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUvaGVsbSIsInR5cGUvcGF0Y2giXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Summary
Add comprehensive unit tests for the Azure ResourceGroup parsing functionality that was merged in #697.
Test Coverage
✅ Tests for
parseAzureResourceGroupwith 9 test cases covering:✅ Tests for
enrichCloudMetadataForAzurewith 5 test cases covering:Test Results
All 14 test cases pass successfully:
Related
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.