break storage_test into smaller files
diff --git a/acceptance/openstack/storage/v1/accounts_test.go b/acceptance/openstack/storage/v1/accounts_test.go
new file mode 100644
index 0000000..f4052e0
--- /dev/null
+++ b/acceptance/openstack/storage/v1/accounts_test.go
@@ -0,0 +1,52 @@
+// +build acceptance
+
+package v1
+
+import (
+ "strings"
+ "testing"
+
+ "github.com/rackspace/gophercloud/openstack/storage/v1/accounts"
+)
+
+func TestAccounts(t *testing.T) {
+ client, err := newClient()
+ if err != nil {
+ t.Error(err)
+ return
+ }
+
+ err = accounts.Update(client, accounts.UpdateOpts{
+ Metadata: metadata,
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ defer func() {
+ tempMap := make(map[string]string)
+ for k := range metadata {
+ tempMap[k] = ""
+ }
+ err = accounts.Update(client, accounts.UpdateOpts{
+ Metadata: tempMap,
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ }()
+
+ gr, err := accounts.Get(client, accounts.GetOpts{})
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ am := accounts.ExtractMetadata(gr)
+ for k := range metadata {
+ if am[k] != metadata[strings.Title(k)] {
+ t.Errorf("Expected custom metadata with key: %s", k)
+ return
+ }
+ }
+}
diff --git a/acceptance/openstack/storage/v1/common.go b/acceptance/openstack/storage/v1/common.go
new file mode 100644
index 0000000..08065a4
--- /dev/null
+++ b/acceptance/openstack/storage/v1/common.go
@@ -0,0 +1,28 @@
+// +build acceptance
+
+package v1
+
+import (
+ "github.com/rackspace/gophercloud"
+ "github.com/rackspace/gophercloud/openstack"
+ "github.com/rackspace/gophercloud/openstack/utils"
+ "os"
+)
+
+var metadata = map[string]string{"gopher": "cloud"}
+
+func newClient() (*gophercloud.ServiceClient, error) {
+ ao, err := utils.AuthOptions()
+ if err != nil {
+ return nil, err
+ }
+
+ client, err := openstack.AuthenticatedClient(ao)
+ if err != nil {
+ return nil, err
+ }
+
+ return openstack.NewStorageV1(client, gophercloud.EndpointOpts{
+ Region: os.Getenv("OS_REGION_NAME"),
+ })
+}
diff --git a/acceptance/openstack/storage/v1/containers_test.go b/acceptance/openstack/storage/v1/containers_test.go
new file mode 100644
index 0000000..cf5e3cd
--- /dev/null
+++ b/acceptance/openstack/storage/v1/containers_test.go
@@ -0,0 +1,119 @@
+// +build acceptance
+
+package v1
+
+import (
+ "strings"
+ "testing"
+
+ "github.com/rackspace/gophercloud/acceptance/tools"
+ "github.com/rackspace/gophercloud/openstack/storage/v1/containers"
+)
+
+var numContainers = 2
+
+func TestContainers(t *testing.T) {
+ client, err := newClient()
+ if err != nil {
+ t.Error(err)
+ return
+ }
+
+ cNames := make([]string, numContainers)
+ for i := 0; i < numContainers; i++ {
+ cNames[i] = tools.RandomString("gophercloud-test-container-", 8)
+ }
+
+ for i := 0; i < len(cNames); i++ {
+ _, err := containers.Create(client, containers.CreateOpts{
+ Name: cNames[i],
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ }
+ defer func() {
+ for i := 0; i < len(cNames); i++ {
+ err = containers.Delete(client, containers.DeleteOpts{
+ Name: cNames[i],
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ }
+ }()
+
+ lr, err := containers.List(client, containers.ListOpts{
+ Full: false,
+ Params: map[string]string{
+ "prefix": "gophercloud-test-container-",
+ },
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ cns, err := containers.ExtractNames(lr)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if len(cns) != len(cNames) {
+ t.Errorf("Expected %d names and got %d:\nExpected:%v\nActual:%v", len(cNames), len(cns), cNames, cns)
+ return
+ }
+
+ lr, err = containers.List(client, containers.ListOpts{
+ Full: true,
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ cis, err := containers.ExtractInfo(lr)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if len(cis) != len(cNames) {
+ t.Errorf("Expected %d containers and got %d", len(cNames), len(cis))
+ return
+ }
+ err = containers.Update(client, containers.UpdateOpts{
+ Name: cNames[0],
+ Metadata: metadata,
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ defer func() {
+ tempMap := make(map[string]string)
+ for k := range metadata {
+ tempMap[k] = ""
+ }
+ err = containers.Update(client, containers.UpdateOpts{
+ Name: cNames[0],
+ Metadata: tempMap,
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ }()
+
+ gr, err := containers.Get(client, containers.GetOpts{})
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ cm := containers.ExtractMetadata(gr)
+ for k := range metadata {
+ if cm[k] != metadata[strings.Title(k)] {
+ t.Errorf("Expected custom metadata with key: %s", k)
+ return
+ }
+ }
+}
diff --git a/acceptance/openstack/storage/v1/objects_test.go b/acceptance/openstack/storage/v1/objects_test.go
new file mode 100644
index 0000000..7952870
--- /dev/null
+++ b/acceptance/openstack/storage/v1/objects_test.go
@@ -0,0 +1,189 @@
+// +build acceptance
+
+package v1
+
+import (
+ "bytes"
+ "strings"
+ "testing"
+
+ "github.com/rackspace/gophercloud/acceptance/tools"
+ "github.com/rackspace/gophercloud/openstack/storage/v1/containers"
+ "github.com/rackspace/gophercloud/openstack/storage/v1/objects"
+ "github.com/rackspace/gophercloud/pagination"
+)
+
+var numObjects = 2
+
+func TestObjects(t *testing.T) {
+ client, err := newClient()
+ if err != nil {
+ t.Error(err)
+ return
+ }
+
+ oNames := make([]string, numObjects)
+ for i := 0; i < len(oNames); i++ {
+ oNames[i] = tools.RandomString("test-object-", 8)
+ }
+
+ cName := tools.RandomString("test-container-", 8)
+ _, err = containers.Create(client, containers.CreateOpts{
+ Name: cName,
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ defer func() {
+ err = containers.Delete(client, containers.DeleteOpts{
+ Name: cName,
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ }()
+
+ oContents := make([]*bytes.Buffer, numObjects)
+ for i := 0; i < numObjects; i++ {
+ oContents[i] = bytes.NewBuffer([]byte(tools.RandomString("", 10)))
+ err = objects.Create(client, objects.CreateOpts{
+ Container: cName,
+ Name: oNames[i],
+ Content: oContents[i],
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ }
+ defer func() {
+ for i := 0; i < numObjects; i++ {
+ err = objects.Delete(client, objects.DeleteOpts{
+ Container: cName,
+ Name: oNames[i],
+ })
+ }
+ }()
+
+ pager := objects.List(client, objects.ListOpts{Full: false, Container: cName})
+ ons := make([]string, 0, len(oNames))
+ err = pager.EachPage(func(page pagination.Page) (bool, error) {
+ names, err := objects.ExtractNames(page)
+ if err != nil {
+ return false, err
+ }
+ ons = append(ons, names...)
+
+ return true, nil
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if len(ons) != len(oNames) {
+ t.Errorf("Expected %d names and got %d", len(oNames), len(ons))
+ return
+ }
+
+ pager = objects.List(client, objects.ListOpts{Full: true, Container: cName})
+ ois := make([]objects.Object, 0, len(oNames))
+ err = pager.EachPage(func(page pagination.Page) (bool, error) {
+ info, err := objects.ExtractInfo(page)
+ if err != nil {
+ return false, nil
+ }
+
+ ois = append(ois, info...)
+
+ return true, nil
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if len(ois) != len(oNames) {
+ t.Errorf("Expected %d containers and got %d", len(oNames), len(ois))
+ return
+ }
+
+ err = objects.Copy(client, objects.CopyOpts{
+ Container: cName,
+ Name: oNames[0],
+ NewContainer: cName,
+ NewName: oNames[1],
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+
+ dr, err := objects.Download(client, objects.DownloadOpts{
+ Container: cName,
+ Name: oNames[1],
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ o2Content, err := objects.ExtractContent(dr)
+ if err != nil {
+ t.Error(err)
+ }
+ dr, err = objects.Download(client, objects.DownloadOpts{
+ Container: cName,
+ Name: oNames[0],
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ o1Content, err := objects.ExtractContent(dr)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if string(o2Content) != string(o1Content) {
+ t.Errorf("Copy failed. Expected\n%s\nand got\n%s", string(o1Content), string(o2Content))
+ return
+ }
+
+ err = objects.Update(client, objects.UpdateOpts{
+ Container: cName,
+ Name: oNames[0],
+ Metadata: metadata,
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ defer func() {
+ tempMap := make(map[string]string)
+ for k := range metadata {
+ tempMap[k] = ""
+ }
+ err = objects.Update(client, objects.UpdateOpts{
+ Container: cName,
+ Name: oNames[0],
+ Metadata: tempMap,
+ })
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ }()
+
+ gr, err := objects.Get(client, objects.GetOpts{})
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ om := objects.ExtractMetadata(gr)
+ for k := range metadata {
+ if om[k] != metadata[strings.Title(k)] {
+ t.Errorf("Expected custom metadata with key: %s", k)
+ return
+ }
+ }
+}
diff --git a/acceptance/openstack/storage/v1/storage_test.go b/acceptance/openstack/storage/v1/storage_test.go
deleted file mode 100644
index e7907d1..0000000
--- a/acceptance/openstack/storage/v1/storage_test.go
+++ /dev/null
@@ -1,364 +0,0 @@
-// +build acceptance
-
-package openstack
-
-import (
- "bytes"
- "os"
- "strings"
- "testing"
-
- "github.com/rackspace/gophercloud"
- "github.com/rackspace/gophercloud/acceptance/tools"
- "github.com/rackspace/gophercloud/openstack"
- "github.com/rackspace/gophercloud/openstack/storage/v1/accounts"
- "github.com/rackspace/gophercloud/openstack/storage/v1/containers"
- "github.com/rackspace/gophercloud/openstack/storage/v1/objects"
- "github.com/rackspace/gophercloud/openstack/utils"
- "github.com/rackspace/gophercloud/pagination"
-)
-
-var metadata = map[string]string{"gopher": "cloud"}
-var numContainers = 2
-var numObjects = 2
-
-func newClient() (*gophercloud.ServiceClient, error) {
- ao, err := utils.AuthOptions()
- if err != nil {
- return nil, err
- }
-
- client, err := openstack.AuthenticatedClient(ao)
- if err != nil {
- return nil, err
- }
-
- return openstack.NewStorageV1(client, gophercloud.EndpointOpts{
- Region: os.Getenv("OS_REGION_NAME"),
- })
-}
-
-func TestAccount(t *testing.T) {
- client, err := newClient()
- if err != nil {
- t.Error(err)
- return
- }
-
- err = accounts.Update(client, accounts.UpdateOpts{
- Metadata: metadata,
- })
- if err != nil {
- t.Error(err)
- return
- }
- defer func() {
- tempMap := make(map[string]string)
- for k := range metadata {
- tempMap[k] = ""
- }
- err = accounts.Update(client, accounts.UpdateOpts{
- Metadata: tempMap,
- })
- if err != nil {
- t.Error(err)
- return
- }
- }()
-
- gr, err := accounts.Get(client, accounts.GetOpts{})
- if err != nil {
- t.Error(err)
- return
- }
- am := accounts.ExtractMetadata(gr)
- for k := range metadata {
- if am[k] != metadata[strings.Title(k)] {
- t.Errorf("Expected custom metadata with key: %s", k)
- return
- }
- }
-}
-
-func TestContainers(t *testing.T) {
- client, err := newClient()
- if err != nil {
- t.Error(err)
- return
- }
-
- cNames := make([]string, numContainers)
- for i := 0; i < numContainers; i++ {
- cNames[i] = tools.RandomString("test-container-", 8)
- }
-
- for i := 0; i < len(cNames); i++ {
- _, err := containers.Create(client, containers.CreateOpts{
- Name: cNames[i],
- })
- if err != nil {
- t.Error(err)
- return
- }
- }
- defer func() {
- for i := 0; i < len(cNames); i++ {
- err = containers.Delete(client, containers.DeleteOpts{
- Name: cNames[i],
- })
- if err != nil {
- t.Error(err)
- return
- }
- }
- }()
-
- cns := make([]string, 0, numContainers)
- pager := containers.List(client, containers.ListOpts{Full: false})
- err = pager.EachPage(func(page pagination.Page) (bool, error) {
- names, err := containers.ExtractNames(page)
- if err != nil {
- return false, err
- }
-
- cns = append(cns, names...)
-
- return true, nil
- })
- if err != nil {
- t.Fatal(err)
- return
- }
-
- if len(cns) != len(cNames) {
- t.Errorf("Expected %d names and got %d", len(cNames), len(cns))
- return
- }
-
- cis := make([]containers.Container, 0, numContainers)
- pager = containers.List(client, containers.ListOpts{Full: true})
- err = pager.EachPage(func(page pagination.Page) (bool, error) {
- cisPage, err := containers.ExtractInfo(page)
- if err != nil {
- return false, err
- }
-
- cis = append(cis, cisPage...)
-
- return true, nil
- })
-
- if len(cis) != len(cNames) {
- t.Errorf("Expected %d containers and got %d", len(cNames), len(cis))
- return
- }
-
- err = containers.Update(client, containers.UpdateOpts{
- Name: cNames[0],
- Metadata: metadata,
- })
- if err != nil {
- t.Error(err)
- return
- }
- defer func() {
- tempMap := make(map[string]string)
- for k := range metadata {
- tempMap[k] = ""
- }
- err = containers.Update(client, containers.UpdateOpts{
- Name: cNames[0],
- Metadata: tempMap,
- })
- if err != nil {
- t.Error(err)
- return
- }
- }()
-
- gr, err := containers.Get(client, containers.GetOpts{})
- if err != nil {
- t.Error(err)
- return
- }
- cm := containers.ExtractMetadata(gr)
- for k := range metadata {
- if cm[k] != metadata[strings.Title(k)] {
- t.Errorf("Expected custom metadata with key: %s", k)
- return
- }
- }
-}
-
-func TestObjects(t *testing.T) {
- client, err := newClient()
- if err != nil {
- t.Error(err)
- return
- }
-
- oNames := make([]string, numObjects)
- for i := 0; i < len(oNames); i++ {
- oNames[i] = tools.RandomString("test-object-", 8)
- }
-
- cName := tools.RandomString("test-container-", 8)
- _, err = containers.Create(client, containers.CreateOpts{
- Name: cName,
- })
- if err != nil {
- t.Error(err)
- return
- }
- defer func() {
- err = containers.Delete(client, containers.DeleteOpts{
- Name: cName,
- })
- if err != nil {
- t.Error(err)
- return
- }
- }()
-
- oContents := make([]*bytes.Buffer, numObjects)
- for i := 0; i < numObjects; i++ {
- oContents[i] = bytes.NewBuffer([]byte(tools.RandomString("", 10)))
- err = objects.Create(client, objects.CreateOpts{
- Container: cName,
- Name: oNames[i],
- Content: oContents[i],
- })
- if err != nil {
- t.Error(err)
- return
- }
- }
- defer func() {
- for i := 0; i < numObjects; i++ {
- err = objects.Delete(client, objects.DeleteOpts{
- Container: cName,
- Name: oNames[i],
- })
- }
- }()
-
- pager := objects.List(client, objects.ListOpts{Full: false, Container: cName})
- ons := make([]string, 0, len(oNames))
- err = pager.EachPage(func(page pagination.Page) (bool, error) {
- names, err := objects.ExtractNames(page)
- if err != nil {
- return false, err
- }
- ons = append(ons, names...)
-
- return true, nil
- })
- if err != nil {
- t.Error(err)
- return
- }
- if len(ons) != len(oNames) {
- t.Errorf("Expected %d names and got %d", len(oNames), len(ons))
- return
- }
-
- pager = objects.List(client, objects.ListOpts{Full: true, Container: cName})
- ois := make([]objects.Object, 0, len(oNames))
- err = pager.EachPage(func(page pagination.Page) (bool, error) {
- info, err := objects.ExtractInfo(page)
- if err != nil {
- return false, nil
- }
-
- ois = append(ois, info...)
-
- return true, nil
- })
- if err != nil {
- t.Error(err)
- return
- }
- if len(ois) != len(oNames) {
- t.Errorf("Expected %d containers and got %d", len(oNames), len(ois))
- return
- }
-
- err = objects.Copy(client, objects.CopyOpts{
- Container: cName,
- Name: oNames[0],
- NewContainer: cName,
- NewName: oNames[1],
- })
- if err != nil {
- t.Error(err)
- return
- }
-
- dr, err := objects.Download(client, objects.DownloadOpts{
- Container: cName,
- Name: oNames[1],
- })
- if err != nil {
- t.Error(err)
- return
- }
- o2Content, err := objects.ExtractContent(dr)
- if err != nil {
- t.Error(err)
- }
- dr, err = objects.Download(client, objects.DownloadOpts{
- Container: cName,
- Name: oNames[0],
- })
- if err != nil {
- t.Error(err)
- return
- }
- o1Content, err := objects.ExtractContent(dr)
- if err != nil {
- t.Error(err)
- return
- }
- if string(o2Content) != string(o1Content) {
- t.Errorf("Copy failed. Expected\n%s\nand got\n%s", string(o1Content), string(o2Content))
- return
- }
-
- err = objects.Update(client, objects.UpdateOpts{
- Container: cName,
- Name: oNames[0],
- Metadata: metadata,
- })
- if err != nil {
- t.Error(err)
- return
- }
- defer func() {
- tempMap := make(map[string]string)
- for k := range metadata {
- tempMap[k] = ""
- }
- err = objects.Update(client, objects.UpdateOpts{
- Container: cName,
- Name: oNames[0],
- Metadata: tempMap,
- })
- if err != nil {
- t.Error(err)
- return
- }
- }()
-
- gr, err := objects.Get(client, objects.GetOpts{})
- if err != nil {
- t.Error(err)
- return
- }
- om := objects.ExtractMetadata(gr)
- for k := range metadata {
- if om[k] != metadata[strings.Title(k)] {
- t.Errorf("Expected custom metadata with key: %s", k)
- return
- }
- }
-}