Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd3f00d9

Browse files
feat: add validation for timezone
1 parentdeeea0e commitd3f00d9

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

‎provider/workspace_preset.go‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"strings"
7+
"time"
78

89
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
910
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -143,6 +144,16 @@ func workspacePresetDataSource() *schema.Resource {
143144
"timezone": {
144145
Type:schema.TypeString,
145146
Required:true,
147+
ValidateFunc:func(valinterface{},keystring) ([]string, []error) {
148+
timezone:=val.(string)
149+
150+
_,err:=time.LoadLocation(timezone)
151+
iferr!=nil {
152+
returnnil, []error{fmt.Errorf("failed to load location: %w",err)}
153+
}
154+
155+
returnnil,nil
156+
},
146157
},
147158
"schedule": {
148159
Type:schema.TypeList,

‎provider/workspace_preset_test.go‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,52 @@ func TestWorkspacePreset(t *testing.T) {
462462
}`,
463463
ExpectError:regexp.MustCompile(`failed to parse cron spec: end of range \(26\) above maximum \(23\): 25-26`),
464464
},
465+
{
466+
Name:"Prebuilds is set with a valid autoscaling.timezone field",
467+
Config:`
468+
data "coder_workspace_preset" "preset_1" {
469+
name = "preset_1"
470+
prebuilds {
471+
instances = 1
472+
autoscaling {
473+
timezone = "America/Los_Angeles"
474+
schedule {
475+
cron = "* 8-18 * * 1-5"
476+
instances = 3
477+
}
478+
}
479+
}
480+
}`,
481+
ExpectError:nil,
482+
Check:func(state*terraform.State)error {
483+
require.Len(t,state.Modules,1)
484+
require.Len(t,state.Modules[0].Resources,1)
485+
resource:=state.Modules[0].Resources["data.coder_workspace_preset.preset_1"]
486+
require.NotNil(t,resource)
487+
attrs:=resource.Primary.Attributes
488+
require.Equal(t,attrs["name"],"preset_1")
489+
require.Equal(t,attrs["prebuilds.0.autoscaling.0.timezone"],"America/Los_Angeles")
490+
returnnil
491+
},
492+
},
493+
{
494+
Name:"Prebuilds is set with an invalid autoscaling.timezone field",
495+
Config:`
496+
data "coder_workspace_preset" "preset_1" {
497+
name = "preset_1"
498+
prebuilds {
499+
instances = 1
500+
autoscaling {
501+
timezone = "InvalidLocation"
502+
schedule {
503+
cron = "* 8-18 * * 1-5"
504+
instances = 3
505+
}
506+
}
507+
}
508+
}`,
509+
ExpectError:regexp.MustCompile(`failed to load location: unknown time zone InvalidLocation`),
510+
},
465511
}
466512

467513
for_,testcase:=rangetestcases {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp