Feature/filestorage availabilityzones list (#153)

* sfs: Add support for Availability Zone List

* sfs: Add acceptance tests for Availability zones List

* sfs: Fix review comments
diff --git a/openstack/sharedfilesystems/v2/availabilityzones/testing/fixtures.go b/openstack/sharedfilesystems/v2/availabilityzones/testing/fixtures.go
new file mode 100644
index 0000000..e5db8cd
--- /dev/null
+++ b/openstack/sharedfilesystems/v2/availabilityzones/testing/fixtures.go
@@ -0,0 +1,32 @@
+package testing
+
+import (
+	"fmt"
+	"net/http"
+	"testing"
+
+	th "github.com/gophercloud/gophercloud/testhelper"
+	fake "github.com/gophercloud/gophercloud/testhelper/client"
+)
+
+func MockListResponse(t *testing.T) {
+	th.Mux.HandleFunc("/os-availability-zone", func(w http.ResponseWriter, r *http.Request) {
+		th.TestMethod(t, r, "GET")
+		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
+
+		w.Header().Add("Content-Type", "application/json")
+		w.WriteHeader(http.StatusOK)
+
+		fmt.Fprintf(w, `
+        {
+            "availability_zones": [
+                {
+                    "name": "nova",
+                    "created_at": "2015-09-18T09:50:55.000000",
+                    "updated_at": null,
+                    "id": "388c983d-258e-4a0e-b1ba-10da37d766db"
+                }
+            ]
+        }`)
+	})
+}
diff --git a/openstack/sharedfilesystems/v2/availabilityzones/testing/requests_test.go b/openstack/sharedfilesystems/v2/availabilityzones/testing/requests_test.go
new file mode 100644
index 0000000..76c8574
--- /dev/null
+++ b/openstack/sharedfilesystems/v2/availabilityzones/testing/requests_test.go
@@ -0,0 +1,34 @@
+package testing
+
+import (
+	"testing"
+	"time"
+
+	"github.com/gophercloud/gophercloud/openstack/sharedfilesystems/v2/availabilityzones"
+	th "github.com/gophercloud/gophercloud/testhelper"
+	"github.com/gophercloud/gophercloud/testhelper/client"
+)
+
+// Verifies that availability zones can be listed correctly
+func TestList(t *testing.T) {
+	th.SetupHTTP()
+	defer th.TeardownHTTP()
+
+	MockListResponse(t)
+
+	allPages, err := availabilityzones.List(client.ServiceClient()).AllPages()
+	th.AssertNoErr(t, err)
+	actual, err := availabilityzones.ExtractAvailabilityZones(allPages)
+	th.AssertNoErr(t, err)
+	var nilTime time.Time
+	expected := []availabilityzones.AvailabilityZone{
+		{
+			Name:      "nova",
+			CreatedAt: time.Date(2015, 9, 18, 9, 50, 55, 0, time.UTC),
+			UpdatedAt: nilTime,
+			ID:        "388c983d-258e-4a0e-b1ba-10da37d766db",
+		},
+	}
+
+	th.CheckDeepEquals(t, expected, actual)
+}