Skip to content

Commit

Permalink
Merge pull request #530 from harness/PL-38498
Browse files Browse the repository at this point in the history
Filter Tests Added
  • Loading branch information
adiyaar24 committed May 5, 2023
2 parents 3176794 + 42be622 commit e1df89a
Show file tree
Hide file tree
Showing 5 changed files with 299 additions and 2 deletions.
2 changes: 1 addition & 1 deletion docs/resources/platform_filters.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ resource "harness_platform_filters" "test" {

### Optional

- `filter_visibility` (String) This indicates visibility of filter. By default, everyone can view this filter.
- `filter_visibility` (String) This indicates visibility of filter. By default, everyone can view this filter. Can either be EveryOne or OnlyCreator
- `org_id` (String) organization Identifier for the Entity
- `project_id` (String) project Identifier for the Entity

Expand Down
8 changes: 8 additions & 0 deletions internal/acctest/acctest.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,14 @@ func AccountLevelResourceImportStateIdFunc(resourceName string) resource.ImportS
}
}

func AccountFilterImportStateIdFunc(resourceName string) resource.ImportStateIdFunc {
return func(s *terraform.State) (string, error) {
primary := s.RootModule().Resources[resourceName].Primary
id := primary.ID
type_ := primary.Attributes["type"]
return fmt.Sprintf("%s/%s", id, type_), nil
}
}
func ProjectFilterImportStateIdFunc(resourceName string) resource.ImportStateIdFunc {
return func(s *terraform.State) (string, error) {
primary := s.RootModule().Resources[resourceName].Primary
Expand Down
45 changes: 45 additions & 0 deletions internal/service/platform/filters/data_source_filters_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,31 @@ func TestAccDataSourceFilters(t *testing.T) {
Steps: []resource.TestStep{
{
Config: testAccDataSourceFilters(id, name),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(resourceName, "identifier", id),
resource.TestCheckResourceAttr(resourceName, "name", name),
resource.TestCheckResourceAttr(resourceName, "type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.tags.#", "1"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.filter_type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_visibility", "EveryOne"),
),
},
},
})
}

func TestAccDataSourceFiltersProjectLevel(t *testing.T) {

id := fmt.Sprintf("%s_%s", t.Name(), utils.RandStringBytes(6))
name := id
resourceName := "data.harness_platform_filters.test"

resource.UnitTest(t, resource.TestCase{
PreCheck: func() { acctest.TestAccPreCheck(t) },
ProviderFactories: acctest.ProviderFactories,
Steps: []resource.TestStep{
{
Config: testAccDataSourceFiltersProjectLevel(id, name),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(resourceName, "identifier", id),
resource.TestCheckResourceAttr(resourceName, "org_id", id),
Expand Down Expand Up @@ -63,6 +88,26 @@ func TestAccDataSourceFiltersOrgLevel(t *testing.T) {
}

func testAccDataSourceFilters(id string, name string) string {
return fmt.Sprintf(`
resource "harness_platform_filters" "test" {
identifier = "%[1]s"
name = "%[2]s"
type = "Connector"
filter_properties {
tags = ["foo:bar"]
filter_type = "Connector"
}
filter_visibility = "EveryOne"
}
data "harness_platform_filters" "test" {
identifier = harness_platform_filters.test.identifier
type = harness_platform_filters.test.type
}
`, id, name)
}

func testAccDataSourceFiltersProjectLevel(id string, name string) string {
return fmt.Sprintf(`
resource "harness_platform_organization" "test" {
identifier = "%[1]s"
Expand Down
3 changes: 2 additions & 1 deletion internal/service/platform/filters/resource_filters.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,10 @@ func ResourceFilters() *schema.Resource {
},
},
"filter_visibility": {
Description: "This indicates visibility of filter. By default, everyone can view this filter.",
Description: "This indicates visibility of filter. By default, everyone can view this filter. Can either be EveryOne or OnlyCreator",
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: validation.StringInSlice([]string{"EveryOne", "OnlyCreator"}, false),
},
},
Expand Down
243 changes: 243 additions & 0 deletions internal/service/platform/filters/resource_filters_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,130 @@ func TestAccResourceFilters(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "filter_visibility", "EveryOne"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
ImportStateIdFunc: acctest.AccountFilterImportStateIdFunc(resourceName),
},
},
})
}

func TestAccResourceFiltersWOnlyCreator(t *testing.T) {

id := fmt.Sprintf("%s_%s", t.Name(), utils.RandStringBytes(5))
name := id
updatedName := fmt.Sprintf("%s_updated", name)
resourceName := "harness_platform_filters.test"

resource.UnitTest(t, resource.TestCase{
PreCheck: func() { acctest.TestAccPreCheck(t) },
ProviderFactories: acctest.ProviderFactories,
CheckDestroy: testAccFiltersDestroy(resourceName),
Steps: []resource.TestStep{
{
Config: testAccResourceFilterswCreator(id, name),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(resourceName, "id", id),
resource.TestCheckResourceAttr(resourceName, "name", name),
resource.TestCheckResourceAttr(resourceName, "type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.tags.#", "1"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.filter_type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_visibility", "EveryOne"),
),
},
{
Config: testAccResourceFilterswCreator(id, updatedName),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(resourceName, "id", id),
resource.TestCheckResourceAttr(resourceName, "name", updatedName),
resource.TestCheckResourceAttr(resourceName, "type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.filter_type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.tags.#", "1"),
resource.TestCheckResourceAttr(resourceName, "filter_visibility", "EveryOne"),
),
},

},
})
}

func TestAccResourceFiltersProjectLevel(t *testing.T) {

id := fmt.Sprintf("%s_%s", t.Name(), utils.RandStringBytes(5))
name := id
updatedName := fmt.Sprintf("%s_updated", name)
resourceName := "harness_platform_filters.test"

resource.UnitTest(t, resource.TestCase{
PreCheck: func() { acctest.TestAccPreCheck(t) },
ProviderFactories: acctest.ProviderFactories,
CheckDestroy: testAccFiltersDestroy(resourceName),
Steps: []resource.TestStep{
{
Config: testAccResourceFiltersProjectLevel(id, name),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(resourceName, "id", id),
resource.TestCheckResourceAttr(resourceName, "name", name),
resource.TestCheckResourceAttr(resourceName, "type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.tags.#", "1"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.filter_type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_visibility", "EveryOne"),
),
},
{
Config: testAccResourceFiltersProjectLevel(id, updatedName),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(resourceName, "id", id),
resource.TestCheckResourceAttr(resourceName, "name", updatedName),
resource.TestCheckResourceAttr(resourceName, "type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.filter_type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.tags.#", "1"),
resource.TestCheckResourceAttr(resourceName, "filter_visibility", "EveryOne"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
ImportStateIdFunc: acctest.ProjectFilterImportStateIdFunc(resourceName),
},
},
})
}
func TestAccResourceFiltersProjectLevelNoFilterVisiblity(t *testing.T) {

id := fmt.Sprintf("%s_%s", t.Name(), utils.RandStringBytes(5))
name := id
updatedName := fmt.Sprintf("%s_updated", name)
resourceName := "harness_platform_filters.test"

resource.UnitTest(t, resource.TestCase{
PreCheck: func() { acctest.TestAccPreCheck(t) },
ProviderFactories: acctest.ProviderFactories,
CheckDestroy: testAccFiltersDestroy(resourceName),
Steps: []resource.TestStep{
{
Config: testAccResourceFiltersProjectLevelNoFilterVisiblity(id, name),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(resourceName, "id", id),
resource.TestCheckResourceAttr(resourceName, "name", name),
resource.TestCheckResourceAttr(resourceName, "type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.tags.#", "1"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.filter_type", "Connector"),
),
},
{
Config: testAccResourceFiltersProjectLevelNoFilterVisiblity(id, updatedName),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(resourceName, "id", id),
resource.TestCheckResourceAttr(resourceName, "name", updatedName),
resource.TestCheckResourceAttr(resourceName, "type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.filter_type", "Connector"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.tags.#", "1"),
),
},
{
ResourceName: resourceName,
ImportState: true,
Expand Down Expand Up @@ -100,6 +224,48 @@ func TestAccResourceFiltersOrgLevel(t *testing.T) {
})
}

func TestAccResourceFiltersOrgLevelWfFileStore(t *testing.T) {

id := fmt.Sprintf("%s_%s", t.Name(), utils.RandStringBytes(5))
name := id
updatedName := fmt.Sprintf("%s_updated", name)
resourceName := "harness_platform_filters.test"

resource.UnitTest(t, resource.TestCase{
PreCheck: func() { acctest.TestAccPreCheck(t) },
ProviderFactories: acctest.ProviderFactories,
CheckDestroy: testAccFiltersOrgLevelDestroy(resourceName),
Steps: []resource.TestStep{
{
Config: testAccResourceFiltersOrgLevelWFileStore(id, name),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(resourceName, "id", id),
resource.TestCheckResourceAttr(resourceName, "name", name),
resource.TestCheckResourceAttr(resourceName, "type", "FileStore"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.tags.#", "1"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.filter_type", "FileStore"),
),
},
{
Config: testAccResourceFiltersOrgLevelWFileStore(id, updatedName),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(resourceName, "id", id),
resource.TestCheckResourceAttr(resourceName, "name", updatedName),
resource.TestCheckResourceAttr(resourceName, "type", "FileStore"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.tags.#", "1"),
resource.TestCheckResourceAttr(resourceName, "filter_properties.0.filter_type", "FileStore"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
ImportStateIdFunc: acctest.OrgFilterImportStateIdFunc(resourceName),
},
},
})
}

func testAccGetResourceFilters(resourceName string, state *terraform.State) (*nextgen.Filter, error) {
r := acctest.TestAccGetResource(resourceName, state)
c, ctx := acctest.TestAccGetPlatformClientWithContext()
Expand Down Expand Up @@ -152,6 +318,36 @@ func buildField(r *terraform.ResourceState, field string) optional.String {
}

func testAccResourceFilters(id string, name string) string {
return fmt.Sprintf(`
resource "harness_platform_filters" "test" {
identifier = "%[1]s"
name = "%[2]s"
type = "Connector"
filter_properties {
tags = ["foo:bar"]
filter_type = "Connector"
}
filter_visibility = "EveryOne"
}
`, id, name)
}

func testAccResourceFilterswCreator(id string, name string) string {
return fmt.Sprintf(`
resource "harness_platform_filters" "test" {
identifier = "%[1]s"
name = "%[2]s"
type = "Connector"
filter_properties {
tags = ["foo:bar"]
filter_type = "Connector"
}
filter_visibility = "OnlyCreator"
}
`, id, name)
}

func testAccResourceFiltersProjectLevel(id string, name string) string {
return fmt.Sprintf(`
resource "harness_platform_organization" "test" {
identifier = "%[1]s"
Expand Down Expand Up @@ -179,6 +375,53 @@ func testAccResourceFilters(id string, name string) string {
}
`, id, name)
}
func testAccResourceFiltersProjectLevelNoFilterVisiblity(id string, name string) string {
return fmt.Sprintf(`
resource "harness_platform_organization" "test" {
identifier = "%[1]s"
name = "%[2]s"
}
resource "harness_platform_project" "test" {
identifier = "%[1]s"
name = "%[2]s"
org_id = harness_platform_organization.test.id
color = "#472848"
}
resource "harness_platform_filters" "test" {
identifier = "%[1]s"
name = "%[2]s"
org_id = harness_platform_project.test.org_id
project_id = harness_platform_project.test.id
type = "Connector"
filter_properties {
tags = ["foo:bar"]
filter_type = "Connector"
}
}
`, id, name)
}

func testAccResourceFiltersOrgLevelWFileStore(id string, name string) string {
return fmt.Sprintf(`
resource "harness_platform_organization" "test" {
identifier = "%[1]s"
name = "%[2]s"
}
resource "harness_platform_filters" "test" {
identifier = "%[1]s"
name = "%[2]s"
org_id = harness_platform_organization.test.id
type = "FileStore"
filter_properties {
tags = ["foo:bar"]
filter_type = "FileStore"
}
}
`, id, name)
}

func testAccResourceFiltersOrgLevel(id string, name string) string {
return fmt.Sprintf(`
Expand Down

0 comments on commit e1df89a

Please sign in to comment.