feat: add test framework (#48)
* Add test framework * Add aws-region tests * Add azure-region tests * Update CONTRIBUTING.md * Add formatting * Improve fmt * Format Terraform
This commit is contained in:
25
aws-region/main.test.ts
Normal file
25
aws-region/main.test.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { describe, expect, it } from "bun:test";
|
||||
import {
|
||||
executeScriptInContainer,
|
||||
runTerraformApply,
|
||||
runTerraformInit,
|
||||
testRequiredVariables,
|
||||
} from "../test";
|
||||
|
||||
describe("aws-region", async () => {
|
||||
await runTerraformInit(import.meta.dir);
|
||||
|
||||
testRequiredVariables(import.meta.dir, {});
|
||||
|
||||
it("default output", async () => {
|
||||
const state = await runTerraformApply(import.meta.dir, {});
|
||||
expect(state.outputs.value.value).toBe("us-east-1");
|
||||
});
|
||||
|
||||
it("customized default", async () => {
|
||||
const state = await runTerraformApply(import.meta.dir, {
|
||||
default: "us-west-2",
|
||||
});
|
||||
expect(state.outputs.value.value).toBe("us-west-2");
|
||||
});
|
||||
});
|
||||
@@ -10,45 +10,45 @@ terraform {
|
||||
}
|
||||
|
||||
variable "display_name" {
|
||||
default = "AWS Region"
|
||||
description = "The display name of the parameter."
|
||||
type = string
|
||||
default = "AWS Region"
|
||||
description = "The display name of the parameter."
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "description" {
|
||||
default = "The region to deploy workspace infrastructure."
|
||||
description = "The description of the parameter."
|
||||
type = string
|
||||
default = "The region to deploy workspace infrastructure."
|
||||
description = "The description of the parameter."
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "default" {
|
||||
default = "us-east-1"
|
||||
description = "The default region to use if no region is specified."
|
||||
type = string
|
||||
default = "us-east-1"
|
||||
description = "The default region to use if no region is specified."
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "mutable" {
|
||||
default = false
|
||||
description = "Whether the parameter can be changed after creation."
|
||||
type = bool
|
||||
default = false
|
||||
description = "Whether the parameter can be changed after creation."
|
||||
type = bool
|
||||
}
|
||||
|
||||
variable "custom_names" {
|
||||
default = {}
|
||||
description = "A map of custom display names for region IDs."
|
||||
type = map(string)
|
||||
default = {}
|
||||
description = "A map of custom display names for region IDs."
|
||||
type = map(string)
|
||||
}
|
||||
|
||||
variable "custom_icons" {
|
||||
default = {}
|
||||
description = "A map of custom icons for region IDs."
|
||||
type = map(string)
|
||||
default = {}
|
||||
description = "A map of custom icons for region IDs."
|
||||
type = map(string)
|
||||
}
|
||||
|
||||
variable "exclude" {
|
||||
default = []
|
||||
description = "A list of region IDs to exclude."
|
||||
type = list(string)
|
||||
default = []
|
||||
description = "A list of region IDs to exclude."
|
||||
type = list(string)
|
||||
}
|
||||
|
||||
locals {
|
||||
@@ -57,92 +57,92 @@ locals {
|
||||
# the provider, which requires a region.
|
||||
regions = {
|
||||
"ap-northeast-1" = {
|
||||
name = "Asia Pacific (Tokyo)"
|
||||
icon = "/emojis/1f1ef-1f1f5.png"
|
||||
}
|
||||
"ap-northeast-2" = {
|
||||
name = "Asia Pacific (Seoul)"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
"ap-northeast-3" = {
|
||||
name = "Asia Pacific (Osaka)"
|
||||
icon = "/emojis/1f1ef-1f1f5.png"
|
||||
}
|
||||
"ap-south-1" = {
|
||||
name = "Asia Pacific (Mumbai)"
|
||||
icon = "/emojis/1f1ee-1f1f3.png"
|
||||
}
|
||||
"ap-southeast-1" = {
|
||||
name = "Asia Pacific (Singapore)"
|
||||
icon = "/emojis/1f1f8-1f1ec.png"
|
||||
}
|
||||
"ap-southeast-2" = {
|
||||
name = "Asia Pacific (Sydney)"
|
||||
icon = "/emojis/1f1e6-1f1fa.png"
|
||||
}
|
||||
"ca-central-1" = {
|
||||
name = "Canada (Central)"
|
||||
icon = "/emojis/1f1e8-1f1e6.png"
|
||||
}
|
||||
"eu-central-1" = {
|
||||
name = "EU (Frankfurt)"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
"eu-north-1" = {
|
||||
name = "EU (Stockholm)"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
"eu-west-1" = {
|
||||
name = "EU (Ireland)"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
"eu-west-2" = {
|
||||
name = "EU (London)"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
"eu-west-3" = {
|
||||
name = "EU (Paris)"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
"sa-east-1" = {
|
||||
name = "South America (São Paulo)"
|
||||
icon = "/emojis/1f1e7-1f1f7.png"
|
||||
}
|
||||
"us-east-1" = {
|
||||
name = "US East (N. Virginia)"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
"us-east-2" = {
|
||||
name = "US East (Ohio)"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
"us-west-1" = {
|
||||
name = "US West (N. California)"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
"us-west-2" = {
|
||||
name = "US West (Oregon)"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
name = "Asia Pacific (Tokyo)"
|
||||
icon = "/emojis/1f1ef-1f1f5.png"
|
||||
}
|
||||
"ap-northeast-2" = {
|
||||
name = "Asia Pacific (Seoul)"
|
||||
icon = "/emojis/1f1f0-1f1f7.png"
|
||||
}
|
||||
"ap-northeast-3" = {
|
||||
name = "Asia Pacific (Osaka)"
|
||||
icon = "/emojis/1f1ef-1f1f5.png"
|
||||
}
|
||||
"ap-south-1" = {
|
||||
name = "Asia Pacific (Mumbai)"
|
||||
icon = "/emojis/1f1ee-1f1f3.png"
|
||||
}
|
||||
"ap-southeast-1" = {
|
||||
name = "Asia Pacific (Singapore)"
|
||||
icon = "/emojis/1f1f8-1f1ec.png"
|
||||
}
|
||||
"ap-southeast-2" = {
|
||||
name = "Asia Pacific (Sydney)"
|
||||
icon = "/emojis/1f1e6-1f1fa.png"
|
||||
}
|
||||
"ca-central-1" = {
|
||||
name = "Canada (Central)"
|
||||
icon = "/emojis/1f1e8-1f1e6.png"
|
||||
}
|
||||
"eu-central-1" = {
|
||||
name = "EU (Frankfurt)"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
"eu-north-1" = {
|
||||
name = "EU (Stockholm)"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
"eu-west-1" = {
|
||||
name = "EU (Ireland)"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
"eu-west-2" = {
|
||||
name = "EU (London)"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
"eu-west-3" = {
|
||||
name = "EU (Paris)"
|
||||
icon = "/emojis/1f1ea-1f1fa.png"
|
||||
}
|
||||
"sa-east-1" = {
|
||||
name = "South America (São Paulo)"
|
||||
icon = "/emojis/1f1e7-1f1f7.png"
|
||||
}
|
||||
"us-east-1" = {
|
||||
name = "US East (N. Virginia)"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
"us-east-2" = {
|
||||
name = "US East (Ohio)"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
"us-west-1" = {
|
||||
name = "US West (N. California)"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
"us-west-2" = {
|
||||
name = "US West (Oregon)"
|
||||
icon = "/emojis/1f1fa-1f1f8.png"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data "coder_parameter" "region" {
|
||||
name = "aws_region"
|
||||
display_name = var.display_name
|
||||
description = var.description
|
||||
default = var.default
|
||||
mutable = var.mutable
|
||||
dynamic "option" {
|
||||
for_each = { for k, v in local.regions : k => v if !(contains(var.exclude, k)) }
|
||||
content {
|
||||
name = try(var.custom_names[option.key], option.value.name)
|
||||
icon = try(var.custom_icons[option.key], option.value.icon)
|
||||
value = option.key
|
||||
}
|
||||
name = "aws_region"
|
||||
display_name = var.display_name
|
||||
description = var.description
|
||||
default = var.default
|
||||
mutable = var.mutable
|
||||
dynamic "option" {
|
||||
for_each = { for k, v in local.regions : k => v if !(contains(var.exclude, k)) }
|
||||
content {
|
||||
name = try(var.custom_names[option.key], option.value.name)
|
||||
icon = try(var.custom_icons[option.key], option.value.icon)
|
||||
value = option.key
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
output "value" {
|
||||
value = data.coder_parameter.region.value
|
||||
value = data.coder_parameter.region.value
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user