Files
terraform-provider-unifi/internal/provider/acctest/resource_setting_usg_test.go
Mateusz Filipowicz e7164c0460 feat: add DNS record resource and datasources (#25)
* add DNS record

* revamp tests

* lint

* cleanup

* feat dns test

* chore: add DNS Record tests

* linting

* f
2025-02-26 01:17:59 +01:00

142 lines
3.1 KiB
Go

package acctest
import (
"fmt"
pt "github.com/filipowm/terraform-provider-unifi/internal/provider/testing"
"regexp"
"sync"
"testing"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
)
// using an additional lock to the one around the resource to avoid deadlocking accidentally
var settingUsgLock = sync.Mutex{}
func TestAccSettingUsg_mdns_v6(t *testing.T) {
resource.ParallelTest(t, resource.TestCase{
PreCheck: func() {
pt.PreCheck(t)
PreCheckVersionConstraint(t, "< 7")
settingUsgLock.Lock()
t.Cleanup(func() {
settingUsgLock.Unlock()
})
},
ProtoV6ProviderFactories: providers,
Steps: []resource.TestStep{
{
Config: testAccSettingUsgConfig_mdns(true),
Check: resource.ComposeTestCheckFunc(),
},
pt.ImportStep("unifi_setting_usg.test"),
{
Config: testAccSettingUsgConfig_mdns(false),
Check: resource.ComposeTestCheckFunc(),
},
pt.ImportStep("unifi_setting_usg.test"),
{
Config: testAccSettingUsgConfig_mdns(true),
Check: resource.ComposeTestCheckFunc(),
},
pt.ImportStep("unifi_setting_usg.test"),
},
})
}
func TestAccSettingUsg_mdns_v7(t *testing.T) {
resource.ParallelTest(t, resource.TestCase{
PreCheck: func() {
pt.PreCheck(t)
PreCheckVersionConstraint(t, ">= 7")
settingUsgLock.Lock()
t.Cleanup(func() {
settingUsgLock.Unlock()
})
},
ProtoV6ProviderFactories: providers,
Steps: []resource.TestStep{
{
Config: testAccSettingUsgConfig_mdns(true),
ExpectError: regexp.MustCompile("multicast_dns_enabled is not supported"),
},
},
})
}
func TestAccSettingUsg_dhcpRelay(t *testing.T) {
resource.ParallelTest(t, resource.TestCase{
PreCheck: func() {
pt.PreCheck(t)
settingUsgLock.Lock()
t.Cleanup(func() {
settingUsgLock.Unlock()
})
},
ProtoV6ProviderFactories: providers,
Steps: []resource.TestStep{
{
Config: testAccSettingUsgConfig_dhcpRelay(),
Check: resource.ComposeTestCheckFunc(),
},
pt.ImportStep("unifi_setting_usg.test"),
},
})
}
func TestAccSettingUsg_site(t *testing.T) {
resource.ParallelTest(t, resource.TestCase{
PreCheck: func() {
pt.PreCheck(t)
settingUsgLock.Lock()
t.Cleanup(func() {
settingUsgLock.Unlock()
})
},
ProtoV6ProviderFactories: providers,
Steps: []resource.TestStep{
{
Config: testAccSettingUsgConfig_site(),
Check: resource.ComposeTestCheckFunc(),
},
{
ResourceName: "unifi_setting_usg.test",
ImportState: true,
ImportStateIdFunc: pt.SiteAndIDImportStateIDFunc("unifi_setting_usg.test"),
ImportStateVerify: true,
},
},
})
}
func testAccSettingUsgConfig_mdns(mdns bool) string {
return fmt.Sprintf(`
resource "unifi_setting_usg" "test" {
multicast_dns_enabled = %t
}
`, mdns)
}
func testAccSettingUsgConfig_dhcpRelay() string {
return `
resource "unifi_setting_usg" "test" {
dhcp_relay_servers = [
"10.1.2.3",
"10.1.2.4",
]
}
`
}
func testAccSettingUsgConfig_site() string {
return `
resource "unifi_site" "test" {
description = "test"
}
resource "unifi_setting_usg" "test" {
site = unifi_site.test.name
}
`
}