Files
terraform-provider-unifi/internal/provider/acctest/resource_static_route_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

206 lines
7.3 KiB
Go

package acctest
import (
"fmt"
pt "github.com/filipowm/terraform-provider-unifi/internal/provider/testing"
"net"
"strconv"
"testing"
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
)
func TestAccStaticRoute_nextHop(t *testing.T) {
name := acctest.RandomWithPrefix("tfacc")
network := &net.IPNet{
IP: net.IPv4(172, 17, 0, 0).To4(),
Mask: net.IPv4Mask(255, 255, 0, 0),
}
distance := 1
nextHop := net.IPv4(172, 16, 0, 1).To4()
AcceptanceTest(t, AcceptanceTestCase{
// TODO: CheckDestroy: ,
Steps: []resource.TestStep{
{
Config: testAccStaticRouteConfig_nextHop(name, network, distance, &nextHop),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("unifi_static_route.test", "type", "nexthop-route"),
resource.TestCheckResourceAttr("unifi_static_route.test", "network", network.String()),
resource.TestCheckResourceAttr("unifi_static_route.test", "name", name),
resource.TestCheckResourceAttr("unifi_static_route.test", "distance", strconv.Itoa(distance)),
resource.TestCheckResourceAttr("unifi_static_route.test", "next_hop", nextHop.String()),
),
},
pt.ImportStep("unifi_static_route.test"),
},
})
}
func TestAccStaticRoute_nextHop_ipv6(t *testing.T) {
name := acctest.RandomWithPrefix("tfacc")
network := &net.IPNet{
IP: net.IP{0xfd, 0x6a, 0x37, 0xbe, 0xe3, 0x62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1},
Mask: net.IPMask{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
}
distance := 1
nextHop := net.IP{0xfd, 0x6a, 0x37, 0xbe, 0xe3, 0x62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1}
AcceptanceTest(t, AcceptanceTestCase{
// TODO: CheckDestroy: ,
Steps: []resource.TestStep{
{
Config: testAccStaticRouteConfig_nextHop(name, network, distance, &nextHop),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("unifi_static_route.test", "type", "nexthop-route"),
resource.TestCheckResourceAttr("unifi_static_route.test", "network", network.String()),
resource.TestCheckResourceAttr("unifi_static_route.test", "name", name),
resource.TestCheckResourceAttr("unifi_static_route.test", "distance", strconv.Itoa(distance)),
resource.TestCheckResourceAttr("unifi_static_route.test", "next_hop", nextHop.String()),
),
},
pt.ImportStep("unifi_static_route.test"),
},
})
}
func TestAccStaticRoute_blackhole(t *testing.T) {
name := acctest.RandomWithPrefix("tfacc")
network := &net.IPNet{
IP: net.IPv4(172, 18, 0, 0).To4(),
Mask: net.IPv4Mask(255, 255, 0, 0),
}
distance := 1
AcceptanceTest(t, AcceptanceTestCase{
// TODO: CheckDestroy: ,
Steps: []resource.TestStep{
{
Config: testAccStaticRouteConfig_blackhole(name, network, distance),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("unifi_static_route.test", "type", "blackhole"),
resource.TestCheckResourceAttr("unifi_static_route.test", "network", network.String()),
resource.TestCheckResourceAttr("unifi_static_route.test", "name", name),
resource.TestCheckResourceAttr("unifi_static_route.test", "distance", strconv.Itoa(distance)),
),
},
pt.ImportStep("unifi_static_route.test"),
},
})
}
func TestAccStaticRoute_blackhole_ipv6(t *testing.T) {
name := acctest.RandomWithPrefix("tfacc")
network := &net.IPNet{
IP: net.IP{0xfd, 0x6a, 0x37, 0xbe, 0xe3, 0x62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1},
Mask: net.IPMask{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
}
distance := 1
AcceptanceTest(t, AcceptanceTestCase{
// TODO: CheckDestroy: ,
Steps: []resource.TestStep{
{
Config: testAccStaticRouteConfig_blackhole(name, network, distance),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("unifi_static_route.test", "type", "blackhole"),
resource.TestCheckResourceAttr("unifi_static_route.test", "network", network.String()),
resource.TestCheckResourceAttr("unifi_static_route.test", "name", name),
resource.TestCheckResourceAttr("unifi_static_route.test", "distance", strconv.Itoa(distance)),
),
},
pt.ImportStep("unifi_static_route.test"),
},
})
}
func TestAccStaticRoute_interface(t *testing.T) {
name := acctest.RandomWithPrefix("tfacc")
network := &net.IPNet{
IP: net.IPv4(172, 19, 0, 0).To4(),
Mask: net.IPv4Mask(255, 255, 0, 0),
}
distance := 1
networkInterface := "WAN2"
AcceptanceTest(t, AcceptanceTestCase{
// TODO: CheckDestroy: ,
Steps: []resource.TestStep{
{
Config: testAccStaticRouteConfig_interface(name, network, distance, networkInterface),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("unifi_static_route.test", "type", "interface-route"),
resource.TestCheckResourceAttr("unifi_static_route.test", "network", network.String()),
resource.TestCheckResourceAttr("unifi_static_route.test", "name", name),
resource.TestCheckResourceAttr("unifi_static_route.test", "distance", strconv.Itoa(distance)),
resource.TestCheckResourceAttr("unifi_static_route.test", "interface", networkInterface),
),
},
pt.ImportStep("unifi_static_route.test"),
},
})
}
func TestAccStaticRoute_interface_ipv6(t *testing.T) {
name := acctest.RandomWithPrefix("tfacc")
network := &net.IPNet{
IP: net.IP{0xfd, 0x6a, 0x37, 0xbe, 0xe3, 0x62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1},
Mask: net.IPMask{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
}
distance := 1
networkInterface := "WAN2"
AcceptanceTest(t, AcceptanceTestCase{
// TODO: CheckDestroy: ,
Steps: []resource.TestStep{
{
Config: testAccStaticRouteConfig_interface(name, network, distance, networkInterface),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("unifi_static_route.test", "type", "interface-route"),
resource.TestCheckResourceAttr("unifi_static_route.test", "network", network.String()),
resource.TestCheckResourceAttr("unifi_static_route.test", "name", name),
resource.TestCheckResourceAttr("unifi_static_route.test", "distance", strconv.Itoa(distance)),
resource.TestCheckResourceAttr("unifi_static_route.test", "interface", networkInterface),
),
},
pt.ImportStep("unifi_static_route.test"),
},
})
}
func testAccStaticRouteConfig_nextHop(name string, network *net.IPNet, distance int, nextHop *net.IP) string {
return fmt.Sprintf(`
resource "unifi_static_route" "test" {
type = "nexthop-route"
network = "%[2]s"
name = "%[1]s"
distance = %[3]d
next_hop = "%[4]s"
}
`, name, network, distance, nextHop)
}
func testAccStaticRouteConfig_blackhole(name string, network *net.IPNet, distance int) string {
return fmt.Sprintf(`
resource "unifi_static_route" "test" {
type = "blackhole"
network = "%[2]s"
name = "%[1]s"
distance = %[3]d
}
`, name, network, distance)
}
func testAccStaticRouteConfig_interface(name string, network *net.IPNet, distance int, networkInterface string) string {
return fmt.Sprintf(`
resource "unifi_static_route" "test" {
type = "interface-route"
network = "%[2]s"
name = "%[1]s"
distance = %[3]d
interface = "%[4]s"
}
`, name, network, distance, networkInterface)
}