Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Azure/terraform-module-test-helper
https://github.com/Azure/terraform-module-test-helper
Last synced: 30 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/Azure/terraform-module-test-helper
- Owner: Azure
- License: mit
- Created: 2022-03-01T05:12:22.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-11T03:42:19.000Z (about 1 month ago)
- Last Synced: 2024-11-11T04:31:48.536Z (about 1 month ago)
- Language: Go
- Homepage:
- Size: 559 KB
- Stars: 8
- Watchers: 3
- Forks: 6
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
- jimsghstars - Azure/terraform-module-test-helper - (Go)
README
# Azure Verified Terraform Module Test Helper
![test](https://img.shields.io/github/actions/workflow/status/Azure/terraform-module-test-helper/test.yaml?branch=main)
![lint](https://img.shields.io/github/actions/workflow/status/Azure/terraform-module-test-helper/lint.yaml?branch=main&label=lint)This repo contains two helper functions that were used to test Azure Verified Terraform Module.
For End-End test:
```go
func TestExamplesStartup(t *testing.T) {
vars := map[string]interface{}{
"client_id": "",
"client_secret": "",
}
managedIdentityId := os.Getenv("MSI_ID")
if managedIdentityId != "" {
vars["managed_identity_principal_id"] = managedIdentityId
}
test_helper.RunE2ETest(t, "../../", "examples/startup", terraform.Options{
Upgrade: true,
Vars: vars,
}, func(t *testing.T, output test_helper.TerraformOutput) {
aksId, ok := output["test_aks_id"].(string)
assert.True(t, ok)
assert.Regexp(t, regexp.MustCompile("/subscriptions/.+/resourceGroups/.+/providers/Microsoft.ContainerService/managedClusters/.+"), aksId)
})
}
```The `RunE2ETest` function accept module's root path, sub-folder to example code that our test want to apply, a `terraform.Options` argument, and an assertion callback.
In E2E test we apply the example code,then we execute `terraform output` and pass the json format output to this assertion callback, you can assert whether the output meets your spec there.
For Version-Upgrade Test:
```go
func TestExampleUpgrade_startup(t *testing.T) {
currentRoot, err := test_helper.GetCurrentModuleRootPath()
if err != nil {
t.FailNow()
}
currentMajorVersion, err := test_helper.GetCurrentMajorVersionFromEnv()
if err != nil {
t.FailNow()
}
vars := map[string]interface{}{
"client_id": "",
"client_secret": "",
}
managedIdentityId := os.Getenv("MSI_ID")
if managedIdentityId != "" {
vars["managed_identity_principal_id"] = managedIdentityId
}
test_helper.ModuleUpgradeTest(t, "Azure", "terraform-azurerm-aks", "examples/startup", currentRoot, terraform.Options{
Upgrade: true,
Vars: vars,
}, currentMajorVersion)
}
```The `ModuleUpgradeTest` function accept your Github repo's owner name (could be username or org name), repo name, sub-folder to example code, and module's current major version (eg: v3.0.0 major version is 3).
The `ModuleUpgradeTest` function will clone and checkout the latest released tag version within the major version you've passed, apply the code in a temp directory, then modify the module's source to the current path, then execute `terraform plan` to see if there would be any drift in the plan.