Fixtures and unit tests for Rackspace images.
diff --git a/rackspace/compute/v2/images/delegate_test.go b/rackspace/compute/v2/images/delegate_test.go
new file mode 100644
index 0000000..b73a0fb
--- /dev/null
+++ b/rackspace/compute/v2/images/delegate_test.go
@@ -0,0 +1,47 @@
+package images
+
+import (
+ "fmt"
+ "net/http"
+ "testing"
+
+ "github.com/rackspace/gophercloud/pagination"
+ th "github.com/rackspace/gophercloud/testhelper"
+ "github.com/rackspace/gophercloud/testhelper/client"
+)
+
+func TestListImageDetails(t *testing.T) {
+ th.SetupHTTP()
+ defer th.TeardownHTTP()
+
+ th.Mux.HandleFunc("/images/detail", func(w http.ResponseWriter, r *http.Request) {
+ th.TestMethod(t, r, "GET")
+ th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
+
+ w.Header().Add("Content-Type", "application/json")
+ r.ParseForm()
+ marker := r.Form.Get("marker")
+ switch marker {
+ case "":
+ fmt.Fprintf(w, ListOutput)
+ case "e19a734c-c7e6-443a-830c-242209c4d65d":
+ fmt.Fprintf(w, `{ "images": [] }`)
+ default:
+ t.Fatalf("Unexpected marker: [%s]", marker)
+ }
+ })
+
+ count := 0
+ err := ListDetail(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) {
+ count++
+ actual, err := ExtractImages(page)
+ th.AssertNoErr(t, err)
+ th.CheckDeepEquals(t, ExpectedImageSlice, actual)
+
+ return true, nil
+ })
+ th.AssertNoErr(t, err)
+ if count < 1 {
+ t.Fatalf("At least one page of image results expected.")
+ }
+}
diff --git a/rackspace/compute/v2/images/fixtures.go b/rackspace/compute/v2/images/fixtures.go
new file mode 100644
index 0000000..c46d196
--- /dev/null
+++ b/rackspace/compute/v2/images/fixtures.go
@@ -0,0 +1,199 @@
+// +build fixtures
+package images
+
+import (
+ os "github.com/rackspace/gophercloud/openstack/compute/v2/images"
+)
+
+// ListOutput is an example response from an /images/detail request.
+const ListOutput = `
+{
+ "images": [
+ {
+ "OS-DCF:diskConfig": "MANUAL",
+ "OS-EXT-IMG-SIZE:size": 1.017415075e+09,
+ "created": "2014-10-01T15:49:02Z",
+ "id": "30aa010e-080e-4d4b-a7f9-09fc55b07d69",
+ "links": [
+ {
+ "href": "https://iad.servers.api.rackspacecloud.com/v2/111222/images/30aa010e-080e-4d4b-a7f9-09fc55b07d69",
+ "rel": "self"
+ },
+ {
+ "href": "https://iad.servers.api.rackspacecloud.com/111222/images/30aa010e-080e-4d4b-a7f9-09fc55b07d69",
+ "rel": "bookmark"
+ },
+ {
+ "href": "https://iad.servers.api.rackspacecloud.com/111222/images/30aa010e-080e-4d4b-a7f9-09fc55b07d69",
+ "rel": "alternate",
+ "type": "application/vnd.openstack.image"
+ }
+ ],
+ "metadata": {
+ "auto_disk_config": "disabled",
+ "cache_in_nova": "True",
+ "com.rackspace__1__build_core": "1",
+ "com.rackspace__1__build_managed": "1",
+ "com.rackspace__1__build_rackconnect": "1",
+ "com.rackspace__1__options": "0",
+ "com.rackspace__1__platform_target": "PublicCloud",
+ "com.rackspace__1__release_build_date": "2014-10-01_15-46-08",
+ "com.rackspace__1__release_id": "100",
+ "com.rackspace__1__release_version": "10",
+ "com.rackspace__1__source": "kickstart",
+ "com.rackspace__1__visible_core": "1",
+ "com.rackspace__1__visible_managed": "0",
+ "com.rackspace__1__visible_rackconnect": "0",
+ "image_type": "base",
+ "org.openstack__1__architecture": "x64",
+ "org.openstack__1__os_distro": "org.archlinux",
+ "org.openstack__1__os_version": "2014.8",
+ "os_distro": "arch",
+ "os_type": "linux",
+ "vm_mode": "hvm"
+ },
+ "minDisk": 20,
+ "minRam": 512,
+ "name": "Arch 2014.10 (PVHVM)",
+ "progress": 100,
+ "status": "ACTIVE",
+ "updated": "2014-10-01T19:37:58Z"
+ },
+ {
+ "OS-DCF:diskConfig": "AUTO",
+ "OS-EXT-IMG-SIZE:size": 1.060306463e+09,
+ "created": "2014-10-01T12:58:11Z",
+ "id": "e19a734c-c7e6-443a-830c-242209c4d65d",
+ "links": [
+ {
+ "href": "https://iad.servers.api.rackspacecloud.com/v2/111222/images/e19a734c-c7e6-443a-830c-242209c4d65d",
+ "rel": "self"
+ },
+ {
+ "href": "https://iad.servers.api.rackspacecloud.com/111222/images/e19a734c-c7e6-443a-830c-242209c4d65d",
+ "rel": "bookmark"
+ },
+ {
+ "href": "https://iad.servers.api.rackspacecloud.com/111222/images/e19a734c-c7e6-443a-830c-242209c4d65d",
+ "rel": "alternate",
+ "type": "application/vnd.openstack.image"
+ }
+ ],
+ "metadata": {
+ "auto_disk_config": "True",
+ "cache_in_nova": "True",
+ "com.rackspace__1__build_core": "1",
+ "com.rackspace__1__build_managed": "1",
+ "com.rackspace__1__build_rackconnect": "1",
+ "com.rackspace__1__options": "0",
+ "com.rackspace__1__platform_target": "PublicCloud",
+ "com.rackspace__1__release_build_date": "2014-10-01_12-31-03",
+ "com.rackspace__1__release_id": "1007",
+ "com.rackspace__1__release_version": "6",
+ "com.rackspace__1__source": "kickstart",
+ "com.rackspace__1__visible_core": "1",
+ "com.rackspace__1__visible_managed": "1",
+ "com.rackspace__1__visible_rackconnect": "1",
+ "image_type": "base",
+ "org.openstack__1__architecture": "x64",
+ "org.openstack__1__os_distro": "com.ubuntu",
+ "org.openstack__1__os_version": "14.04",
+ "os_distro": "ubuntu",
+ "os_type": "linux",
+ "vm_mode": "xen"
+ },
+ "minDisk": 20,
+ "minRam": 512,
+ "name": "Ubuntu 14.04 LTS (Trusty Tahr)",
+ "progress": 100,
+ "status": "ACTIVE",
+ "updated": "2014-10-01T15:51:44Z"
+ }
+ ]
+}
+`
+
+// GetOutput is an example response from an /images request.
+const GetOutput = `
+{
+ "image": {
+ "OS-DCF:diskConfig": "AUTO",
+ "OS-EXT-IMG-SIZE:size": 1060306463,
+ "created": "2014-10-01T12:58:11Z",
+ "id": "e19a734c-c7e6-443a-830c-242209c4d65d",
+ "links": [
+ {
+ "href": "https://iad.servers.api.rackspacecloud.com/v2/111222/images/e19a734c-c7e6-443a-830c-242209c4d65d",
+ "rel": "self"
+ },
+ {
+ "href": "https://iad.servers.api.rackspacecloud.com/111222/images/e19a734c-c7e6-443a-830c-242209c4d65d",
+ "rel": "bookmark"
+ },
+ {
+ "href": "https://iad.servers.api.rackspacecloud.com/111222/images/e19a734c-c7e6-443a-830c-242209c4d65d",
+ "rel": "alternate",
+ "type": "application/vnd.openstack.image"
+ }
+ ],
+ "metadata": {
+ "auto_disk_config": "True",
+ "cache_in_nova": "True",
+ "com.rackspace__1__build_core": "1",
+ "com.rackspace__1__build_managed": "1",
+ "com.rackspace__1__build_rackconnect": "1",
+ "com.rackspace__1__options": "0",
+ "com.rackspace__1__platform_target": "PublicCloud",
+ "com.rackspace__1__release_build_date": "2014-10-01_12-31-03",
+ "com.rackspace__1__release_id": "1007",
+ "com.rackspace__1__release_version": "6",
+ "com.rackspace__1__source": "kickstart",
+ "com.rackspace__1__visible_core": "1",
+ "com.rackspace__1__visible_managed": "1",
+ "com.rackspace__1__visible_rackconnect": "1",
+ "image_type": "base",
+ "org.openstack__1__architecture": "x64",
+ "org.openstack__1__os_distro": "com.ubuntu",
+ "org.openstack__1__os_version": "14.04",
+ "os_distro": "ubuntu",
+ "os_type": "linux",
+ "vm_mode": "xen"
+ },
+ "minDisk": 20,
+ "minRam": 512,
+ "name": "Ubuntu 14.04 LTS (Trusty Tahr)",
+ "progress": 100,
+ "status": "ACTIVE",
+ "updated": "2014-10-01T15:51:44Z"
+ }
+}
+`
+
+// ArchImage is the first Image structure that should be parsed from ListOutput.
+var ArchImage = os.Image{
+ ID: "30aa010e-080e-4d4b-a7f9-09fc55b07d69",
+ Name: "Arch 2014.10 (PVHVM)",
+ Created: "2014-10-01T15:49:02Z",
+ Updated: "2014-10-01T19:37:58Z",
+ MinDisk: 20,
+ MinRAM: 512,
+ Progress: 100,
+ Status: "ACTIVE",
+}
+
+// UbuntuImage is the second Image structure that should be parsed from ListOutput and
+// the only image that should be extracted from GetOutput.
+var UbuntuImage = os.Image{
+ ID: "e19a734c-c7e6-443a-830c-242209c4d65d",
+ Name: "Ubuntu 14.04 LTS (Trusty Tahr)",
+ Created: "2014-10-01T12:58:11Z",
+ Updated: "2014-10-01T15:51:44Z",
+ MinDisk: 20,
+ MinRAM: 512,
+ Progress: 100,
+ Status: "ACTIVE",
+}
+
+// ExpectedImageSlice is the collection of images that should be parsed from ListOutput,
+// in order.
+var ExpectedImageSlice = []os.Image{ArchImage, UbuntuImage}