Refactor to use new handler setup
diff --git a/openstack/db/v1/instances/fixtures.go b/openstack/db/v1/instances/fixtures.go
index 0dda158..dedbfbb 100644
--- a/openstack/db/v1/instances/fixtures.go
+++ b/openstack/db/v1/instances/fixtures.go
@@ -2,45 +2,73 @@
 
 import (
 	"fmt"
-	"net/http"
-	"testing"
 
-	th "github.com/rackspace/gophercloud/testhelper"
-	fake "github.com/rackspace/gophercloud/testhelper/client"
+	"github.com/rackspace/gophercloud"
 )
 
-const singleInstanceJson = `
+const instance = `
+{
+  "created": "2014-02-13T21:47:13",
+  "datastore": {
+    "type": "mysql",
+    "version": "5.6"
+  },
+  "flavor": {
+    "id": "1",
+    "links": [
+      {
+        "href": "https://my-openstack.com/v1.0/1234/flavors/1",
+        "rel": "self"
+      },
+      {
+        "href": "https://my-openstack.com/v1.0/1234/flavors/1",
+        "rel": "bookmark"
+      }
+    ]
+  },
+  "links": [
+    {
+      "href": "https://my-openstack.com/v1.0/1234/instances/1",
+      "rel": "self"
+    }
+  ],
+  "hostname": "e09ad9a3f73309469cf1f43d11e79549caf9acf2.my-openstack.com",
+  "id": "{instanceID}",
+  "name": "json_rack_instance",
+  "status": "BUILD",
+  "updated": "2014-02-13T21:47:13",
+  "volume": {
+    "size": 2
+  }
+}
+`
+
+var createReq = `
 {
 	"instance": {
-		"created": "2014-02-13T21:47:13",
-		"datastore": {
-			"type": "mysql",
-			"version": "5.6"
-		},
-		"flavor": {
-			"id": "1",
-			"links": [
-				{
-					"href": "https://my-openstack.com/v1.0/1234/flavors/1",
-					"rel": "self"
-				},
-				{
-					"href": "https://my-openstack.com/v1.0/1234/flavors/1",
-					"rel": "bookmark"
-				}
-			]
-		},
-		"links": [
+		"databases": [
 			{
-				"href": "https://my-openstack.com/v1.0/1234/instances/1",
-				"rel": "self"
+				"character_set": "utf8",
+				"collate": "utf8_general_ci",
+				"name": "sampledb"
+			},
+			{
+				"name": "nextround"
 			}
 		],
-		"hostname": "e09ad9a3f73309469cf1f43d11e79549caf9acf2.my-openstack.com",
-		"id": "d4603f69-ec7e-4e9b-803f-600b9205576f",
+		"flavorRef": "1",
 		"name": "json_rack_instance",
-		"status": "BUILD",
-		"updated": "2014-02-13T21:47:13",
+		"users": [
+			{
+				"databases": [
+					{
+						"name": "sampledb"
+					}
+				],
+				"name": "demouser",
+				"password": "demopassword"
+			}
+		],
 		"volume": {
 			"size": 2
 		}
@@ -48,154 +76,36 @@
 }
 `
 
-func HandleCreateInstanceSuccessfully(t *testing.T) {
-	th.Mux.HandleFunc("/instances", func(w http.ResponseWriter, r *http.Request) {
-		th.TestMethod(t, r, "POST")
-		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
+var (
+	restartReq   = `{"restart": true}`
+	resizeReq    = `{"resize": {"flavorRef": "2"}}`
+	resizeVolReq = `{"resize": {"volume": {"size": 4}}}`
+)
 
-		w.Header().Set("Content-Type", "application/json")
-		w.WriteHeader(http.StatusOK)
+var (
+	createResp        = fmt.Sprintf(`{"instance": %s}`, instance)
+	listInstancesResp = fmt.Sprintf(`{"instances":[%s]}`, instance)
+	getInstanceResp   = createResp
+	enableUserResp    = `{"user":{"name":"root","password":"secretsecret"}}`
+	isUserEnabledResp = `{"rootEnabled":true}`
+)
 
-		th.TestJSONRequest(t, r, `
-{
-  "instance": {
-    "databases": [
-      {
-        "character_set": "utf8",
-        "collate": "utf8_general_ci",
-        "name": "sampledb"
-      },
-      {
-        "name": "nextround"
-      }
-    ],
-    "flavorRef": "1",
-    "name": "json_rack_instance",
-    "users": [
-      {
-        "databases": [
-          {
-            "name": "sampledb"
-          }
-        ],
-        "name": "demouser",
-        "password": "demopassword"
-      }
-    ],
-    "volume": {
-      "size": 2
-    }
-  }
-}
-`)
-
-		fmt.Fprintf(w, singleInstanceJson)
-	})
-}
-
-func HandleListInstanceSuccessfully(t *testing.T) {
-	th.Mux.HandleFunc("/instances", 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")
-
-		fmt.Fprintf(w, `
-{
-  "instances": [
-    {
-      "name": "xml_rack_instance",
-      "status": "ACTIVE",
-      "volume": {
-        "size": 2
-      },
-      "flavor": {
-        "id": "1",
-        "links": [
-          {
-            "href": "https://openstack.example.com/v1.0/1234/flavors/1",
-            "rel": "self"
-          },
-          {
-            "href": "https://openstack.example.com/flavors/1",
-            "rel": "bookmark"
-          }
-        ]
-      },
-      "id": "8fb081af-f237-44f5-80cc-b46be1840ca9",
-      "links": [
-        {
-          "href": "https://openstack.example.com/v1.0/1234/instances/8fb081af-f237-44f5-80cc-b46be1840ca9",
-          "rel": "self"
-        }
-      ]
-    }
-  ]
-}
-`)
-	})
-}
-
-func HandleGetInstanceSuccessfully(t *testing.T, id string) {
-	th.Mux.HandleFunc("/instances/"+id, 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")
-
-		fmt.Fprintf(w, singleInstanceJson)
-	})
-}
-
-func HandleDeleteInstanceSuccessfully(t *testing.T, id string) {
-	th.Mux.HandleFunc("/instances/"+id, func(w http.ResponseWriter, r *http.Request) {
-		th.TestMethod(t, r, "DELETE")
-		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
-		w.WriteHeader(http.StatusAccepted)
-	})
-}
-
-func HandleEnableRootUserSuccessfully(t *testing.T, id string) {
-	th.Mux.HandleFunc("/instances/"+id+"/root", func(w http.ResponseWriter, r *http.Request) {
-		th.TestMethod(t, r, "POST")
-		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
-		w.WriteHeader(http.StatusOK)
-		fmt.Fprintf(w, `{"user":{"name":"root","password":"secretsecret"}}`)
-	})
-}
-
-func HandleIsRootEnabledSuccessfully(t *testing.T, id string) {
-	th.Mux.HandleFunc("/instances/"+id+"/root", func(w http.ResponseWriter, r *http.Request) {
-		th.TestMethod(t, r, "GET")
-		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
-		w.WriteHeader(http.StatusOK)
-		fmt.Fprintf(w, `{"rootEnabled":true}`)
-	})
-}
-
-func HandleRestartSuccessfully(t *testing.T, id string) {
-	th.Mux.HandleFunc("/instances/"+id+"/action", func(w http.ResponseWriter, r *http.Request) {
-		th.TestMethod(t, r, "POST")
-		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
-		th.TestJSONRequest(t, r, `{"restart": true}`)
-		w.WriteHeader(http.StatusAccepted)
-	})
-}
-
-func HandleResizeInstanceSuccessfully(t *testing.T, id string) {
-	th.Mux.HandleFunc("/instances/"+id+"/action", func(w http.ResponseWriter, r *http.Request) {
-		th.TestMethod(t, r, "POST")
-		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
-		th.TestJSONRequest(t, r, `{"resize": {"flavorRef": "2"}}`)
-		w.WriteHeader(http.StatusAccepted)
-	})
-}
-
-func HandleResizeVolSuccessfully(t *testing.T, id string) {
-	th.Mux.HandleFunc("/instances/"+id+"/action", func(w http.ResponseWriter, r *http.Request) {
-		th.TestMethod(t, r, "POST")
-		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
-		th.TestJSONRequest(t, r, `{"resize": {"volume": {"size": 4}}}`)
-		w.WriteHeader(http.StatusAccepted)
-	})
+var expectedInstance = Instance{
+	Created: "2014-02-13T21:47:13",
+	Updated: "2014-02-13T21:47:13",
+	Flavor: Flavor{
+		ID: "1",
+		Links: []gophercloud.Link{
+			gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/flavors/1", Rel: "self"},
+			gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/flavors/1", Rel: "bookmark"},
+		},
+	},
+	Hostname: "e09ad9a3f73309469cf1f43d11e79549caf9acf2.my-openstack.com",
+	ID:       instanceID,
+	Links: []gophercloud.Link{
+		gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/instances/1", Rel: "self"},
+	},
+	Name:   "json_rack_instance",
+	Status: "BUILD",
+	Volume: Volume{Size: 2},
 }
diff --git a/openstack/db/v1/instances/requests_test.go b/openstack/db/v1/instances/requests_test.go
index bdda1f6..d44220d 100644
--- a/openstack/db/v1/instances/requests_test.go
+++ b/openstack/db/v1/instances/requests_test.go
@@ -3,41 +3,26 @@
 import (
 	"testing"
 
-	"github.com/rackspace/gophercloud"
 	db "github.com/rackspace/gophercloud/openstack/db/v1/databases"
 	"github.com/rackspace/gophercloud/openstack/db/v1/users"
 	"github.com/rackspace/gophercloud/pagination"
 	th "github.com/rackspace/gophercloud/testhelper"
 	fake "github.com/rackspace/gophercloud/testhelper/client"
+	"github.com/rackspace/gophercloud/testhelper/fixture"
 )
 
-var instanceID = "d4603f69-ec7e-4e9b-803f-600b9205576f"
-
-var expectedInstance = &Instance{
-	Created: "2014-02-13T21:47:13",
-	Updated: "2014-02-13T21:47:13",
-	Flavor: Flavor{
-		ID: "1",
-		Links: []gophercloud.Link{
-			gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/flavors/1", Rel: "self"},
-			gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/flavors/1", Rel: "bookmark"},
-		},
-	},
-	Hostname: "e09ad9a3f73309469cf1f43d11e79549caf9acf2.my-openstack.com",
-	ID:       instanceID,
-	Links: []gophercloud.Link{
-		gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/instances/1", Rel: "self"},
-	},
-	Name:   "json_rack_instance",
-	Status: "BUILD",
-	Volume: Volume{Size: 2},
-}
+var (
+	instanceID = "{instanceID}"
+	rootURL    = "/instances"
+	resURL     = rootURL + "/" + instanceID
+	uRootURL   = resURL + "/root"
+	aURL       = resURL + "/action"
+)
 
 func TestCreate(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-
-	HandleCreateInstanceSuccessfully(t)
+	fixture.SetupHandler(t, rootURL, "POST", createReq, createResp, 200)
 
 	opts := CreateOpts{
 		Name:      "json_rack_instance",
@@ -61,31 +46,13 @@
 	instance, err := Create(fake.ServiceClient(), opts).Extract()
 
 	th.AssertNoErr(t, err)
-	th.AssertDeepEquals(t, expectedInstance, instance)
+	th.AssertDeepEquals(t, &expectedInstance, instance)
 }
 
 func TestInstanceList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-
-	HandleListInstanceSuccessfully(t)
-
-	expectedInstance := Instance{
-		Flavor: Flavor{
-			ID: "1",
-			Links: []gophercloud.Link{
-				gophercloud.Link{Href: "https://openstack.example.com/v1.0/1234/flavors/1", Rel: "self"},
-				gophercloud.Link{Href: "https://openstack.example.com/flavors/1", Rel: "bookmark"},
-			},
-		},
-		ID: "8fb081af-f237-44f5-80cc-b46be1840ca9",
-		Links: []gophercloud.Link{
-			gophercloud.Link{Href: "https://openstack.example.com/v1.0/1234/instances/8fb081af-f237-44f5-80cc-b46be1840ca9", Rel: "self"},
-		},
-		Name:   "xml_rack_instance",
-		Status: "ACTIVE",
-		Volume: Volume{Size: 2},
-	}
+	fixture.SetupHandler(t, rootURL, "GET", "", listInstancesResp, 200)
 
 	pages := 0
 	err := List(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
@@ -96,38 +63,30 @@
 			return false, err
 		}
 
-		if len(actual) != 1 {
-			t.Fatalf("Expected 1 DB instance, got %d", len(actual))
-		}
-		th.CheckDeepEquals(t, expectedInstance, actual[0])
+		th.CheckDeepEquals(t, []Instance{expectedInstance}, actual)
 
 		return true, nil
 	})
 
 	th.AssertNoErr(t, err)
-
-	if pages != 1 {
-		t.Errorf("Expected 1 page, saw %d", pages)
-	}
+	th.AssertEquals(t, 1, pages)
 }
 
 func TestGetInstance(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-
-	HandleGetInstanceSuccessfully(t, instanceID)
+	fixture.SetupHandler(t, resURL, "GET", "", getInstanceResp, 200)
 
 	instance, err := Get(fake.ServiceClient(), instanceID).Extract()
 
 	th.AssertNoErr(t, err)
-	th.AssertDeepEquals(t, instance, expectedInstance)
+	th.AssertDeepEquals(t, &expectedInstance, instance)
 }
 
 func TestDeleteInstance(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-
-	HandleDeleteInstanceSuccessfully(t, instanceID)
+	fixture.SetupHandler(t, resURL, "DELETE", "", "", 202)
 
 	res := Delete(fake.ServiceClient(), instanceID)
 	th.AssertNoErr(t, res.Err)
@@ -136,12 +95,11 @@
 func TestEnableRootUser(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-
-	HandleEnableRootUserSuccessfully(t, instanceID)
+	fixture.SetupHandler(t, uRootURL, "POST", "", enableUserResp, 200)
 
 	expected := &users.User{Name: "root", Password: "secretsecret"}
-
 	user, err := EnableRootUser(fake.ServiceClient(), instanceID).Extract()
+
 	th.AssertNoErr(t, err)
 	th.AssertDeepEquals(t, expected, user)
 }
@@ -149,8 +107,7 @@
 func TestIsRootEnabled(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-
-	HandleIsRootEnabledSuccessfully(t, instanceID)
+	fixture.SetupHandler(t, uRootURL, "GET", "", isUserEnabledResp, 200)
 
 	isEnabled, err := IsRootEnabled(fake.ServiceClient(), instanceID)
 
@@ -161,32 +118,26 @@
 func TestRestartService(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-
-	HandleRestartSuccessfully(t, instanceID)
+	fixture.SetupHandler(t, aURL, "POST", restartReq, "", 202)
 
 	res := RestartService(fake.ServiceClient(), instanceID)
-
 	th.AssertNoErr(t, res.Err)
 }
 
 func TestResizeInstance(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-
-	HandleResizeInstanceSuccessfully(t, instanceID)
+	fixture.SetupHandler(t, aURL, "POST", resizeReq, "", 202)
 
 	res := ResizeInstance(fake.ServiceClient(), instanceID, "2")
-
 	th.AssertNoErr(t, res.Err)
 }
 
 func TestResizeVolume(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-
-	HandleResizeVolSuccessfully(t, instanceID)
+	fixture.SetupHandler(t, aURL, "POST", resizeVolReq, "", 202)
 
 	res := ResizeVolume(fake.ServiceClient(), instanceID, 4)
-
 	th.AssertNoErr(t, res.Err)
 }