Exemple #1
0
    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='
        }
Exemple #8
0
    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())