create trusts.TokenExt response object (#29)

* create trusts.TokenExt response object

* add redelegationcount, redelegatedtrustid fields
diff --git a/openstack/identity/v3/extensions/trusts/results.go b/openstack/identity/v3/extensions/trusts/results.go
new file mode 100644
index 0000000..3d3c7f2
--- /dev/null
+++ b/openstack/identity/v3/extensions/trusts/results.go
@@ -0,0 +1,29 @@
+package trusts
+
+import "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens"
+
+type TrusteeUser struct {
+	ID string `json:"id"`
+}
+
+type TrustorUser struct {
+	ID string `json:"id"`
+}
+
+type Trust struct {
+	ID                 string      `json:"id"`
+	Impersonation      bool        `json:"impersonation"`
+	TrusteeUser        TrusteeUser `json:"trustee_user"`
+	TrustorUser        TrustorUser `json:"trustor_user"`
+	RedelegatedTrustID string      `json:"redelegated_trust_id"`
+	RedelegationCount  int         `json:"redelegation_count"`
+}
+
+type Token struct {
+	tokens.Token
+	Trust Trust `json:"OS-TRUST:trust"`
+}
+
+type TokenExt struct {
+	Token Token `json:"token"`
+}
diff --git a/openstack/identity/v3/extensions/trusts/testing/fixtures.go b/openstack/identity/v3/extensions/trusts/testing/fixtures.go
index 15d5f3f..b4106a3 100644
--- a/openstack/identity/v3/extensions/trusts/testing/fixtures.go
+++ b/openstack/identity/v3/extensions/trusts/testing/fixtures.go
@@ -4,8 +4,10 @@
 	"fmt"
 	"net/http"
 	"testing"
+	"time"
 
 	"github.com/gophercloud/gophercloud"
+	"github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/trusts"
 	"github.com/gophercloud/gophercloud/openstack/identity/v3/tokens"
 	"github.com/gophercloud/gophercloud/testhelper"
 )
@@ -28,14 +30,75 @@
 
 		w.WriteHeader(http.StatusCreated)
 		fmt.Fprintf(w, `{
-			"token": {
-				"expires_at": "2014-10-02T13:45:00.000000Z"
-			}
-		}`)
+    "token": {
+        "expires_at": "2013-02-27T18:30:59.999999Z",
+        "issued_at": "2013-02-27T16:30:59.999999Z",
+        "methods": [
+            "password"
+        ],
+        "OS-TRUST:trust": {
+            "id": "fe0aef",
+            "impersonation": false,
+						"redelegated_trust_id": "3ba234",
+						"redelegation_count": 2,
+            "links": {
+                "self": "http://example.com/identity/v3/trusts/fe0aef"
+            },
+            "trustee_user": {
+                "id": "0ca8f6",
+                "links": {
+                    "self": "http://example.com/identity/v3/users/0ca8f6"
+                }
+            },
+            "trustor_user": {
+                "id": "bd263c",
+                "links": {
+                    "self": "http://example.com/identity/v3/users/bd263c"
+                }
+            }
+        },
+        "user": {
+            "domain": {
+                "id": "1789d1",
+                "links": {
+                    "self": "http://example.com/identity/v3/domains/1789d1"
+                },
+                "name": "example.com"
+            },
+            "email": "joe@example.com",
+            "id": "0ca8f6",
+            "links": {
+                "self": "http://example.com/identity/v3/users/0ca8f6"
+            },
+            "name": "Joe"
+        }
+    }
+}`)
 	})
 
-	_, err := tokens.Create(&client, options).Extract()
+	var actual trusts.TokenExt
+	err := tokens.Create(&client, options).ExtractInto(&actual)
 	if err != nil {
 		t.Errorf("Create returned an error: %v", err)
 	}
+	expected := trusts.TokenExt{
+		Token: trusts.Token{
+			Token: tokens.Token{
+				ExpiresAt: gophercloud.JSONRFC3339Milli(time.Date(2013, 02, 27, 18, 30, 59, 999999000, time.UTC)),
+			},
+			Trust: trusts.Trust{
+				ID:            "fe0aef",
+				Impersonation: false,
+				TrusteeUser: trusts.TrusteeUser{
+					ID: "0ca8f6",
+				},
+				TrustorUser: trusts.TrustorUser{
+					ID: "bd263c",
+				},
+				RedelegatedTrustID: "3ba234",
+				RedelegationCount:  2,
+			},
+		},
+	}
+	testhelper.AssertDeepEquals(t, expected, actual)
 }