-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathresource_odl_virtual_tenant_network_test.go
95 lines (83 loc) · 2.84 KB
/
resource_odl_virtual_tenant_network_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package odl
import (
"fmt"
"log"
"testing"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
)
func TestAccOdlVirtualTenantNetwork_Basic(t *testing.T) {
resourceName := "odl_virtual_tenant_network.vtn2"
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckVirtualTenantNetworkDestroy(resourceName),
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccCheckVirtualTenantNetworkConfigBasic,
Check: resource.ComposeTestCheckFunc(
testAccCheckVirtualTenantNetworkExists(resourceName),
resource.TestCheckResourceAttr(
"odl_virtual_tenant_network.vtn2", "tenant_name", "terraformVirtualTenantNetwork"),
),
},
},
})
}
func testAccCheckVirtualTenantNetworkDestroy(n string) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
if !ok {
return fmt.Errorf("Not found: odl_virtual_tenant_network.vtn2")
}
tenantName := rs.Primary.Attributes["tenant_name"]
config := testAccProvider.Meta().(*Config)
response, err := config.GetRequest("restconf/operational/vtn:vtns")
if err != nil {
log.Printf("[ERROR] POST Request failed")
return err
}
present, err := CheckResponseVirtualTenantNetworkExists(response, tenantName)
if err != nil {
log.Println("[ERROR] VirtualTenantNetwork Read failed")
return fmt.Errorf("[ERROR] VirtualTenantNetwork could not be read %v", err)
}
if present {
log.Println("[DEBUG] VirtualTenantNetwork with name " + tenantName + " found")
return fmt.Errorf("[ERROR] VirtualTenantNetwork with name " + tenantName + "was found")
}
return nil
}
}
func testAccCheckVirtualTenantNetworkExists(n string) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
if !ok {
return fmt.Errorf("Not found: %s", n)
}
if rs.Primary.ID == "" {
return fmt.Errorf("No VirtualTenantNetwork ID is set")
}
tenantName := rs.Primary.Attributes["tenant_name"]
config := testAccProvider.Meta().(*Config)
response, err := config.GetRequest("restconf/operational/vtn:vtns")
if err != nil {
log.Printf("[ERROR] POST Request failed")
return err
}
present, err := CheckResponseVirtualTenantNetworkExists(response, tenantName)
if err != nil {
log.Println("[ERROR] VirtualTenantNetwork Read failed")
return fmt.Errorf("[ERROR] VirtualTenantNetwork could not be read %v", err)
}
if !present {
log.Println("[DEBUG] VirtualTenantNetwork with name " + tenantName + " found")
return fmt.Errorf("[ERROR] VirtualTenantNetwork with name " + tenantName + "was found")
}
return nil
}
}
const testAccCheckVirtualTenantNetworkConfigBasic = `
resource "odl_virtual_tenant_network" "vtn2" {
tenant_name = "terraformVirtualTenantNetwork"
}`