1 package storage
2
3
4
5
6 import chk "gopkg.in/check.v1"
7
8 type StorageShareSuite struct{}
9
10 var _ = chk.Suite(&StorageShareSuite{})
11
12 func getFileClient(c *chk.C) FileServiceClient {
13 return getBasicClient(c).GetFileService()
14 }
15
16 func (s *StorageShareSuite) TestCreateShareDeleteShare(c *chk.C) {
17 cli := getFileClient(c)
18 rec := cli.client.appendRecorder(c)
19 defer rec.Stop()
20
21 share := cli.GetShareReference(shareName(c))
22 c.Assert(share.Create(nil), chk.IsNil)
23 c.Assert(share.Delete(nil), chk.IsNil)
24 }
25
26 func (s *StorageShareSuite) TestCreateShareIfNotExists(c *chk.C) {
27 cli := getFileClient(c)
28 rec := cli.client.appendRecorder(c)
29 defer rec.Stop()
30
31
32 share := cli.GetShareReference(shareName(c, "notexists"))
33 ok, err := share.CreateIfNotExists(nil)
34 defer share.Delete(nil)
35 c.Assert(err, chk.IsNil)
36 c.Assert(ok, chk.Equals, true)
37
38 }
39
40 func (s *StorageShareSuite) TestCreateShareIfExists(c *chk.C) {
41 cli := getFileClient(c)
42 rec := cli.client.appendRecorder(c)
43 defer rec.Stop()
44
45 share := cli.GetShareReference(shareName(c, "exists"))
46 share.Create(nil)
47 defer share.Delete(nil)
48
49
50 ok, err := share.CreateIfNotExists(nil)
51 c.Assert(err, chk.IsNil)
52 c.Assert(ok, chk.Equals, false)
53 }
54
55 func (s *StorageShareSuite) TestDeleteShareIfNotExists(c *chk.C) {
56 cli := getFileClient(c)
57 rec := cli.client.appendRecorder(c)
58 defer rec.Stop()
59
60
61 share1 := cli.GetShareReference(shareName(c, "1"))
62 ok, err := share1.DeleteIfExists(nil)
63 c.Assert(err, chk.IsNil)
64 c.Assert(ok, chk.Equals, false)
65
66
67 share2 := cli.GetShareReference(shareName(c, "2"))
68 c.Assert(share2.Create(nil), chk.IsNil)
69 ok, err = share2.DeleteIfExists(nil)
70 c.Assert(err, chk.IsNil)
71 c.Assert(ok, chk.Equals, true)
72 }
73
74 func (s *StorageShareSuite) TestListShares(c *chk.C) {
75 cli := getFileClient(c)
76 rec := cli.client.appendRecorder(c)
77 defer rec.Stop()
78 cli.deleteAllShares()
79
80 name := shareName(c)
81 share := cli.GetShareReference(name)
82
83 c.Assert(share.Create(nil), chk.IsNil)
84
85 resp, err := cli.ListShares(ListSharesParameters{
86 MaxResults: 5,
87 })
88 c.Assert(err, chk.IsNil)
89
90 c.Check(len(resp.Shares), chk.Equals, 1)
91 c.Check(resp.Shares[0].Name, chk.Equals, name)
92
93
94 resp.Shares[0].Delete(nil)
95 }
96
97 func (s *StorageShareSuite) TestShareExists(c *chk.C) {
98 cli := getFileClient(c)
99 rec := cli.client.appendRecorder(c)
100 defer rec.Stop()
101
102
103 share1 := cli.GetShareReference(shareName(c, "3"))
104 ok, err := share1.Exists()
105 c.Assert(err, chk.IsNil)
106 c.Assert(ok, chk.Equals, false)
107
108
109 share2 := cli.GetShareReference(shareName(c, "4"))
110 c.Assert(share2.Create(nil), chk.IsNil)
111 defer share1.Delete(nil)
112 ok, err = share2.Exists()
113 c.Assert(err, chk.IsNil)
114 c.Assert(ok, chk.Equals, true)
115 }
116
117 func (s *StorageShareSuite) TestGetAndSetShareProperties(c *chk.C) {
118 cli := getFileClient(c)
119 rec := cli.client.appendRecorder(c)
120 defer rec.Stop()
121 share := cli.GetShareReference(shareName(c))
122 quota := 55
123
124 c.Assert(share.Create(nil), chk.IsNil)
125 defer share.Delete(nil)
126 c.Assert(share.Properties.LastModified, chk.Not(chk.Equals), "")
127
128 share.Properties.Quota = quota
129 err := share.SetProperties(nil)
130 c.Assert(err, chk.IsNil)
131
132 err = share.FetchAttributes(nil)
133 c.Assert(err, chk.IsNil)
134
135 c.Assert(share.Properties.Quota, chk.Equals, quota)
136 }
137
138 func (s *StorageShareSuite) TestGetAndSetShareMetadata(c *chk.C) {
139 cli := getFileClient(c)
140 rec := cli.client.appendRecorder(c)
141 defer rec.Stop()
142 share1 := cli.GetShareReference(shareName(c, "1"))
143
144 c.Assert(share1.Create(nil), chk.IsNil)
145 defer share1.Delete(nil)
146
147
148 c.Assert(share1.Metadata, chk.IsNil)
149 c.Assert(share1.FetchAttributes(nil), chk.IsNil)
150 c.Assert(share1.Metadata, chk.IsNil)
151
152 share2 := cli.GetShareReference(shareName(c, "5"))
153 c.Assert(share2.Create(nil), chk.IsNil)
154 defer share2.Delete(nil)
155
156 c.Assert(share2.Metadata, chk.IsNil)
157
158 mPut := map[string]string{
159 "lol": "rofl",
160 "rofl_baz": "waz qux",
161 }
162
163 share2.Metadata = mPut
164 c.Assert(share2.SetMetadata(nil), chk.IsNil)
165 c.Check(share2.Metadata, chk.DeepEquals, mPut)
166
167 c.Assert(share2.FetchAttributes(nil), chk.IsNil)
168 c.Check(share2.Metadata, chk.DeepEquals, mPut)
169 }
170
171 func (s *StorageShareSuite) TestMetadataCaseMunging(c *chk.C) {
172 cli := getFileClient(c)
173 rec := cli.client.appendRecorder(c)
174 defer rec.Stop()
175 share := cli.GetShareReference(shareName(c))
176
177 c.Assert(share.Create(nil), chk.IsNil)
178 defer share.Delete(nil)
179
180 mPutUpper := map[string]string{
181 "Lol": "different rofl",
182 "rofl_BAZ": "different waz qux",
183 }
184 mExpectLower := map[string]string{
185 "lol": "different rofl",
186 "rofl_baz": "different waz qux",
187 }
188
189 share.Metadata = mPutUpper
190 c.Assert(share.SetMetadata(nil), chk.IsNil)
191
192 c.Check(share.Metadata, chk.DeepEquals, mPutUpper)
193 c.Assert(share.FetchAttributes(nil), chk.IsNil)
194 c.Check(share.Metadata, chk.DeepEquals, mExpectLower)
195 }
196
197 func (cli *FileServiceClient) deleteAllShares() {
198 resp, _ := cli.ListShares(ListSharesParameters{})
199 if resp != nil && len(resp.Shares) > 0 {
200 for _, sh := range resp.Shares {
201 share := cli.GetShareReference(sh.Name)
202 share.Delete(nil)
203 }
204 }
205 }
206
207 func shareName(c *chk.C, extras ...string) string {
208 return nameGenerator(63, "share-", alphanum, c, extras)
209 }
210
View as plain text