oss-ruby 1.0.0.beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ListAllMyBucketsResult>
3
+ <Prefix>xz02tphky6fjfiuc</Prefix>
4
+ <Marker></Marker>
5
+ <MaxKeys>1</MaxKeys>
6
+ <IsTruncated>true</IsTruncated>
7
+ <NextMarker>xz02tphky6fjfiuc0</NextMarker>
8
+ <Owner>
9
+ <ID>ut_test_put_bucket</ID>
10
+ <DisplayName>ut_test_put_bucket</DisplayName>
11
+ </Owner>
12
+ <Buckets>
13
+ <Bucket>
14
+ <Location>oss-cn-hangzhou-a</Location>
15
+ <Name>xz02tphky6fjfiuc0</Name>
16
+ <CreationDate>2014-05-15T11:18:32.000Z</CreationDate>
17
+ </Bucket>
18
+ </Buckets>
19
+ </ListAllMyBucketsResult>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <InitiateMultipartUploadResult>
3
+ <Bucket>oss-ruby-sdk-test-bucket</Bucket>
4
+ <Key>oss-ruby-sdk-test-object</Key>
5
+ <UploadId>0004B9894A22E5B1888A1E29F8236E2D</UploadId>
6
+ </InitiateMultipartUploadResult>
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ListMultipartUploadsResult>
3
+ <Bucket>oss-ruby-sdk-test-bucket</Bucket>
4
+ <KeyMarker></KeyMarker>
5
+ <UploadIdMarker></UploadIdMarker>
6
+ <NextKeyMarker>oss.avi</NextKeyMarker>
7
+ <NextUploadIdMarker>0004B99B8E707874FC2D692FA5D77D3F</NextUploadIdMarker>
8
+ <Delimiter></Delimiter>
9
+ <Prefix></Prefix>
10
+ <MaxUploads>1000</MaxUploads>
11
+ <IsTruncated>false</IsTruncated>
12
+ <Upload>
13
+ <Key>multipart.data</Key>
14
+ <UploadId>0004B999EF518A1FE585B0C9360DC4C8</UploadId>
15
+ <Initiated>2012-02-23T04:18:23.000Z</Initiated>
16
+ </Upload>
17
+ <Upload>
18
+ <Key>multipart.data</Key>
19
+ <UploadId>0004B999EF5A239BB9138C6227D69F95</UploadId>
20
+ <Initiated>2012-02-23T04:18:23.000Z</Initiated>
21
+ </Upload>
22
+ <Upload>
23
+ <Key>oss.avi</Key>
24
+ <UploadId>0004B99B8E707874FC2D692FA5D77D3F</UploadId>
25
+ <Initiated>2012-02-23T06:14:27.000Z</Initiated>
26
+ </Upload>
27
+ </ListMultipartUploadsResult>
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ListPartsResult>
3
+ <Bucket>oss-ruby-sdk-test-bucket</Bucket>
4
+ <Key>oss-ruby-sdk-test-object</Key>
5
+ <UploadId>0004B9894A22E5B1888A1E29F8236E2D</UploadId>
6
+ <NextPartNumberMarker>5</NextPartNumberMarker>
7
+ <MaxParts>1000</MaxParts>
8
+ <IsTruncated>false</IsTruncated>
9
+ <Part>
10
+ <PartNumber>1</PartNumber>
11
+ <LastModified>2012-02-23T07:01:34.000Z</LastModified>
12
+ <ETag>&quot;3349DC700140D7F86A078484278075A9&quot;</ETag>
13
+ <Size>6291456</Size>
14
+ </Part>
15
+ <Part>
16
+ <PartNumber>2</PartNumber>
17
+ <LastModified>2012-02-23T07:01:12.000Z</LastModified>
18
+ <ETag>&quot;3349DC700140D7F86A078484278075A9&quot;</ETag>
19
+ <Size>6291456</Size>
20
+ </Part>
21
+ <Part>
22
+ <PartNumber>5</PartNumber>
23
+ <LastModified>2012-02-23T07:02:03.000Z</LastModified>
24
+ <ETag>&quot;7265F4D211B56873A381D321F586E4A9&quot;</ETag>
25
+ <Size>1024</Size>
26
+ </Part>
27
+ </ListPartsResult>
@@ -0,0 +1 @@
1
+ Test file for OSS.
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <CopyPartResult>
3
+ <LastModified>2014-07-17T06:27:54.000Z </LastModified>
4
+ <ETag>5B3C1A2E053D763E1B002CC607C5A0FE</ETag>
5
+ </CopyPartResult>
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe OSS::Base do
4
+ before do
5
+ @oss = OSS::Base.new({
6
+ endpoint: 'oss-cn-hangzhou.aliyuncs.com',
7
+ access_key_id: 'ACCESS_KEY_ID',
8
+ access_key_secret: 'ACCESS_KEY_SECRET'
9
+ })
10
+ end
11
+
12
+ it "respond to api methods" do
13
+ expect(@oss).to respond_to(:get_service)
14
+ expect(@oss).to respond_to(:put_bucket)
15
+ expect(@oss).to respond_to(:put_bucket_acl)
16
+ expect(@oss).to respond_to(:put_bucket_logging)
17
+ expect(@oss).to respond_to(:put_bucket_website)
18
+ expect(@oss).to respond_to(:put_bucket_referer)
19
+ expect(@oss).to respond_to(:put_bucket_lifecycle)
20
+ expect(@oss).to respond_to(:get_bucket)
21
+ expect(@oss).to respond_to(:get_bucket_acl)
22
+ expect(@oss).to respond_to(:get_bucket_location)
23
+ expect(@oss).to respond_to(:get_bucket_logging)
24
+ expect(@oss).to respond_to(:get_bucket_website)
25
+ expect(@oss).to respond_to(:get_bucket_referer)
26
+ expect(@oss).to respond_to(:get_bucket_lifecycle)
27
+ expect(@oss).to respond_to(:delete_bucket)
28
+ expect(@oss).to respond_to(:delete_bucket_logging)
29
+ expect(@oss).to respond_to(:delete_bucket_website)
30
+ expect(@oss).to respond_to(:delete_bucket_lifecycle)
31
+ expect(@oss).to respond_to(:put_bucket_cors)
32
+ expect(@oss).to respond_to(:get_bucket_cors)
33
+ expect(@oss).to respond_to(:delete_bucket_cors)
34
+
35
+ expect(@oss).to respond_to(:put_object)
36
+ expect(@oss).to respond_to(:put_object_from_file)
37
+ expect(@oss).to respond_to(:copy_object)
38
+ expect(@oss).to respond_to(:get_object)
39
+ expect(@oss).to respond_to(:append_object)
40
+ expect(@oss).to respond_to(:delete_object)
41
+ expect(@oss).to respond_to(:delete_multiple_objects)
42
+ expect(@oss).to respond_to(:head_object)
43
+ expect(@oss).to respond_to(:put_object_acl)
44
+ expect(@oss).to respond_to(:get_object_acl)
45
+ expect(@oss).to respond_to(:post_object)
46
+ expect(@oss).to respond_to(:init_multi_upload)
47
+ expect(@oss).to respond_to(:upload_object_part)
48
+ expect(@oss).to respond_to(:upload_object_part_copy)
49
+ expect(@oss).to respond_to(:complete_multi_upload)
50
+ expect(@oss).to respond_to(:abort_multi_upload)
51
+ expect(@oss).to respond_to(:list_multi_upload)
52
+ expect(@oss).to respond_to(:list_object_parts)
53
+ end
54
+
55
+ context "#bucket" do
56
+ it "returns instance of OSS::Bucket" do
57
+ expect(@oss.send :bucket).to be_instance_of(OSS::Bucket)
58
+ end
59
+ end
60
+
61
+ context "#object" do
62
+ it "returns instance of OSS::Object" do
63
+ expect(@oss.send :object).to be_instance_of(OSS::Object)
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,324 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Bucket API" do
4
+ before :each do
5
+ @endpoint = 'oss-cn-hangzhou.aliyuncs.com'
6
+ @access_key_id = 'ACCESS_KEY_ID'
7
+ @access_key_secret = 'ACCESS_KEY_SECRET'
8
+ @oss = OSS.new({
9
+ endpoint: @endpoint,
10
+ access_key_id: @access_key_id,
11
+ access_key_secret: @access_key_secret
12
+ })
13
+ @bucket_name = 'oss-ruby-sdk-test-bucket'
14
+ @non_exist_bucket = 'non-exist-bucket'
15
+ end
16
+
17
+ describe "#get_service" do
18
+ before do
19
+ stub_request(:get, @endpoint)
20
+ .to_return(
21
+ status: 200,
22
+ body: File.read('spec/fixtures/get_service.xml')
23
+ )
24
+ end
25
+
26
+ it "list bucket list" do
27
+ response = @oss.get_service
28
+ expect(response.status).to eq(200)
29
+ expect(response.xpath("//ID").text).to be_a(String)
30
+ end
31
+ end
32
+
33
+ describe "#put_bucket" do
34
+ before do
35
+ @permission = 'private'
36
+ @region = 'oss-cn-hangzhou'
37
+ stub_request(:put, "#{@bucket_name}.#{@endpoint}")
38
+ .with(
39
+ headers: {'x-oss-acl' => @permission},
40
+ body: hash_including(
41
+ 'CreateBucketConfiguration' => {'LocationConstraint' => @region}
42
+ )
43
+ )
44
+ .to_return(status: 200)
45
+ end
46
+
47
+ it "create bucket on location hangzhou" do
48
+ response = @oss.put_bucket(@bucket_name, @permission, @region)
49
+ expect(response.status).to eq(200)
50
+ end
51
+ end
52
+
53
+ describe "#get_bucket" do
54
+ before do
55
+ stub_request(:get, "#{@bucket_name}.#{@endpoint}")
56
+ .to_return(status: 200, body: File.read('spec/fixtures/get_bucket.xml'))
57
+ stub_request(:get, "#{@non_exist_bucket}.#{@endpoint}")
58
+ .to_return(status: 404)
59
+ end
60
+
61
+ it "get bucket information" do
62
+ response = @oss.get_bucket(@bucket_name)
63
+ expect(response.status).to eq(200)
64
+ expect(response.xpath("//Name").text).to eq(@bucket_name)
65
+ end
66
+
67
+ it "return NoSuchBucket when bucket does not exist" do
68
+ response = @oss.get_bucket(@non_exist_bucket)
69
+ expect(response.status).to eq(404)
70
+ end
71
+ end
72
+
73
+ describe "#delete_bucket" do
74
+ before do
75
+ stub_request(:delete, "#{@bucket_name}.#{@endpoint}")
76
+ .to_return(status: 204)
77
+ stub_request(:delete, "#{@non_exist_bucket}.#{@endpoint}")
78
+ .to_return(status: 404)
79
+ end
80
+ it "get bucket information" do
81
+ response = @oss.delete_bucket(@bucket_name)
82
+ expect(response.status).to eq(204)
83
+ end
84
+
85
+ it "return NoSuchBucket when bucket does not exist" do
86
+ response = @oss.delete_bucket(@non_exist_bucket)
87
+ expect(response.status).to eq(404)
88
+ end
89
+ end
90
+
91
+ describe "Sub Resource: ACL Location Logging Website Referer Lifecycle" do
92
+ context "#ACL" do
93
+ before do
94
+ @permission = 'private'
95
+ stub_request(:put, "#{@bucket_name}.#{@endpoint}/?acl")
96
+ .with(headers: {'x-oss-acl' => @permission})
97
+ .to_return(status: 200)
98
+ stub_request(:get, "#{@bucket_name}.#{@endpoint}/?acl")
99
+ .to_return(status: 200, body: File.read('spec/fixtures/get_bucket_acl.xml'))
100
+ end
101
+
102
+ it "modify ACL" do
103
+ response = @oss.put_bucket_acl(@bucket_name, @permission)
104
+ expect(response.status).to eq(200)
105
+ end
106
+
107
+ it "get ACL" do
108
+ response = @oss.get_bucket_acl(@bucket_name)
109
+ expect(response.status).to eq(200)
110
+ expect(response.xpath("//Grant").text).to eq(@permission)
111
+ end
112
+ end
113
+
114
+ context "#Location" do
115
+ before do
116
+ stub_request(:get, "#{@bucket_name}.#{@endpoint}/?location")
117
+ .to_return(status: 200)
118
+ end
119
+
120
+ it "get location" do
121
+ response = @oss.get_bucket_location(@bucket_name)
122
+ expect(response.status).to eq(200)
123
+ end
124
+ end
125
+
126
+ context "#Logging" do
127
+ before do
128
+ stub_request(:put, "#{@bucket_name}.#{@endpoint}/?logging")
129
+ .with(
130
+ headers: {'Content-Type' => 'application/xml'},
131
+ body: hash_including(
132
+ 'BucketLoggingStatus' => {
133
+ 'LoggingEnabled' => {'TargetBucket' => @bucket_name}
134
+ }
135
+ )
136
+ )
137
+ .to_return(status: 200)
138
+ stub_request(:get, "#{@bucket_name}.#{@endpoint}/?logging")
139
+ .to_return(status: 200)
140
+ stub_request(:delete, "#{@bucket_name}.#{@endpoint}/?logging")
141
+ .to_return(status: 204)
142
+ end
143
+
144
+ it "enable logging" do
145
+ response = @oss.put_bucket_logging(@bucket_name, @bucket_name)
146
+ expect(response.status).to eq(200)
147
+ end
148
+
149
+ it "get logging" do
150
+ response = @oss.get_bucket_logging(@bucket_name)
151
+ expect(response.status).to eq(200)
152
+ end
153
+
154
+ it "delete logging" do
155
+ response = @oss.delete_bucket_logging(@bucket_name)
156
+ expect(response.status).to eq(204)
157
+ end
158
+ end
159
+
160
+ context "#Website" do
161
+ before do
162
+ stub_request(:put, "#{@bucket_name}.#{@endpoint}/?website")
163
+ .with(
164
+ headers: {'Content-Type' => 'application/xml'},
165
+ body: hash_including(
166
+ 'WebsiteConfiguration' => {
167
+ 'IndexDocument' => {'Suffix' => 'index.html'},
168
+ 'ErrorDocument' => {'Key' => '400.html'}
169
+ }
170
+ )
171
+ )
172
+ .to_return(status: 200)
173
+ stub_request(:get, "#{@bucket_name}.#{@endpoint}/?website")
174
+ .to_return(status: 200)
175
+ stub_request(:delete, "#{@bucket_name}.#{@endpoint}/?website")
176
+ .to_return(status: 204)
177
+ end
178
+
179
+ it "create website" do
180
+ response = @oss.put_bucket_website(@bucket_name, 'index.html', '400.html')
181
+ expect(response.status).to eq(200)
182
+ end
183
+
184
+ it "get website" do
185
+ response = @oss.get_bucket_website(@bucket_name)
186
+ expect(response.status).to eq(200)
187
+ end
188
+
189
+ it "delete website" do
190
+ response = @oss.delete_bucket_website(@bucket_name)
191
+ expect(response.status).to eq(204)
192
+ end
193
+ end
194
+
195
+ context "#Referer" do
196
+ before do
197
+ stub_request(:put, "#{@bucket_name}.#{@endpoint}/?referer")
198
+ .with(
199
+ headers: {'Content-Type' => 'application/xml'},
200
+ body: hash_including(
201
+ 'RefererConfiguration' => {
202
+ 'AllowEmptyReferer' => 'true',
203
+ 'RefererList' => {'Referer' => 'http://www.aliyun.com'}
204
+ }
205
+ )
206
+ )
207
+ .to_return(status: 200)
208
+ stub_request(:get, "#{@bucket_name}.#{@endpoint}/?referer")
209
+ .to_return(status: 200)
210
+ end
211
+
212
+ it "modify referer" do
213
+ response = @oss.put_bucket_referer(@bucket_name, true, ['http://www.aliyun.com'])
214
+ expect(response.status).to eq(200)
215
+ end
216
+
217
+ it "get referer" do
218
+ response = @oss.get_bucket_referer(@bucket_name)
219
+ expect(response.status).to eq(200)
220
+ end
221
+ end
222
+
223
+ context "#Lifecycle" do
224
+ before do
225
+ stub_request(:put, "#{@bucket_name}.#{@endpoint}/?lifecycle")
226
+ .with(
227
+ headers: {'Content-Type' => 'application/xml'},
228
+ body: hash_including(
229
+ 'LifecycleConfiguration' => {
230
+ 'Rule' => {
231
+ 'ID' => 'abc prefix expiration rule',
232
+ 'Prefix' => 'abc-',
233
+ 'Status' => 'Enabled',
234
+ 'Expiration' => {'Days' => '5'}
235
+ }
236
+ }
237
+ )
238
+ )
239
+ .to_return(status: 200)
240
+ stub_request(:get, "#{@bucket_name}.#{@endpoint}/?lifecycle")
241
+ .to_return(status: 200)
242
+ stub_request(:delete, "#{@bucket_name}.#{@endpoint}/?lifecycle")
243
+ .to_return(status: 204)
244
+ end
245
+
246
+ it "modify lifecycle" do
247
+ response = @oss.put_bucket_lifecycle(@bucket_name, [{
248
+ status: 'Enabled',
249
+ days: 5,
250
+ prefix: 'abc-',
251
+ id: 'abc prefix expiration rule'
252
+ }])
253
+ expect(response.status).to eq(200)
254
+ end
255
+
256
+ it "get lifecycle" do
257
+ response = @oss.get_bucket_lifecycle(@bucket_name)
258
+ expect(response.status).to eq(200)
259
+ end
260
+
261
+ it "delete lifecycle" do
262
+ response = @oss.delete_bucket_lifecycle(@bucket_name)
263
+ expect(response.status).to eq(204)
264
+ end
265
+ end
266
+
267
+ context "#Cors" do
268
+ before do
269
+ stub_request(:put, "#{@bucket_name}.#{@endpoint}/?cors")
270
+ .with(
271
+ headers: {'Content-Type' => 'application/xml'},
272
+ body: hash_including(
273
+ 'CORSConfiguration' => {
274
+ 'CORSRule' => [{
275
+ 'AllowedOrigin' => '*',
276
+ 'AllowedMethod' => ['PUT', 'GET'],
277
+ 'AllowedHeader' => 'Authorization'
278
+ }, {
279
+ 'AllowedOrigin' => ['http://www.a.com', 'http://www.b.com'],
280
+ 'AllowedMethod' => 'GET',
281
+ 'AllowedHeader' => 'Authorization',
282
+ 'ExposeHeader' => ['x-oss-test', 'x-oss-test1'],
283
+ 'MaxAgeSeconds' => '100'
284
+ }]
285
+ }
286
+ )
287
+ )
288
+ .to_return(status: 200)
289
+ stub_request(:get, "#{@bucket_name}.#{@endpoint}/?cors")
290
+ .to_return(status: 200)
291
+ stub_request(:delete, "#{@bucket_name}.#{@endpoint}/?cors")
292
+ .to_return(status: 204)
293
+ end
294
+
295
+ it "modify cors" do
296
+ response = @oss.put_bucket_cors(
297
+ @bucket_name,
298
+ [{
299
+ 'AllowedOrigin' => '*',
300
+ 'AllowedMethod' => ['PUT', 'GET'],
301
+ 'AllowedHeader' => 'Authorization'
302
+ }, {
303
+ 'AllowedOrigin' => ['http://www.a.com', 'http://www.b.com'],
304
+ 'AllowedMethod' => 'GET',
305
+ 'AllowedHeader' => 'Authorization',
306
+ 'ExposeHeader' => ['x-oss-test', 'x-oss-test1'],
307
+ 'MaxAgeSeconds' => 100
308
+ }]
309
+ )
310
+ expect(response.status).to eq(200)
311
+ end
312
+
313
+ it "get cors" do
314
+ response = @oss.get_bucket_cors(@bucket_name)
315
+ expect(response.status).to eq(200)
316
+ end
317
+
318
+ it "delete cors" do
319
+ response = @oss.delete_bucket_cors(@bucket_name)
320
+ expect(response.status).to eq(204)
321
+ end
322
+ end
323
+ end
324
+ end