@@ -1488,8 +1488,11 @@ func TestWorkspaceTagsTerraform(t *testing.T) {
1488
1488
createTemplateVersionRequestTags map [string ]string
1489
1489
// the coder_workspace_tags bit of main.tf.
1490
1490
// you can add more stuff here if you need
1491
- tfWorkspaceTags string
1492
- skipCreateWorkspace bool
1491
+ tfWorkspaceTags string
1492
+ templateImportUserVariableValues []codersdk.VariableValue
1493
+ // if we need to set parameters on workspace build
1494
+ workspaceBuildParameters []codersdk.WorkspaceBuildParameter
1495
+ skipCreateWorkspace bool
1493
1496
}{
1494
1497
{
1495
1498
name : "no tags" ,
@@ -1589,6 +1592,38 @@ func TestWorkspaceTagsTerraform(t *testing.T) {
1589
1592
// matching tag foo=bar.
1590
1593
skipCreateWorkspace : true ,
1591
1594
},
1595
+ {
1596
+ name : "overrides with dynamic option from var" ,
1597
+ provisionerTags : map [string ]string {"foo" : "bar" },
1598
+ createTemplateVersionRequestTags : map [string ]string {"foo" : "bar" },
1599
+ templateImportUserVariableValues : []codersdk.VariableValue {{Name : "default_foo" , Value : "baz" }, {Name : "foo" , Value : "bar,baz" }},
1600
+ workspaceBuildParameters : []codersdk.WorkspaceBuildParameter {{Name : "foo" , Value : "bar" }},
1601
+ tfWorkspaceTags : `
1602
+ variable "default_foo" {
1603
+ type = string
1604
+ }
1605
+ variable "foo" {
1606
+ type = string
1607
+ }
1608
+ data "coder_parameter" "foo" {
1609
+ name = "foo"
1610
+ type = "string"
1611
+ default = var.default_foo
1612
+ mutable = false
1613
+ dynamic "option" {
1614
+ for_each = toset(split(",", var.foo))
1615
+ content {
1616
+ name = option.value
1617
+ value = option.value
1618
+ }
1619
+ }
1620
+ }
1621
+ data "coder_workspace_tags" "tags" {
1622
+ tags = {
1623
+ "foo" = data.coder_parameter.foo.value
1624
+ }
1625
+ }` ,
1626
+ },
1592
1627
} {
1593
1628
tc := tc
1594
1629
t .Run (tc .name , func (t * testing.T ) {
@@ -1617,11 +1652,12 @@ func TestWorkspaceTagsTerraform(t *testing.T) {
1617
1652
fi , err := templateAdmin .Upload (ctx , "application/x-tar" , bytes .NewReader (tarBytes ))
1618
1653
require .NoError (t , err , "failed to upload file" )
1619
1654
tv , err := templateAdmin .CreateTemplateVersion (ctx , owner .OrganizationID , codersdk.CreateTemplateVersionRequest {
1620
- Name : testutil .GetRandomName (t ),
1621
- FileID : fi .ID ,
1622
- StorageMethod : codersdk .ProvisionerStorageMethodFile ,
1623
- Provisioner : codersdk .ProvisionerTypeTerraform ,
1624
- ProvisionerTags : tc .createTemplateVersionRequestTags ,
1655
+ Name : testutil .GetRandomName (t ),
1656
+ FileID : fi .ID ,
1657
+ StorageMethod : codersdk .ProvisionerStorageMethodFile ,
1658
+ Provisioner : codersdk .ProvisionerTypeTerraform ,
1659
+ ProvisionerTags : tc .createTemplateVersionRequestTags ,
1660
+ UserVariableValues : tc .templateImportUserVariableValues ,
1625
1661
})
1626
1662
require .NoError (t , err , "failed to create template version" )
1627
1663
coderdtest .AwaitTemplateVersionJobCompleted (t , templateAdmin , tv .ID )
@@ -1630,8 +1666,9 @@ func TestWorkspaceTagsTerraform(t *testing.T) {
1630
1666
if ! tc .skipCreateWorkspace {
1631
1667
// Creating a workspace as a non-privileged user must succeed
1632
1668
ws , err := member .CreateUserWorkspace (ctx , memberUser .Username , codersdk.CreateWorkspaceRequest {
1633
- TemplateID : tpl .ID ,
1634
- Name : coderdtest .RandomUsername (t ),
1669
+ TemplateID : tpl .ID ,
1670
+ Name : coderdtest .RandomUsername (t ),
1671
+ RichParameterValues : tc .workspaceBuildParameters ,
1635
1672
})
1636
1673
require .NoError (t , err , "failed to create workspace" )
1637
1674
coderdtest .AwaitWorkspaceBuildJobCompleted (t , member , ws .LatestBuild .ID )
0 commit comments