aliyun-oss-ruby-sdk 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +95 -0
- data/README.md +423 -0
- data/examples/aliyun/oss/bucket.rb +144 -0
- data/examples/aliyun/oss/callback.rb +61 -0
- data/examples/aliyun/oss/object.rb +182 -0
- data/examples/aliyun/oss/resumable_download.rb +42 -0
- data/examples/aliyun/oss/resumable_upload.rb +49 -0
- data/examples/aliyun/oss/streaming.rb +124 -0
- data/examples/aliyun/oss/using_sts.rb +48 -0
- data/examples/aliyun/sts/assume_role.rb +59 -0
- data/lib/aliyun_sdk/common.rb +6 -0
- data/lib/aliyun_sdk/common/exception.rb +18 -0
- data/lib/aliyun_sdk/common/logging.rb +46 -0
- data/lib/aliyun_sdk/common/struct.rb +56 -0
- data/lib/aliyun_sdk/oss.rb +16 -0
- data/lib/aliyun_sdk/oss/bucket.rb +661 -0
- data/lib/aliyun_sdk/oss/client.rb +106 -0
- data/lib/aliyun_sdk/oss/config.rb +39 -0
- data/lib/aliyun_sdk/oss/download.rb +255 -0
- data/lib/aliyun_sdk/oss/exception.rb +108 -0
- data/lib/aliyun_sdk/oss/http.rb +338 -0
- data/lib/aliyun_sdk/oss/iterator.rb +92 -0
- data/lib/aliyun_sdk/oss/multipart.rb +74 -0
- data/lib/aliyun_sdk/oss/object.rb +15 -0
- data/lib/aliyun_sdk/oss/protocol.rb +1499 -0
- data/lib/aliyun_sdk/oss/struct.rb +208 -0
- data/lib/aliyun_sdk/oss/upload.rb +238 -0
- data/lib/aliyun_sdk/oss/util.rb +89 -0
- data/lib/aliyun_sdk/sts.rb +9 -0
- data/lib/aliyun_sdk/sts/client.rb +38 -0
- data/lib/aliyun_sdk/sts/config.rb +22 -0
- data/lib/aliyun_sdk/sts/exception.rb +53 -0
- data/lib/aliyun_sdk/sts/protocol.rb +130 -0
- data/lib/aliyun_sdk/sts/struct.rb +64 -0
- data/lib/aliyun_sdk/sts/util.rb +48 -0
- data/lib/aliyun_sdk/version.rb +7 -0
- data/spec/aliyun/oss/bucket_spec.rb +597 -0
- data/spec/aliyun/oss/client/bucket_spec.rb +554 -0
- data/spec/aliyun/oss/client/client_spec.rb +297 -0
- data/spec/aliyun/oss/client/resumable_download_spec.rb +220 -0
- data/spec/aliyun/oss/client/resumable_upload_spec.rb +413 -0
- data/spec/aliyun/oss/http_spec.rb +83 -0
- data/spec/aliyun/oss/multipart_spec.rb +686 -0
- data/spec/aliyun/oss/object_spec.rb +785 -0
- data/spec/aliyun/oss/service_spec.rb +142 -0
- data/spec/aliyun/oss/util_spec.rb +50 -0
- data/spec/aliyun/sts/client_spec.rb +150 -0
- data/spec/aliyun/sts/util_spec.rb +39 -0
- data/tests/config.rb +31 -0
- data/tests/test_content_encoding.rb +54 -0
- data/tests/test_content_type.rb +95 -0
- data/tests/test_custom_headers.rb +70 -0
- data/tests/test_encoding.rb +77 -0
- data/tests/test_large_file.rb +66 -0
- data/tests/test_multipart.rb +97 -0
- data/tests/test_object_acl.rb +49 -0
- data/tests/test_object_key.rb +68 -0
- data/tests/test_object_url.rb +69 -0
- data/tests/test_resumable.rb +40 -0
- metadata +240 -0
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'yaml'
|
3
|
+
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
|
4
|
+
require 'aliyun/oss'
|
5
|
+
require_relative 'config'
|
6
|
+
|
7
|
+
class TestContentType < Minitest::Test
|
8
|
+
def setup
|
9
|
+
AliyunSDK::Common::Logging.set_log_level(Logger::DEBUG)
|
10
|
+
client = AliyunSDK::OSS::Client.new(TestConf.creds)
|
11
|
+
@bucket = client.get_bucket(TestConf.bucket)
|
12
|
+
|
13
|
+
@types = {
|
14
|
+
"html" => "text/html",
|
15
|
+
"js" => "application/javascript",
|
16
|
+
"xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
17
|
+
"xltx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
|
18
|
+
"potx" => "application/vnd.openxmlformats-officedocument.presentationml.template",
|
19
|
+
"ppsx" => "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
|
20
|
+
"pptx" => "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
21
|
+
"sldx" => "application/vnd.openxmlformats-officedocument.presentationml.slide",
|
22
|
+
"docx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
23
|
+
"dotx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
|
24
|
+
"xlam" => "application/vnd.ms-excel.addin.macroEnabled.12",
|
25
|
+
"xlsb" => "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
|
26
|
+
"apk" => "application/vnd.android.package-archive",
|
27
|
+
"" => "application/octet-stream"
|
28
|
+
}
|
29
|
+
|
30
|
+
@prefix = "tests/content_type/"
|
31
|
+
end
|
32
|
+
|
33
|
+
def get_key(p, k)
|
34
|
+
"#{@prefix}#{p}obj" + (k.empty? ? "" : ".#{k}")
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_type_from_key
|
38
|
+
@types.each do |k, v|
|
39
|
+
key = get_key('from_key', k)
|
40
|
+
@bucket.put_object(key)
|
41
|
+
assert_equal v, @bucket.get_object(key).headers[:content_type]
|
42
|
+
|
43
|
+
copy_key = get_key('copy.from_key', k)
|
44
|
+
@bucket.copy_object(key, copy_key)
|
45
|
+
assert_equal v, @bucket.get_object(copy_key).headers[:content_type]
|
46
|
+
|
47
|
+
append_key = get_key('append.from_key', k)
|
48
|
+
@bucket.append_object(append_key, 0)
|
49
|
+
assert_equal v, @bucket.get_object(append_key).headers[:content_type]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_type_from_file
|
54
|
+
@types.each do |k, v|
|
55
|
+
upload_file = "/tmp/upload_file"
|
56
|
+
upload_file += ".#{k}" unless k.empty?
|
57
|
+
`touch #{upload_file}`
|
58
|
+
|
59
|
+
key = get_key('from_file', k)
|
60
|
+
@bucket.put_object(key, :file => upload_file)
|
61
|
+
assert_equal v, @bucket.get_object(key).headers[:content_type]
|
62
|
+
|
63
|
+
append_key = get_key('append.from_file', k)
|
64
|
+
@bucket.append_object(append_key, 0, :file => upload_file)
|
65
|
+
assert_equal v, @bucket.get_object(append_key).headers[:content_type]
|
66
|
+
|
67
|
+
multipart_key = get_key('multipart.from_file', k)
|
68
|
+
@bucket.resumable_upload(multipart_key, upload_file)
|
69
|
+
assert_equal v, @bucket.get_object(multipart_key).headers[:content_type]
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_type_from_user
|
74
|
+
@types.each do |k, v|
|
75
|
+
upload_file = "/tmp/upload_file.html"
|
76
|
+
`touch #{upload_file}`
|
77
|
+
|
78
|
+
key = get_key('from_user', k)
|
79
|
+
@bucket.put_object(key, :file => upload_file, :content_type => v)
|
80
|
+
assert_equal v, @bucket.get_object(key).headers[:content_type]
|
81
|
+
|
82
|
+
copy_key = get_key('copy.from_user', k)
|
83
|
+
@bucket.copy_object(key, copy_key, :content_type => v)
|
84
|
+
assert_equal v, @bucket.get_object(copy_key).headers[:content_type]
|
85
|
+
|
86
|
+
append_key = get_key('append.from_user', k)
|
87
|
+
@bucket.append_object(append_key, 0, :file => upload_file, :content_type => v)
|
88
|
+
assert_equal v, @bucket.get_object(append_key).headers[:content_type]
|
89
|
+
|
90
|
+
multipart_key = get_key('multipart.from_file', k)
|
91
|
+
@bucket.resumable_upload(multipart_key, upload_file, :content_type => v)
|
92
|
+
assert_equal v, @bucket.get_object(multipart_key).headers[:content_type]
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'yaml'
|
3
|
+
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
|
4
|
+
require 'aliyun/oss'
|
5
|
+
require 'zlib'
|
6
|
+
require_relative 'config'
|
7
|
+
|
8
|
+
class TestCustomHeaders < Minitest::Test
|
9
|
+
def setup
|
10
|
+
AliyunSDK::Common::Logging.set_log_level(Logger::DEBUG)
|
11
|
+
client = AliyunSDK::OSS::Client.new(TestConf.creds)
|
12
|
+
@bucket = client.get_bucket(TestConf.bucket)
|
13
|
+
|
14
|
+
@prefix = "tests/custom_headers/"
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_key(k)
|
18
|
+
"#{@prefix}#{k}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_custom_headers
|
22
|
+
key = get_key('ruby')
|
23
|
+
cache_control = 'max-age: 3600'
|
24
|
+
@bucket.put_object(key, headers: {'cache-control' => cache_control})
|
25
|
+
obj = @bucket.get_object(key)
|
26
|
+
assert_equal cache_control, obj.headers[:cache_control]
|
27
|
+
|
28
|
+
content_disposition = 'attachment; filename="fname.ext"'
|
29
|
+
@bucket.put_object(
|
30
|
+
key,
|
31
|
+
headers: {'cache-control' => cache_control,
|
32
|
+
'CONTENT-DISPOSITION' => content_disposition})
|
33
|
+
obj = @bucket.get_object(key)
|
34
|
+
assert_equal cache_control, obj.headers[:cache_control]
|
35
|
+
assert_equal content_disposition, obj.headers[:content_disposition]
|
36
|
+
|
37
|
+
content_encoding = 'deflate'
|
38
|
+
expires = (Time.now + 3600).httpdate
|
39
|
+
@bucket.put_object(
|
40
|
+
key,
|
41
|
+
headers: {'cache-control' => cache_control,
|
42
|
+
'CONTENT-DISPOSITION' => content_disposition,
|
43
|
+
'content-ENCODING' => content_encoding,
|
44
|
+
'EXPIRES' => expires }) do |s|
|
45
|
+
s << Zlib::Deflate.deflate('hello world')
|
46
|
+
end
|
47
|
+
|
48
|
+
content = ''
|
49
|
+
obj = @bucket.get_object(key) { |c| content << c }
|
50
|
+
assert_equal 'hello world', content
|
51
|
+
assert_equal cache_control, obj.headers[:cache_control]
|
52
|
+
assert_equal content_disposition, obj.headers[:content_disposition]
|
53
|
+
assert_equal content_encoding, obj.headers[:content_encoding]
|
54
|
+
assert_equal expires, obj.headers[:expires]
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_headers_overwrite
|
58
|
+
key = get_key('rails')
|
59
|
+
@bucket.put_object(
|
60
|
+
key,
|
61
|
+
content_type: 'text/html',
|
62
|
+
metas: {'hello' => 'world'},
|
63
|
+
headers: {'content-type' => 'application/json',
|
64
|
+
'x-oss-meta-hello' => 'bar'}) { |s| s << 'hello world' }
|
65
|
+
obj = @bucket.get_object(key)
|
66
|
+
|
67
|
+
assert_equal 'application/json', obj.headers[:content_type]
|
68
|
+
assert_equal ({'hello' => 'bar'}), obj.metas
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'yaml'
|
4
|
+
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
|
5
|
+
require 'aliyun/oss'
|
6
|
+
require_relative 'config'
|
7
|
+
|
8
|
+
class TestEncoding < Minitest::Test
|
9
|
+
def setup
|
10
|
+
AliyunSDK::Common::Logging.set_log_level(Logger::DEBUG)
|
11
|
+
client = AliyunSDK::OSS::Client.new(TestConf.creds)
|
12
|
+
@bucket = client.get_bucket(TestConf.bucket)
|
13
|
+
|
14
|
+
@prefix = 'tests/encoding/'
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_key(k)
|
18
|
+
@prefix + k
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_utf_8
|
22
|
+
key = get_key('utf-8')
|
23
|
+
@bucket.put_object(key) do |stream|
|
24
|
+
stream << '中国' << 'Ruby'
|
25
|
+
end
|
26
|
+
put = '中国Ruby'.force_encoding(Encoding::ASCII_8BIT)
|
27
|
+
got = ''
|
28
|
+
@bucket.get_object(key) { |c| got << c }
|
29
|
+
assert_equal put, got
|
30
|
+
|
31
|
+
File.open('/tmp/x', 'w') { |f| f.write('中国Ruby') }
|
32
|
+
@bucket.put_object(key, :file => '/tmp/x')
|
33
|
+
got = ''
|
34
|
+
@bucket.get_object(key) { |c| got << c }
|
35
|
+
assert_equal put, got
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_gbk
|
39
|
+
key = get_key('gbk')
|
40
|
+
@bucket.put_object(key) do |stream|
|
41
|
+
stream << '中国'.encode(Encoding::GBK) << 'Ruby'.encode(Encoding::GBK)
|
42
|
+
end
|
43
|
+
put = '中国Ruby'.encode(Encoding::GBK).force_encoding(Encoding::ASCII_8BIT)
|
44
|
+
got = ''
|
45
|
+
@bucket.get_object(key) { |c| got << c }
|
46
|
+
assert_equal put, got
|
47
|
+
|
48
|
+
File.open('/tmp/x', 'w') { |f| f.write('中国Ruby'.encode(Encoding::GBK)) }
|
49
|
+
@bucket.put_object(key, :file => '/tmp/x')
|
50
|
+
got = ''
|
51
|
+
@bucket.get_object(key) { |c| got << c }
|
52
|
+
assert_equal put, got
|
53
|
+
end
|
54
|
+
|
55
|
+
def encode_number(i)
|
56
|
+
[i].pack('N')
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_binary
|
60
|
+
key = get_key('bin')
|
61
|
+
@bucket.put_object(key) do |stream|
|
62
|
+
(0..1024).each { |i| stream << encode_number(i) }
|
63
|
+
end
|
64
|
+
put = (0..1024).reduce('') { |s, i| s << encode_number(i) }
|
65
|
+
got = ''
|
66
|
+
@bucket.get_object(key) { |c| got << c }
|
67
|
+
assert_equal put, got
|
68
|
+
|
69
|
+
File.open('/tmp/x', 'w') { |f|
|
70
|
+
(0..1024).each { |i| f.write(encode_number(i)) }
|
71
|
+
}
|
72
|
+
@bucket.put_object(key, :file => '/tmp/x')
|
73
|
+
got = ''
|
74
|
+
@bucket.get_object(key) { |c| got << c }
|
75
|
+
assert_equal put, got
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'benchmark'
|
4
|
+
require 'yaml'
|
5
|
+
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
|
6
|
+
require 'aliyun/oss'
|
7
|
+
require_relative 'config'
|
8
|
+
|
9
|
+
class TestLargeFile < Minitest::Test
|
10
|
+
def setup
|
11
|
+
client = AliyunSDK::OSS::Client.new(TestConf.creds)
|
12
|
+
@bucket = client.get_bucket(TestConf.bucket)
|
13
|
+
|
14
|
+
@prefix = 'tests/large_file/'
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_key(k)
|
18
|
+
@prefix + k
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_large_file_1gb
|
22
|
+
skip "don't run it by default"
|
23
|
+
|
24
|
+
key = get_key("large_file_1gb")
|
25
|
+
Benchmark.bm(32) do |bm|
|
26
|
+
bm.report("Upload with put_object: ") do
|
27
|
+
@bucket.put_object(key, :file => './large_file_1gb')
|
28
|
+
end
|
29
|
+
|
30
|
+
bm.report("Upload with resumable_upload: ") do
|
31
|
+
@bucket.resumable_upload(key, './large_file_1gb')
|
32
|
+
end
|
33
|
+
|
34
|
+
bm.report("Download with get_object: ") do
|
35
|
+
@bucket.get_object(key, :file => './large_file_1gb')
|
36
|
+
end
|
37
|
+
|
38
|
+
bm.report("Download with resumable_download: ") do
|
39
|
+
@bucket.resumable_download(key, './large_file_1gb')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_large_file_8gb
|
45
|
+
skip "don't run it by default"
|
46
|
+
|
47
|
+
key = get_key("large_file_8gb")
|
48
|
+
Benchmark.bm(32) do |bm|
|
49
|
+
bm.report("Upload with put_object: ") do
|
50
|
+
@bucket.put_object(key, :file => './large_file_8gb')
|
51
|
+
end
|
52
|
+
|
53
|
+
bm.report("Upload with resumable_upload: ") do
|
54
|
+
@bucket.resumable_upload(key, './large_file_8gb')
|
55
|
+
end
|
56
|
+
|
57
|
+
bm.report("Download with get_object: ") do
|
58
|
+
@bucket.get_object(key, :file => './large_file_8gb')
|
59
|
+
end
|
60
|
+
|
61
|
+
bm.report("Download with resumable_download: ") do
|
62
|
+
@bucket.resumable_download(key, './large_file_8gb')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'yaml'
|
4
|
+
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
|
5
|
+
require 'aliyun/oss'
|
6
|
+
require_relative 'config'
|
7
|
+
|
8
|
+
class TestMultipart < Minitest::Test
|
9
|
+
def setup
|
10
|
+
AliyunSDK::Common::Logging.set_log_level(Logger::DEBUG)
|
11
|
+
client = AliyunSDK::OSS::Client.new(TestConf.creds)
|
12
|
+
@bucket_name = TestConf.bucket
|
13
|
+
@bucket = client.get_bucket(TestConf.bucket)
|
14
|
+
|
15
|
+
@protocol = AliyunSDK::OSS::Protocol.new(AliyunSDK::OSS::Config.new(TestConf.creds))
|
16
|
+
@prefix = 'tests/multipart/'
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_key(k)
|
20
|
+
@prefix + k
|
21
|
+
end
|
22
|
+
|
23
|
+
def clear_uploads
|
24
|
+
all = @bucket.list_uploads.to_a
|
25
|
+
all.each { |t| @bucket.abort_upload(t.id, t.object) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_key_marker
|
29
|
+
clear_uploads
|
30
|
+
|
31
|
+
# initiate 5 uploads
|
32
|
+
ids = []
|
33
|
+
5.times { |i|
|
34
|
+
id = @protocol.initiate_multipart_upload(@bucket_name, get_key("obj-#{i}"))
|
35
|
+
ids << id
|
36
|
+
}
|
37
|
+
|
38
|
+
all = @bucket.list_uploads(limit: 1).to_a
|
39
|
+
assert_equal ids, all.map(&:id)
|
40
|
+
|
41
|
+
after_1 = @bucket.list_uploads(key_marker: get_key("obj-0")).to_a
|
42
|
+
assert_equal ids[1, 5], after_1.map(&:id)
|
43
|
+
|
44
|
+
after_5 = @bucket.list_uploads(key_marker: get_key("obj-4")).to_a
|
45
|
+
assert after_5.empty?, after_5.to_s
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_id_marker
|
49
|
+
clear_uploads
|
50
|
+
|
51
|
+
# initiate 5 uploads
|
52
|
+
ids = []
|
53
|
+
5.times { |i|
|
54
|
+
id = @protocol.initiate_multipart_upload(@bucket_name, get_key("object"))
|
55
|
+
ids << id
|
56
|
+
}
|
57
|
+
ids.sort!
|
58
|
+
|
59
|
+
all = @bucket.list_uploads.to_a
|
60
|
+
assert_equal ids, all.map(&:id)
|
61
|
+
|
62
|
+
# id_marker is ignored
|
63
|
+
after_1 = @bucket.list_uploads(id_marker: ids[0]).to_a
|
64
|
+
assert_equal ids, after_1.map(&:id)
|
65
|
+
|
66
|
+
# id_marker is ignored
|
67
|
+
after_5 = @bucket.list_uploads(id_marker: ids[4]).to_a
|
68
|
+
assert_equal ids, after_5.map(&:id)
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_id_key_marker
|
72
|
+
clear_uploads
|
73
|
+
|
74
|
+
# initiate 5 uploads
|
75
|
+
foo_ids = []
|
76
|
+
5.times { |i|
|
77
|
+
id = @protocol.initiate_multipart_upload(@bucket_name, get_key("foo"))
|
78
|
+
foo_ids << id
|
79
|
+
}
|
80
|
+
foo_ids.sort!
|
81
|
+
|
82
|
+
bar_ids = []
|
83
|
+
5.times { |i|
|
84
|
+
id = @protocol.initiate_multipart_upload(@bucket_name, get_key("bar"))
|
85
|
+
bar_ids << id
|
86
|
+
}
|
87
|
+
bar_ids.sort!
|
88
|
+
|
89
|
+
after_1 = @bucket.list_uploads(
|
90
|
+
id_marker: bar_ids[0], key_marker: get_key("bar"), limit: 1).to_a
|
91
|
+
assert_equal bar_ids[1, 5] + foo_ids, after_1.map(&:id)
|
92
|
+
|
93
|
+
after_5 = @bucket.list_uploads(
|
94
|
+
id_marker: bar_ids[4], key_marker: get_key("bar")).to_a
|
95
|
+
assert_equal foo_ids, after_5.map(&:id)
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'yaml'
|
3
|
+
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
|
4
|
+
require 'aliyun/oss'
|
5
|
+
require_relative 'config'
|
6
|
+
|
7
|
+
class TestObjectACL < Minitest::Test
|
8
|
+
def setup
|
9
|
+
AliyunSDK::Common::Logging.set_log_level(Logger::DEBUG)
|
10
|
+
client = AliyunSDK::OSS::Client.new(TestConf.creds)
|
11
|
+
@bucket = client.get_bucket(TestConf.bucket)
|
12
|
+
|
13
|
+
@prefix = "tests/object_acl/"
|
14
|
+
end
|
15
|
+
|
16
|
+
def get_key(k)
|
17
|
+
"#{@prefix}#{k}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_put_object
|
21
|
+
key = get_key('put')
|
22
|
+
|
23
|
+
@bucket.put_object(key, acl: AliyunSDK::OSS::ACL::PRIVATE)
|
24
|
+
acl = @bucket.get_object_acl(key)
|
25
|
+
|
26
|
+
assert_equal AliyunSDK::OSS::ACL::PRIVATE, acl
|
27
|
+
|
28
|
+
@bucket.put_object(key, acl: AliyunSDK::OSS::ACL::PUBLIC_READ)
|
29
|
+
acl = @bucket.get_object_acl(key)
|
30
|
+
|
31
|
+
assert_equal AliyunSDK::OSS::ACL::PUBLIC_READ, acl
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_append_object
|
35
|
+
key = get_key('append-1')
|
36
|
+
|
37
|
+
@bucket.append_object(key, 0, acl: AliyunSDK::OSS::ACL::PRIVATE)
|
38
|
+
acl = @bucket.get_object_acl(key)
|
39
|
+
|
40
|
+
assert_equal AliyunSDK::OSS::ACL::PRIVATE, acl
|
41
|
+
|
42
|
+
key = get_key('append-2')
|
43
|
+
|
44
|
+
@bucket.put_object(key, acl: AliyunSDK::OSS::ACL::PUBLIC_READ)
|
45
|
+
acl = @bucket.get_object_acl(key)
|
46
|
+
|
47
|
+
assert_equal AliyunSDK::OSS::ACL::PUBLIC_READ, acl
|
48
|
+
end
|
49
|
+
end
|