Skip to content

Commit

Permalink
Fix typo, use templates in testing
Browse files Browse the repository at this point in the history
  • Loading branch information
gboutry committed Mar 4, 2024
1 parent 4dc5cc2 commit bc44232
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 30 deletions.
6 changes: 3 additions & 3 deletions internal/juju/applications.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,12 +182,12 @@ func (input CreateApplicationInput) validateAndTransform(conn api.Connection) (p
if err != nil {
return parsed, err
}
kwownSpaceNames := set.NewStrings()
knownSpaceNames := set.NewStrings()
for _, space := range knownSpaces {
kwownSpaceNames.Add(space.Name)
knownSpaceNames.Add(space.Name)
}
for endpoint, space := range input.EndpointBindings {
if !kwownSpaceNames.Contains(space) {
if !knownSpaceNames.Contains(space) {
return parsed, fmt.Errorf("unknown space %q", space)
}
endpointBindings[endpoint] = space
Expand Down
5 changes: 2 additions & 3 deletions internal/provider/resource_application.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ package provider
import (
"context"
"fmt"

"strings"

"github.com/hashicorp/terraform-plugin-framework-validators/listvalidator"
Expand Down Expand Up @@ -177,13 +176,13 @@ func (r *applicationResource) Schema(_ context.Context, _ resource.SchemaRequest
stringplanmodifier.UseStateForUnknown(),
},
},
"endpoint_bindings": schema.SetNestedAttribute{
EndpointBindingsKey: schema.SetNestedAttribute{
Description: "Configure endpoint bindings",
Optional: true,
NestedObject: schema.NestedAttributeObject{
Attributes: map[string]schema.Attribute{
"endpoint": schema.StringAttribute{
Description: "Name of the endpoint to bind to a space.",
Description: "Name of the endpoint to bind to a space. Keep null (or undefined) to define default binding.",
Optional: true,
},
"space": schema.StringAttribute{
Expand Down
52 changes: 28 additions & 24 deletions internal/provider/resource_application_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -299,10 +299,10 @@ func TestAcc_ResourceApplication_EndpointBindings(t *testing.T) {
PreConfig: func() {},
Config: testAccResourceApplicationEndpointBindings(modelName, appName, constraints, map[string]string{"": managementSpace, "ubuntu": publicSpace}),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("juju_application.this", "model", modelName),
resource.TestCheckResourceAttr("juju_application.this", "endpoint_bindings.#", "2"),
resource.TestCheckTypeSetElemNestedAttrs("juju_application.this", "endpoint_bindings.*", map[string]string{"endpoint": "", "space": managementSpace}),
resource.TestCheckTypeSetElemNestedAttrs("juju_application.this", "endpoint_bindings.*", map[string]string{"endpoint": "ubuntu", "space": publicSpace}),
resource.TestCheckResourceAttr(fmt.Sprintf("juju_application.%s", appName), "model", modelName),
resource.TestCheckResourceAttr(fmt.Sprintf("juju_application.%s", appName), "endpoint_bindings.#", "2"),
resource.TestCheckTypeSetElemNestedAttrs(fmt.Sprintf("juju_application.%s", appName), "endpoint_bindings.*", map[string]string{"endpoint": "", "space": managementSpace}),
resource.TestCheckTypeSetElemNestedAttrs(fmt.Sprintf("juju_application.%s", appName), "endpoint_bindings.*", map[string]string{"endpoint": "ubuntu", "space": publicSpace}),
testCheckEndpointsAreSetToCorrectSpace(modelName, appName, managementSpace, map[string]string{"": managementSpace, "ubuntu": publicSpace}),
),
},
Expand Down Expand Up @@ -330,9 +330,9 @@ func TestAcc_ResourceApplication_UpdateEndpointBindings(t *testing.T) {
PreConfig: func() {},
Config: testAccResourceApplicationEndpointBindings(modelName, appName, constraints, map[string]string{"": managementSpace}),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("juju_application.this", "model", modelName),
resource.TestCheckResourceAttr("juju_application.this", "endpoint_bindings.#", "1"),
resource.TestCheckTypeSetElemNestedAttrs("juju_application.this", "endpoint_bindings.*", map[string]string{"endpoint": "", "space": managementSpace}),
resource.TestCheckResourceAttr(fmt.Sprintf("juju_application.%s", appName), "model", modelName),
resource.TestCheckResourceAttr(fmt.Sprintf("juju_application.%s", appName), "endpoint_bindings.#", "1"),
resource.TestCheckTypeSetElemNestedAttrs(fmt.Sprintf("juju_application.%s", appName), "endpoint_bindings.*", map[string]string{"endpoint": "", "space": managementSpace}),
testCheckEndpointsAreSetToCorrectSpace(modelName, appName, managementSpace, map[string]string{"": managementSpace}),
),
},
Expand All @@ -342,9 +342,9 @@ func TestAcc_ResourceApplication_UpdateEndpointBindings(t *testing.T) {
PreConfig: func() {},
Config: testAccResourceApplicationEndpointBindings(modelName, appName, constraints, map[string]string{"": publicSpace}),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("juju_application.this", "model", modelName),
resource.TestCheckResourceAttr("juju_application.this", "endpoint_bindings.#", "1"),
resource.TestCheckTypeSetElemNestedAttrs("juju_application.this", "endpoint_bindings.*", map[string]string{"endpoint": "", "space": publicSpace}),
resource.TestCheckResourceAttr(fmt.Sprintf("juju_application.%s", appName), "model", modelName),
resource.TestCheckResourceAttr(fmt.Sprintf("juju_application.%s", appName), "endpoint_bindings.#", "1"),
resource.TestCheckTypeSetElemNestedAttrs(fmt.Sprintf("juju_application.%s", appName), "endpoint_bindings.*", map[string]string{"endpoint": "", "space": publicSpace}),
testCheckEndpointsAreSetToCorrectSpace(modelName, appName, publicSpace, map[string]string{"": publicSpace, "ubuntu": publicSpace, "another": publicSpace}),
),
},
Expand All @@ -354,10 +354,10 @@ func TestAcc_ResourceApplication_UpdateEndpointBindings(t *testing.T) {
PreConfig: func() {},
Config: testAccResourceApplicationEndpointBindings(modelName, appName, constraints, map[string]string{"": managementSpace, "ubuntu": publicSpace}),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("juju_application.this", "model", modelName),
resource.TestCheckResourceAttr("juju_application.this", "endpoint_bindings.#", "2"),
resource.TestCheckTypeSetElemNestedAttrs("juju_application.this", "endpoint_bindings.*", map[string]string{"endpoint": "", "space": managementSpace}),
resource.TestCheckTypeSetElemNestedAttrs("juju_application.this", "endpoint_bindings.*", map[string]string{"endpoint": "ubuntu", "space": publicSpace}),
resource.TestCheckResourceAttr(fmt.Sprintf("juju_application.%s", appName), "model", modelName),
resource.TestCheckResourceAttr(fmt.Sprintf("juju_application.%s", appName), "endpoint_bindings.#", "2"),
resource.TestCheckTypeSetElemNestedAttrs(fmt.Sprintf("juju_application.%s", appName), "endpoint_bindings.*", map[string]string{"endpoint": "", "space": managementSpace}),
resource.TestCheckTypeSetElemNestedAttrs(fmt.Sprintf("juju_application.%s", appName), "endpoint_bindings.*", map[string]string{"endpoint": "ubuntu", "space": publicSpace}),
testCheckEndpointsAreSetToCorrectSpace(modelName, appName, managementSpace, map[string]string{"": managementSpace, "ubuntu": publicSpace, "another": managementSpace}),
),
},
Expand Down Expand Up @@ -676,25 +676,29 @@ func testAccResourceApplicationEndpointBindings(modelName, appName, constraints
`, endpoint, space)
}
}

return fmt.Sprintf(`
data "juju_model" "this" {
name = %q
return internaltesting.GetStringFromTemplateWithData("testAccResourceApplicationEndpointBindings", `
data "juju_model" "{{.ModelName}}" {
name = "{{.ModelName}}"
}
resource "juju_application" "this" {
model = data.juju_model.this.name
name = %q
constraints = %q
resource "juju_application" "{{.AppName}}" {
model = data.juju_model.{{.ModelName}}.name
name = "{{.AppName}}"
constraints = "{{.Constraints}}"
charm {
name = "jameinel-ubuntu-lite"
revision = 10
}
endpoint_bindings = [
%s
{{.EndpointBindings}}
]
}
`, modelName, appName, constraints, endpoints)
`, internaltesting.TemplateData{
"ModelName": modelName,
"AppName": appName,
"Constraints": constraints,
"EndpointBindings": endpoints,
})
}

func testCheckEndpointsAreSetToCorrectSpace(modelName, appName, defaultSpace string, configuredEndpoints map[string]string) resource.TestCheckFunc {
Expand Down

0 comments on commit bc44232

Please sign in to comment.