104 lines
2.8 KiB
Go
104 lines
2.8 KiB
Go
package acctest
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"github.com/apparentlymart/go-cidr/cidr"
|
|
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
|
|
"net"
|
|
"testing"
|
|
|
|
"github.com/filipowm/go-unifi/unifi"
|
|
pt "github.com/filipowm/terraform-provider-unifi/internal/provider/testing"
|
|
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
|
|
)
|
|
|
|
func TestAccDataUser_default(t *testing.T) {
|
|
mac, unallocateTestMac := pt.AllocateTestMac(t)
|
|
defer unallocateTestMac()
|
|
name := acctest.RandomWithPrefix("tfacc")
|
|
|
|
AcceptanceTest(t, AcceptanceTestCase{
|
|
PreCheck: func() {
|
|
_, err := testClient.CreateUser(context.Background(), "default", &unifi.User{
|
|
MAC: mac,
|
|
Name: name,
|
|
Note: name,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
},
|
|
Steps: []resource.TestStep{
|
|
{
|
|
Config: testAccDataUserConfig_default(mac),
|
|
Check: resource.ComposeTestCheckFunc(
|
|
resource.TestCheckResourceAttrSet("data.unifi_user.test", "id"),
|
|
resource.TestCheckResourceAttr("data.unifi_user.test", "mac", mac),
|
|
resource.TestCheckResourceAttr("data.unifi_user.test", "name", name),
|
|
),
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestAccDataUser_localDnsRecord(t *testing.T) {
|
|
mac, unallocateTestMac := pt.AllocateTestMac(t)
|
|
defer unallocateTestMac()
|
|
name := acctest.RandomWithPrefix("tfacc")
|
|
ctx := context.Background()
|
|
n, err := testClient.ListNetwork(ctx, "default")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(n) == 0 {
|
|
t.Fatal("no networks found, but default should exist")
|
|
}
|
|
_, subnet, err := net.ParseCIDR(n[0].IPSubnet)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
ip, err := cidr.Host(subnet, 1)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
AcceptanceTest(t, AcceptanceTestCase{
|
|
VersionConstraint: ">= 7.3",
|
|
PreCheck: func() {
|
|
_, err = testClient.CreateUser(ctx, "default", &unifi.User{
|
|
MAC: mac,
|
|
Name: name,
|
|
UseFixedIP: true,
|
|
NetworkID: n[0].ID,
|
|
FixedIP: ip.String(),
|
|
LocalDNSRecord: "myuser.example.com",
|
|
LocalDNSRecordEnabled: true,
|
|
Note: name,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
},
|
|
Steps: []resource.TestStep{
|
|
{
|
|
Config: testAccDataUserConfig_default(mac),
|
|
Check: resource.ComposeTestCheckFunc(
|
|
resource.TestCheckResourceAttrSet("data.unifi_user.test", "id"),
|
|
resource.TestCheckResourceAttr("data.unifi_user.test", "mac", mac),
|
|
resource.TestCheckResourceAttr("data.unifi_user.test", "name", name),
|
|
resource.TestCheckResourceAttr("data.unifi_user.test", "local_dns_record", "myuser.example.com"),
|
|
resource.TestCheckResourceAttr("data.unifi_user.test", "fixed_ip", ip.String()),
|
|
),
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
func testAccDataUserConfig_default(mac string) string {
|
|
return fmt.Sprintf(`
|
|
data "unifi_user" "test" {
|
|
mac = "%s"
|
|
}
|
|
`, mac)
|
|
}
|