Skip to content

Commit

Permalink
some code fix
Browse files Browse the repository at this point in the history
  • Loading branch information
wujinhu committed Nov 17, 2017
1 parent a22b636 commit 6a94daf
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 203 deletions.
35 changes: 35 additions & 0 deletions tests/test_bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,39 @@ def test_lifecycle_days(self):

self.assertRaises(oss2.exceptions.NoSuchLifecycle, self.bucket.get_bucket_lifecycle)

def test_put_lifecycle_days_less_than_transition_days(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(days=3))

rule.storage_transitions = [oss2.models.StorageTransition(days=4, storage_class=oss2.BUCKET_STORAGE_CLASS_IA)]
self.assertRaises(oss2.exceptions.InvalidArgument, self.bucket.put_bucket_lifecycle, BucketLifecycle([rule]))

def test_put_lifecycle_invalid_transitions(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(days=6))
# 转储为ARCHIVE的天数小于转储为IA
rule.storage_transitions = [oss2.models.StorageTransition(days=5,
storage_class=oss2.BUCKET_STORAGE_CLASS_IA),
oss2.models.StorageTransition(days=2,
storage_class=oss2.BUCKET_STORAGE_CLASS_ARCHIVE)]
self.assertRaises(oss2.exceptions.InvalidArgument, self.bucket.put_bucket_lifecycle, BucketLifecycle([rule]))

# 转储为IA(天数大于object过期时间)
rule.storage_transitions = [oss2.models.StorageTransition(days=7,
storage_class=oss2.BUCKET_STORAGE_CLASS_IA)]
self.assertRaises(oss2.exceptions.InvalidArgument, self.bucket.put_bucket_lifecycle, BucketLifecycle([rule]))

# 转储为STANDARD
rule.storage_transitions = [oss2.models.StorageTransition(days=5,
storage_class=oss2.BUCKET_STORAGE_CLASS_STANDARD)]
self.assertRaises(oss2.exceptions.InvalidArgument, self.bucket.put_bucket_lifecycle, BucketLifecycle([rule]))

def test_lifecycle_date(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle

Expand Down Expand Up @@ -427,6 +460,8 @@ def test_bucket_info(self):
auth = oss2.Auth(OSS_ID, OSS_SECRET)
bucket = oss2.Bucket(auth, OSS_ENDPOINT, random_string(63).lower())

self.assertRaises(oss2.exceptions.NoSuchBucket, bucket.get_bucket_info)

bucket.create_bucket(oss2.BUCKET_ACL_PRIVATE)

service = oss2.Service(auth, OSS_ENDPOINT)
Expand Down
203 changes: 0 additions & 203 deletions tests/test_mock_bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -321,175 +321,6 @@ def test_put_lifecycle_date(self, do_request):

self.assertRequest(req_info, request_text.format(id, prefix, status, date))

@patch('oss2.Session.do_request')
def test_put_lifecycle_days_less_than_transition_days(self, do_request):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle

request_text = '''PUT /?lifecycle= HTTP/1.1
Host: ming-oss-share.oss-cn-hangzhou.aliyuncs.com
Accept-Encoding: identity
Connection: keep-alive
Content-Length: 178
date: Sat, 12 Dec 2015 00:35:39 GMT
User-Agent: aliyun-sdk-python/2.0.2(Windows/7/;3.3.3)
Accept: */*
authorization: OSS ZCDmm7TPZKHtx77j:BdIgh0100HCI1QkZKsArQvQafzY=
<LifecycleConfiguration><Rule><ID>{0}</ID><Prefix>{1}</Prefix><Status>{2}</Status><Expiration><Days>{3}</Days></Expiration><Transition><Days>{4}</Days><StorageClass>IA</StorageClass></Transition></Rule></LifecycleConfiguration>'''

response_text = '''HTTP/1.1 400
Server: AliyunOSS
Date: Sat, 12 Dec 2015 00:35:39 GMT
Content-Length: 0
Connection: keep-alive
x-oss-request-id: 566B6BDB1BA604C27DD419B8
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>InvalidArgument</Code>
<Message>Days in the Expiration action must be more than the Transition action for StorageClass IA</Message>
<RequestId>566B6BDB1BA604C27DD419B8</RequestId>
<ArgumentName>Days</ArgumentName>
<ArgumentValue>2</ArgumentValue>
<HostId>ming-oss-share.oss-cn-hangzhou.aliyuncs.com</HostId>
</Error>
'''
req_info = unittests.common.mock_response(do_request, response_text)

id = '中文ID'
prefix = '中文前缀'
status = 'Enabled'
days = 2
transition_days = 4

rule = LifecycleRule(id, prefix,
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(days=days))

rule.storage_transitions = [oss2.models.StorageTransition(days=4, storage_class=oss2.BUCKET_STORAGE_CLASS_IA)]
self.assertRaises(oss2.exceptions.InvalidArgument,
unittests.common.bucket().put_bucket_lifecycle, BucketLifecycle([rule]))

@patch('oss2.Session.do_request')
def test_put_lifecycle_invalid_transitions(self, do_request):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle

request_text = '''PUT /?lifecycle= HTTP/1.1
Host: ming-oss-share.oss-cn-hangzhou.aliyuncs.com
Accept-Encoding: identity
Connection: keep-alive
Content-Length: 178
date: Sat, 12 Dec 2015 00:35:39 GMT
User-Agent: aliyun-sdk-python/2.0.2(Windows/7/;3.3.3)
Accept: */*
authorization: OSS ZCDmm7TPZKHtx77j:BdIgh0100HCI1QkZKsArQvQafzY=
{0}'''

response_text = '''HTTP/1.1 400
Server: AliyunOSS
Date: Sat, 12 Dec 2015 00:35:39 GMT
Content-Length: 0
Connection: keep-alive
x-oss-request-id: 566B6BDB1BA604C27DD419B8
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>InvalidArgument</Code>
</Error>
'''
req_info = unittests.common.mock_response(do_request, response_text)

id = '中文ID'
prefix = '中文前缀'
status = 'Enabled'
days = 5
transition_days = 4

rule = LifecycleRule(id, prefix,
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(days=days))

# Archive days less than IA
rule.storage_transitions = [oss2.models.StorageTransition(days=transition_days + 2,
storage_class=oss2.BUCKET_STORAGE_CLASS_IA),
oss2.models.StorageTransition(days=transition_days,
storage_class=oss2.BUCKET_STORAGE_CLASS_ARCHIVE)]
request_body = '''
<LifecycleConfiguration>
<Rule>
<ID>{0}</ID>
<Prefix>{1}</Prefix>
<Status>{2}</Status>
<Expiration>
<Days>{3}</Days>
</Expiration>
<Transition>
<StorageClass>IA</StorageClass>
<Days>{4}</Days>
</Transition>
<Transition>
<StorageClass>Archive</StorageClass>
<Days>{5}</Days>
</Transition>
</Rule>
</LifecycleConfiguration>
'''
self.assertRaises(oss2.exceptions.InvalidArgument,
unittests.common.bucket().put_bucket_lifecycle, BucketLifecycle([rule]))
self.assertRequest(req_info, request_text.format(
request_body.format(id, prefix, status, days, transition_days + 2, transition_days).replace('\n', '').replace(' ', '')))

# transition Archive
rule.storage_transitions = [oss2.models.StorageTransition(days=transition_days + 2,
storage_class=oss2.BUCKET_STORAGE_CLASS_IA)]

request_body = '''
<LifecycleConfiguration>
<Rule>
<ID>{0}</ID>
<Prefix>{1}</Prefix>
<Status>{2}</Status>
<Expiration>
<Days>{3}</Days>
</Expiration>
<Transition>
<StorageClass>IA</StorageClass>
<Days>{4}</Days>
</Transition>
</Rule>
</LifecycleConfiguration>
'''
self.assertRaises(oss2.exceptions.InvalidArgument,
unittests.common.bucket().put_bucket_lifecycle, BucketLifecycle([rule]))
self.assertRequest(req_info, request_text.format(
request_body.format(id, prefix, status, days, transition_days + 2).replace('\n', '').replace(' ', '')))

# transition from IA to Standard
rule.storage_transitions = [oss2.models.StorageTransition(days=transition_days + 2,
storage_class=oss2.BUCKET_STORAGE_CLASS_STANDARD)]
request_body = '''
<LifecycleConfiguration>
<Rule>
<ID>{0}</ID>
<Prefix>{1}</Prefix>
<Status>{2}</Status>
<Expiration>
<Days>{3}</Days>
</Expiration>
<Transition>
<StorageClass>Standard</StorageClass>
<Days>{4}</Days>
</Transition>
</Rule>
</LifecycleConfiguration>
'''
self.assertRaises(oss2.exceptions.InvalidArgument,
unittests.common.bucket().put_bucket_lifecycle, BucketLifecycle([rule]))

self.assertRequest(req_info, request_text.format(
request_body.format(id, prefix, status, days, transition_days + 2).replace('\n', '').replace(' ', '')))

@patch('oss2.Session.do_request')
def test_put_lifecycle_days(self, do_request):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle
Expand Down Expand Up @@ -627,40 +458,6 @@ def test_get_lifecycle_days(self, do_request):
self.assertEqual(rule.expiration.date, None)
self.assertEqual(rule.expiration.days, days)

@patch('oss2.Session.do_request')
def test_get_info(self, do_request):
request_text = '''GET /?bucketInfo HTTP/1.1
Host: sbowspxjhmccpmesjqcwagfw.oss-cn-hangzhou.aliyuncs.com
Accept-Encoding: identity
Connection: keep-alive
date: Sat, 12 Dec 2015 00:37:17 GMT
User-Agent: aliyun-sdk-python/2.0.2(Windows/7/;3.3.3)
Accept: */*
authorization: OSS ZCDmm7TPZKHtx77j:wopWcmMd/70eNKYOc9M6ZA21yY8='''

response_text = '''HTTP/1.1 404
Server: AliyunOSS
Date: Sat, 12 Dec 2015 00:37:17 GMT
Content-Type: application/xml
Content-Length: 287
Connection: keep-alive
x-oss-request-id: 566B6C3D6086505A0CFF0F68
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NoSuchBucket</Code>
<Message>The specified bucket does not exist.</Message>
<RequestId>566B6C3D6086505A0CFF0F68</RequestId>
<HostId>sbowspxjhmccpmesjqcwagfw.oss-cn-hangzhou.aliyuncs.com</HostId>
<BucketName>sbowspxjhmccpmesjqcwagfw</BucketName>
</Error>'''

req_info = unittests.common.mock_response(do_request, response_text)
bucket = unittests.common.bucket()
bucket.bucket_name = 'sbowspxjhmccpmesjqcwagfw'
self.assertRaises(oss2.exceptions.NoSuchBucket, bucket.get_bucket_info)
self.assertRequest(req_info, request_text)

@patch('oss2.Session.do_request')
def test_get_stat(self, do_request):
request_text = '''GET /?stat HTTP/1.1
Expand Down

0 comments on commit 6a94daf

Please sign in to comment.