move unit tests into 'testing' directories
diff --git a/openstack/compute/v2/extensions/keypairs/testing/doc.go b/openstack/compute/v2/extensions/keypairs/testing/doc.go
new file mode 100644
index 0000000..7603f83
--- /dev/null
+++ b/openstack/compute/v2/extensions/keypairs/testing/doc.go
@@ -0,0 +1 @@
+package testing
diff --git a/openstack/compute/v2/extensions/keypairs/fixtures.go b/openstack/compute/v2/extensions/keypairs/testing/fixtures.go
similarity index 96%
rename from openstack/compute/v2/extensions/keypairs/fixtures.go
rename to openstack/compute/v2/extensions/keypairs/testing/fixtures.go
index 62c5db2..dc716d8 100644
--- a/openstack/compute/v2/extensions/keypairs/fixtures.go
+++ b/openstack/compute/v2/extensions/keypairs/testing/fixtures.go
@@ -1,12 +1,11 @@
-// +build fixtures
-
-package keypairs
+package testing
 
 import (
 	"fmt"
 	"net/http"
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/keypairs"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
 )
@@ -70,14 +69,14 @@
 `
 
 // FirstKeyPair is the first result in ListOutput.
-var FirstKeyPair = KeyPair{
+var FirstKeyPair = keypairs.KeyPair{
 	Name:        "firstkey",
 	Fingerprint: "15:b0:f8:b3:f9:48:63:71:cf:7b:5b:38:6d:44:2d:4a",
 	PublicKey:   "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC+Eo/RZRngaGTkFs7I62ZjsIlO79KklKbMXi8F+KITD4bVQHHn+kV+4gRgkgCRbdoDqoGfpaDFs877DYX9n4z6FrAIZ4PES8TNKhatifpn9NdQYWA+IkU8CuvlEKGuFpKRi/k7JLos/gHi2hy7QUwgtRvcefvD/vgQZOVw/mGR9Q== Generated by Nova\n",
 }
 
 // SecondKeyPair is the second result in ListOutput.
-var SecondKeyPair = KeyPair{
+var SecondKeyPair = keypairs.KeyPair{
 	Name:        "secondkey",
 	Fingerprint: "35:9d:d0:c3:4a:80:d3:d8:86:f1:ca:f7:df:c4:f9:d8",
 	PublicKey:   "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7DUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5Q== Generated by Nova\n",
@@ -85,10 +84,10 @@
 
 // ExpectedKeyPairSlice is the slice of results that should be parsed from ListOutput, in the expected
 // order.
-var ExpectedKeyPairSlice = []KeyPair{FirstKeyPair, SecondKeyPair}
+var ExpectedKeyPairSlice = []keypairs.KeyPair{FirstKeyPair, SecondKeyPair}
 
 // CreatedKeyPair is the parsed result from CreatedOutput.
-var CreatedKeyPair = KeyPair{
+var CreatedKeyPair = keypairs.KeyPair{
 	Name:        "createdkey",
 	Fingerprint: "35:9d:d0:c3:4a:80:d3:d8:86:f1:ca:f7:df:c4:f9:d8",
 	PublicKey:   "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7DUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5Q== Generated by Nova\n",
@@ -97,7 +96,7 @@
 }
 
 // ImportedKeyPair is the parsed result from ImportOutput.
-var ImportedKeyPair = KeyPair{
+var ImportedKeyPair = keypairs.KeyPair{
 	Name:        "importedkey",
 	Fingerprint: "1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c",
 	PublicKey:   "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova",
diff --git a/openstack/compute/v2/extensions/keypairs/requests_test.go b/openstack/compute/v2/extensions/keypairs/testing/requests_test.go
similarity index 72%
rename from openstack/compute/v2/extensions/keypairs/requests_test.go
rename to openstack/compute/v2/extensions/keypairs/testing/requests_test.go
index 468e5ea..1e05e66 100644
--- a/openstack/compute/v2/extensions/keypairs/requests_test.go
+++ b/openstack/compute/v2/extensions/keypairs/testing/requests_test.go
@@ -1,8 +1,9 @@
-package keypairs
+package testing
 
 import (
 	"testing"
 
+	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/keypairs"
 	"github.com/gophercloud/gophercloud/pagination"
 	th "github.com/gophercloud/gophercloud/testhelper"
 	"github.com/gophercloud/gophercloud/testhelper/client"
@@ -14,9 +15,9 @@
 	HandleListSuccessfully(t)
 
 	count := 0
-	err := List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
+	err := keypairs.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) {
 		count++
-		actual, err := ExtractKeyPairs(page)
+		actual, err := keypairs.ExtractKeyPairs(page)
 		th.AssertNoErr(t, err)
 		th.CheckDeepEquals(t, ExpectedKeyPairSlice, actual)
 
@@ -31,7 +32,7 @@
 	defer th.TeardownHTTP()
 	HandleCreateSuccessfully(t)
 
-	actual, err := Create(client.ServiceClient(), CreateOpts{
+	actual, err := keypairs.Create(client.ServiceClient(), keypairs.CreateOpts{
 		Name: "createdkey",
 	}).Extract()
 	th.AssertNoErr(t, err)
@@ -43,7 +44,7 @@
 	defer th.TeardownHTTP()
 	HandleImportSuccessfully(t)
 
-	actual, err := Create(client.ServiceClient(), CreateOpts{
+	actual, err := keypairs.Create(client.ServiceClient(), keypairs.CreateOpts{
 		Name:      "importedkey",
 		PublicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova",
 	}).Extract()
@@ -56,7 +57,7 @@
 	defer th.TeardownHTTP()
 	HandleGetSuccessfully(t)
 
-	actual, err := Get(client.ServiceClient(), "firstkey").Extract()
+	actual, err := keypairs.Get(client.ServiceClient(), "firstkey").Extract()
 	th.AssertNoErr(t, err)
 	th.CheckDeepEquals(t, &FirstKeyPair, actual)
 }
@@ -66,6 +67,6 @@
 	defer th.TeardownHTTP()
 	HandleDeleteSuccessfully(t)
 
-	err := Delete(client.ServiceClient(), "deletedkey").ExtractErr()
+	err := keypairs.Delete(client.ServiceClient(), "deletedkey").ExtractErr()
 	th.AssertNoErr(t, err)
 }