Default SecGroup Rules Acceptance Test Cleanup
The following changes were made to the defsecrules acceptance tests:
* Renamed tests so tests can selectively be run by substring.
* Retrieving lists with all pages.
* Renamed test file.
* Printing all default rule attributes.
diff --git a/acceptance/openstack/compute/v2/defsecrules_test.go b/acceptance/openstack/compute/v2/defsecrules_test.go
new file mode 100644
index 0000000..dbee8e3
--- /dev/null
+++ b/acceptance/openstack/compute/v2/defsecrules_test.go
@@ -0,0 +1,105 @@
+// +build acceptance compute defsecrules
+
+package v2
+
+import (
+ "testing"
+
+ "github.com/gophercloud/gophercloud"
+ "github.com/gophercloud/gophercloud/acceptance/tools"
+ dsr "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/defsecrules"
+)
+
+func TestDefSecRulesList(t *testing.T) {
+ client, err := newClient()
+ if err != nil {
+ t.Fatalf("Unable to create a compute client: %v", err)
+ }
+
+ allPages, err := dsr.List(client).AllPages()
+ if err != nil {
+ t.Fatalf("Unable to list default rules: %v", err)
+ }
+
+ allDefaultRules, err := dsr.ExtractDefaultRules(allPages)
+ if err != nil {
+ t.Fatalf("Unable to extract default rules: %v", err)
+ }
+
+ for _, defaultRule := range allDefaultRules {
+ printDefaultRule(t, &defaultRule)
+ }
+}
+
+func TestDefSecRulesCreate(t *testing.T) {
+ client, err := newClient()
+ if err != nil {
+ t.Fatalf("Unable to create a compute client: %v", err)
+ }
+
+ defaultRule, err := createDefaultRule(t, client)
+ if err != nil {
+ t.Fatalf("Unable to create default rule: %v", err)
+ }
+ defer deleteDefaultRule(t, client, defaultRule)
+
+ printDefaultRule(t, &defaultRule)
+}
+
+func TestDefSecRulesGet(t *testing.T) {
+ client, err := newClient()
+ if err != nil {
+ t.Fatalf("Unable to create a compute client: %v", err)
+ }
+
+ defaultRule, err := createDefaultRule(t, client)
+ if err != nil {
+ t.Fatalf("Unable to create default rule: %v", err)
+ }
+ defer deleteDefaultRule(t, client, defaultRule)
+
+ newDefaultRule, err := dsr.Get(client, defaultRule.ID).Extract()
+ if err != nil {
+ t.Fatalf("Unable to get default rule %s: %v", defaultRule.ID, err)
+ }
+
+ printDefaultRule(t, newDefaultRule)
+}
+
+func createDefaultRule(t *testing.T, client *gophercloud.ServiceClient) (dsr.DefaultRule, error) {
+ createOpts := dsr.CreateOpts{
+ FromPort: tools.RandomInt(80, 89),
+ ToPort: tools.RandomInt(90, 99),
+ IPProtocol: "TCP",
+ CIDR: "0.0.0.0/0",
+ }
+
+ defaultRule, err := dsr.Create(client, createOpts).Extract()
+ if err != nil {
+ return *defaultRule, err
+ }
+
+ t.Logf("Created default rule: %s", defaultRule.ID)
+
+ return *defaultRule, nil
+}
+
+func deleteDefaultRule(t *testing.T, client *gophercloud.ServiceClient, defaultRule dsr.DefaultRule) {
+ err := dsr.Delete(client, defaultRule.ID).ExtractErr()
+ if err != nil {
+ t.Fatalf("Unable to delete default rule %s: %v", defaultRule.ID, err)
+ }
+
+ t.Logf("Deleted default rule: %s", defaultRule.ID)
+}
+
+func printDefaultRule(t *testing.T, defaultRule *dsr.DefaultRule) {
+ t.Logf("\tID: %s", defaultRule.ID)
+ t.Logf("\tFrom Port: %d", defaultRule.FromPort)
+ t.Logf("\tTo Port: %d", defaultRule.ToPort)
+ t.Logf("\tIP Protocol: %s", defaultRule.IPProtocol)
+ t.Logf("\tIP Range: %s", defaultRule.IPRange.CIDR)
+ t.Logf("\tParent Group ID: %s", defaultRule.ParentGroupID)
+ t.Logf("\tGroup Tenant ID: %s", defaultRule.Group.TenantID)
+ t.Logf("\tGroup Name: %s", defaultRule.Group.Name)
+}