blob: 21cd4179a5d2a30fca604d3cca69e44d57e39b92 [file] [log] [blame]
Jon Perritt0e28b112014-10-14 20:49:31 -05001package objects
Jon Perritt457f8ca2014-10-15 00:28:23 -05002
3import (
Brendan ODonnella69b3472015-04-27 13:59:41 -05004 "strings"
Jon Perritt457f8ca2014-10-15 00:28:23 -05005 "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()
Jamie Hannafordb9396a12015-07-14 10:00:19 +020069
70 content := "Did gyre and gimble in the wabe"
71 os.HandleCreateTextObjectSuccessfully(t, content)
Jon Perritt457f8ca2014-10-15 00:28:23 -050072
Ash Wilson161a8542015-01-23 14:32:12 -050073 options := &os.CreateOpts{ContentType: "text/plain"}
Jamie Hannafordb9396a12015-07-14 10:00:19 +020074 res := Create(fake.ServiceClient(), "testContainer", "testObject", strings.NewReader(content), options)
Jon Perritt260e0882014-10-20 23:31:23 -050075 th.AssertNoErr(t, res.Err)
Jon Perritt457f8ca2014-10-15 00:28:23 -050076}
77
Ash Wilson161a8542015-01-23 14:32:12 -050078func TestCreateObjectWithoutContentType(t *testing.T) {
79 th.SetupHTTP()
80 defer th.TeardownHTTP()
Ash Wilson161a8542015-01-23 14:32:12 -050081
Jamie Hannafordb9396a12015-07-14 10:00:19 +020082 content := "The sky was the color of television, tuned to a dead channel."
83 os.HandleCreateTypelessObjectSuccessfully(t, content)
84
85 res := Create(fake.ServiceClient(), "testContainer", "testObject", strings.NewReader(content), &os.CreateOpts{})
Ash Wilson161a8542015-01-23 14:32:12 -050086 th.AssertNoErr(t, res.Err)
87}
88
Jon Perritt457f8ca2014-10-15 00:28:23 -050089func TestCopyObject(t *testing.T) {
90 th.SetupHTTP()
91 defer th.TeardownHTTP()
92 os.HandleCopyObjectSuccessfully(t)
93
94 options := &CopyOpts{Destination: "/newTestContainer/newTestObject"}
Jon Perritt260e0882014-10-20 23:31:23 -050095 res := Copy(fake.ServiceClient(), "testContainer", "testObject", options)
96 th.AssertNoErr(t, res.Err)
Jon Perritt457f8ca2014-10-15 00:28:23 -050097}
98
99func TestDeleteObject(t *testing.T) {
100 th.SetupHTTP()
101 defer th.TeardownHTTP()
102 os.HandleDeleteObjectSuccessfully(t)
103
Jon Perritt260e0882014-10-20 23:31:23 -0500104 res := Delete(fake.ServiceClient(), "testContainer", "testObject", nil)
105 th.AssertNoErr(t, res.Err)
Jon Perritt457f8ca2014-10-15 00:28:23 -0500106}
107
108func TestUpdateObject(t *testing.T) {
109 th.SetupHTTP()
110 defer th.TeardownHTTP()
111 os.HandleUpdateObjectSuccessfully(t)
112
113 options := &os.UpdateOpts{Metadata: map[string]string{"Gophercloud-Test": "objects"}}
Jon Perritt260e0882014-10-20 23:31:23 -0500114 res := Update(fake.ServiceClient(), "testContainer", "testObject", options)
115 th.AssertNoErr(t, res.Err)
Jon Perritt457f8ca2014-10-15 00:28:23 -0500116}
117
118func TestGetObject(t *testing.T) {
119 th.SetupHTTP()
120 defer th.TeardownHTTP()
121 os.HandleGetObjectSuccessfully(t)
122
123 expected := map[string]string{"Gophercloud-Test": "objects"}
124 actual, err := Get(fake.ServiceClient(), "testContainer", "testObject", nil).ExtractMetadata()
125 th.AssertNoErr(t, err)
126 th.CheckDeepEquals(t, expected, actual)
127}