Unit test for server creation.
diff --git a/rackspace/compute/v2/servers/delegate_test.go b/rackspace/compute/v2/servers/delegate_test.go
index fd90bc1..c1521be 100644
--- a/rackspace/compute/v2/servers/delegate_test.go
+++ b/rackspace/compute/v2/servers/delegate_test.go
@@ -5,6 +5,7 @@
"net/http"
"testing"
+ os "github.com/rackspace/gophercloud/openstack/compute/v2/servers"
"github.com/rackspace/gophercloud/pagination"
th "github.com/rackspace/gophercloud/testhelper"
"github.com/rackspace/gophercloud/testhelper/client"
@@ -35,6 +36,37 @@
th.CheckEquals(t, 1, count)
}
+func TestCreateServer(t *testing.T) {
+ th.SetupHTTP()
+ defer th.TeardownHTTP()
+
+ th.Mux.HandleFunc("/servers", func(w http.ResponseWriter, r *http.Request) {
+ th.TestMethod(t, r, "POST")
+ th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
+ th.TestJSONRequest(t, r, `{
+ "server": {
+ "name": "derp",
+ "imageRef": "f90f6034-2570-4974-8351-6b49732ef2eb",
+ "flavorRef": "1"
+ }
+ }`)
+
+ w.WriteHeader(http.StatusAccepted)
+ w.Header().Add("Content-Type", "application/json")
+ fmt.Fprintf(w, CreateOutput)
+ })
+
+ client := client.ServiceClient()
+ actual, err := Create(client, os.CreateOpts{
+ Name: "derp",
+ ImageRef: "f90f6034-2570-4974-8351-6b49732ef2eb",
+ FlavorRef: "1",
+ }).Extract()
+ th.AssertNoErr(t, err)
+
+ th.CheckDeepEquals(t, &CreatedServer, actual)
+}
+
func TestGetServer(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
diff --git a/rackspace/compute/v2/servers/fixtures.go b/rackspace/compute/v2/servers/fixtures.go
index 433c3b5..b22a289 100644
--- a/rackspace/compute/v2/servers/fixtures.go
+++ b/rackspace/compute/v2/servers/fixtures.go
@@ -215,6 +215,27 @@
}
`
+// CreateOutput contains a sample of Rackspace's response to a Create call.
+const CreateOutput = `
+{
+ "server": {
+ "OS-DCF:diskConfig": "AUTO",
+ "adminPass": "v7tADqbE5pr9",
+ "id": "bb63327b-6a2f-34bc-b0ef-4b6d97ea637e",
+ "links": [
+ {
+ "href": "https://dfw.servers.api.rackspacecloud.com/v2/111111/servers/bb63327b-6a2f-34bc-b0ef-4b6d97ea637e",
+ "rel": "self"
+ },
+ {
+ "href": "https://dfw.servers.api.rackspacecloud.com/111111/servers/bb63327b-6a2f-34bc-b0ef-4b6d97ea637e",
+ "rel": "bookmark"
+ }
+ ]
+ }
+}
+`
+
// DevstackServer is the expected first result from parsing ListOutput.
var DevstackServer = os.Server{
ID: "59818cee-bc8c-44eb-8073-673ee65105f7",
@@ -407,5 +428,12 @@
AdminPass: "",
}
+// CreatedServer is the partial Server struct that can be parsed from CreateOutput.
+var CreatedServer = os.Server{
+ ID: "bb63327b-6a2f-34bc-b0ef-4b6d97ea637e",
+ AdminPass: "v7tADqbE5pr9",
+ Links: []interface{}{},
+}
+
// ExpectedServerSlice is the collection of servers, in order, that should be parsed from ListOutput.
var ExpectedServerSlice = []os.Server{DevstackServer, PerilServer}