blob: 08831ec56a138f76faaab32d70bfb5fbaf4b3cd7 [file] [log] [blame]
Jon Perritt0e28b112014-10-14 20:49:31 -05001package objects
Jon Perritt457f8ca2014-10-15 00:28:23 -05002
3import (
4 "bytes"
5 "testing"
6
7 os "github.com/rackspace/gophercloud/openstack/objectstorage/v1/objects"
8 "github.com/rackspace/gophercloud/pagination"
9 th "github.com/rackspace/gophercloud/testhelper"
10 fake "github.com/rackspace/gophercloud/testhelper/client"
11)
12
13func TestDownloadObject(t *testing.T) {
14 th.SetupHTTP()
15 defer th.TeardownHTTP()
16 os.HandleDownloadObjectSuccessfully(t)
17
18 content, err := Download(fake.ServiceClient(), "testContainer", "testObject", nil).ExtractContent()
19 th.AssertNoErr(t, err)
20 th.CheckEquals(t, string(content), "Successful download with Gophercloud")
21}
22
23func TestListObjectsInfo(t *testing.T) {
24 th.SetupHTTP()
25 defer th.TeardownHTTP()
26 os.HandleListObjectsInfoSuccessfully(t)
27
28 count := 0
29 options := &os.ListOpts{Full: true}
30 err := List(fake.ServiceClient(), "testContainer", options).EachPage(func(page pagination.Page) (bool, error) {
31 count++
32 actual, err := ExtractInfo(page)
33 th.AssertNoErr(t, err)
34
35 th.CheckDeepEquals(t, os.ExpectedListInfo, actual)
36
37 return true, nil
38 })
39 th.AssertNoErr(t, err)
40 th.CheckEquals(t, count, 1)
41}
42
43func TestListObjectNames(t *testing.T) {
44 th.SetupHTTP()
45 defer th.TeardownHTTP()
46 os.HandleListObjectNamesSuccessfully(t)
47
48 count := 0
49 options := &os.ListOpts{Full: false}
50 err := List(fake.ServiceClient(), "testContainer", options).EachPage(func(page pagination.Page) (bool, error) {
51 count++
52 actual, err := ExtractNames(page)
53 if err != nil {
54 t.Errorf("Failed to extract container names: %v", err)
55 return false, err
56 }
57
58 th.CheckDeepEquals(t, os.ExpectedListNames, actual)
59
60 return true, nil
61 })
62 th.AssertNoErr(t, err)
63 th.CheckEquals(t, count, 1)
64}
65
66func TestCreateObject(t *testing.T) {
67 th.SetupHTTP()
68 defer th.TeardownHTTP()
69 os.HandleCreateObjectSuccessfully(t)
70
71 content := bytes.NewBufferString("Did gyre and gimble in the wabe")
72 options := &os.CreateOpts{ContentType: "application/json"}
Jon Perritt260e0882014-10-20 23:31:23 -050073 res := Create(fake.ServiceClient(), "testContainer", "testObject", content, options)
74 th.AssertNoErr(t, res.Err)
Jon Perritt457f8ca2014-10-15 00:28:23 -050075}
76
77func TestCopyObject(t *testing.T) {
78 th.SetupHTTP()
79 defer th.TeardownHTTP()
80 os.HandleCopyObjectSuccessfully(t)
81
82 options := &CopyOpts{Destination: "/newTestContainer/newTestObject"}
Jon Perritt260e0882014-10-20 23:31:23 -050083 res := Copy(fake.ServiceClient(), "testContainer", "testObject", options)
84 th.AssertNoErr(t, res.Err)
Jon Perritt457f8ca2014-10-15 00:28:23 -050085}
86
87func TestDeleteObject(t *testing.T) {
88 th.SetupHTTP()
89 defer th.TeardownHTTP()
90 os.HandleDeleteObjectSuccessfully(t)
91
Jon Perritt260e0882014-10-20 23:31:23 -050092 res := Delete(fake.ServiceClient(), "testContainer", "testObject", nil)
93 th.AssertNoErr(t, res.Err)
Jon Perritt457f8ca2014-10-15 00:28:23 -050094}
95
96func TestUpdateObject(t *testing.T) {
97 th.SetupHTTP()
98 defer th.TeardownHTTP()
99 os.HandleUpdateObjectSuccessfully(t)
100
101 options := &os.UpdateOpts{Metadata: map[string]string{"Gophercloud-Test": "objects"}}
Jon Perritt260e0882014-10-20 23:31:23 -0500102 res := Update(fake.ServiceClient(), "testContainer", "testObject", options)
103 th.AssertNoErr(t, res.Err)
Jon Perritt457f8ca2014-10-15 00:28:23 -0500104}
105
106func TestGetObject(t *testing.T) {
107 th.SetupHTTP()
108 defer th.TeardownHTTP()
109 os.HandleGetObjectSuccessfully(t)
110
111 expected := map[string]string{"Gophercloud-Test": "objects"}
112 actual, err := Get(fake.ServiceClient(), "testContainer", "testObject", nil).ExtractMetadata()
113 th.AssertNoErr(t, err)
114 th.CheckDeepEquals(t, expected, actual)
115}