async def _create_blob(self, stream): blob_stream = streams.JSONStream({ 'encoding': 'base64', 'content': streams.Base64EncodeStream(stream), }) sha1_calculator = streams.HashStreamWriter(hashlib.sha1) stream.add_writer('sha1', sha1_calculator) git_blob_header = 'blob {}\0'.format(str(stream.size)) sha1_calculator.write(git_blob_header.encode('utf-8')) resp = await self.make_request( 'POST', self.build_repo_url('git', 'blobs'), data=blob_stream, headers={ 'Content-Type': 'application/json', 'Content-Length': str(blob_stream.size), }, expects=(201, ), throws=exceptions.UploadError, ) blob_metadata = await resp.json() if stream.writers['sha1'].hexdigest != blob_metadata['sha']: raise exceptions.UploadChecksumMismatchError() return blob_metadata
def test_single_element_strings(self): data = { 'key': 'value' } stream = streams.JSONStream(data) read = yield from stream.read() assert data == json.loads(read.decode('utf-8'))
def test_other_streams(self): stream = streams.JSONStream({ 'justAStream': streams.StringStream('These are some words') }) read = yield from stream.read() assert json.loads(read.decode('utf-8')) == { 'justAStream': 'These are some words' }
def test_github_at_once(self): stream = streams.JSONStream({ 'encoding': 'base64', 'content': streams.Base64EncodeStream(streams.StringStream('These are some words')), }) buffer = yield from stream.read() assert json.loads(buffer.decode('utf-8')) == { 'encoding': 'base64', 'content': 'VGhlc2UgYXJlIHNvbWUgd29yZHM=' }
def test_multielement(self): data = { 'key': 'value', 'json': 'has', 'never': 'looked', 'this': 'cool' } stream = streams.JSONStream(data) read = yield from stream.read() assert data == json.loads(read.decode('utf-8'))
def test_other_streams_1_at_a_time(self): stream = streams.JSONStream({ 'justAStream': streams.StringStream('These are some words') }) buffer = b'' chunk = yield from stream.read(1) while chunk: buffer += chunk chunk = yield from stream.read(1) assert json.loads(buffer.decode('utf-8')) == { 'justAStream': 'These are some words' }
async def test_github(self): stream = streams.JSONStream({ 'encoding': 'base64', 'content': streams.Base64EncodeStream(streams.StringStream('These are some words')), }) buffer = b'' chunk = await stream.read(1) while chunk: buffer += chunk chunk = await stream.read(1) assert json.loads(buffer.decode('utf-8')) == { 'encoding': 'base64', 'content': 'VGhlc2UgYXJlIHNvbWUgd29yZHM=' }
def _create_blob(self, stream): blob_stream = streams.JSONStream({ 'encoding': 'base64', 'content': streams.Base64EncodeStream(stream), }) resp = yield from self.make_request( 'POST', self.build_repo_url('git', 'blobs'), data=blob_stream, headers={ 'Content-Type': 'application/json', 'Content-Length': str(blob_stream.size), }, expects=(201, ), throws=exceptions.UploadError, ) return (yield from resp.json())