blob: 808f940cd803199d9b0c40f86c8796d9eb718c14 [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"}
73 _, err := Create(fake.ServiceClient(), "testContainer", "testObject", content, options).ExtractHeaders()
74 th.AssertNoErr(t, err)
75}
76
77func TestCopyObject(t *testing.T) {
78 th.SetupHTTP()
79 defer th.TeardownHTTP()
80 os.HandleCopyObjectSuccessfully(t)
81
82 options := &CopyOpts{Destination: "/newTestContainer/newTestObject"}
83 _, err := Copy(fake.ServiceClient(), "testContainer", "testObject", options).ExtractHeaders()
84 th.AssertNoErr(t, err)
85}
86
87func TestDeleteObject(t *testing.T) {
88 th.SetupHTTP()
89 defer th.TeardownHTTP()
90 os.HandleDeleteObjectSuccessfully(t)
91
92 _, err := Delete(fake.ServiceClient(), "testContainer", "testObject", nil).ExtractHeaders()
93 th.AssertNoErr(t, err)
94}
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"}}
102 _, err := Update(fake.ServiceClient(), "testContainer", "testObject", options).ExtractHeaders()
103 th.AssertNoErr(t, err)
104}
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}