def test_put_file(self):
        scs = SCSBucket(self.bucket_name)
        try:
            scs.put_bucket('public-read-write')
        except:
            self.fail('create bucket:%s is failed'%self.bucket_name)
              
        canned_acl = 'public-read-write'                #快捷ACL
        metadata = {}                                   #自定义文件属性信息
        metadata['author'] = 'dage'
        metadata['home'] = 'tianjin'
        metadata['age'] = '18'
        mimetype = 'text/plain'
          
        scs.putFile(key=self.object_key, filePath=self.local_file_name, acl=canned_acl
                    , metadata=metadata, mimetype=mimetype)
  
        scsResponse = scs.get(self.object_key)
        CHUNK = 16 * 1024
        file_content = ''
        from sinastorage.vendored import six
        while True:
            chunk = scsResponse.read(CHUNK)
            if not chunk: break
            if isinstance(chunk, six.text_type):
                file_content += chunk
            else:
                file_content += chunk.decode("utf-8")
        #assert file_content
#         self.assertEqual(content, file_content, 'The uploaded file content is not metch local.%s'%file_content)
        #assert metadata
        self.assertEqual(metadata['author'], scsResponse.responseHeaders['x-amz-meta-author'], 'The response metadata[\'author\'] is not match')
        self.assertEqual(metadata['home'], scsResponse.responseHeaders['x-amz-meta-home'], 'The response metadata[\'home\'] is not match')
        self.assertEqual(metadata['age'], scsResponse.responseHeaders['x-amz-meta-age'], 'The response metadata[\'age\'] is not match')
        #assert content-type
        self.assertEqual(mimetype, scsResponse.responseHeaders['content-type'], 'The response content-type is not match')
        #assert acl
        aclResult = scs.acl_info(self.object_key)
        self.assertTrue(ACL.ACL_GROUP_ANONYMOUSE in aclResult['ACL'], 'The acl dose not contains GRPS000000ANONYMOUSE group')
        self.assertTrue(ACL.ACL_READ in aclResult['ACL'][ACL.ACL_GROUP_ANONYMOUSE], 'The acl GRPS000000ANONYMOUSE group hasn\'t read right')
        self.assertTrue(ACL.ACL_WRITE in aclResult['ACL'][ACL.ACL_GROUP_ANONYMOUSE], 'The acl GRPS000000ANONYMOUSE group hasn\'t write right')
 def test_get_file(self):
     scs = SCSBucket(self.bucket_name)
     try:
         scs.put_bucket('public-read-write')
     except:
         self.fail('create bucket:%s is failed'%self.bucket_name)
           
     scs.putFile(self.object_key, self.local_file_name)
       
     scsResponse = scs.get(self.object_key)
     CHUNK = 16 * 1024
     with open(self.local_file_name+'.downloaded', 'wb') as fp:
         while True:
             chunk = scsResponse.read(CHUNK)
             if not chunk: break
             fp.write(bytes(chunk) )
       
     import os
     self.assertTrue(os.path.exists(self.local_file_name+'.downloaded'), 'The download file dose not exists')
     self.assertEqual(str(os.stat(self.local_file_name).st_size), 
                      scsResponse.responseHeaders['content-length'], 'The download file size dose not match local file')
   def test_put_content(self):
       scs = SCSBucket(self.bucket_name)
       try:
           scs.put_bucket('public-read-write')
       except:
           self.fail('create bucket:%s is failed'%self.bucket_name)
       content = u'this is a file content text!!'
       scs.put(self.object_key, content)
 
       scsResponse = scs.get(self.object_key)
       CHUNK = 16 * 1024
       file_content = ''
       from sinastorage.vendored import six
       while True:
           chunk = scsResponse.read(CHUNK)
           if not chunk: break
           if isinstance(chunk, six.text_type):
               file_content += chunk
           else:
               file_content += chunk.decode("utf-8")
       self.assertEqual(content, file_content, 'The uploaded file content is not match local.%s'%file_content)