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
Exemple #2
0
    def test_read(self):
        data = b'this is a test'
        expected = base64.b64encode(data)
        stream = streams.Base64EncodeStream(streams.StringStream(data))

        actual = yield from stream.read()

        assert expected == actual
    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='
        }
Exemple #4
0
    def test_chunking(self):
        for chunk_size in range(1, 10):
            data = b'the ode to carp'
            expected = streams.StringStream(base64.b64encode(data))
            stream = streams.Base64EncodeStream(streams.StringStream(data))

            hoped = yield from expected.read(chunk_size)

            while hoped:
                actual = yield from stream.read(chunk_size)
                assert actual == hoped
                hoped = yield from expected.read(chunk_size)

            left_overs = yield from stream.read()

            assert left_overs == b''
    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 #6
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())
Exemple #7
0
    def test_size(self):
        data = b'the ode to carp'
        expected = base64.b64encode(data)
        stream = streams.Base64EncodeStream(streams.StringStream(data))

        assert len(expected) == int(stream.size)
Exemple #8
0
    def test_doesnt_crash_with_none(self):
        stream = streams.Base64EncodeStream(streams.StringStream(b''))
        data = yield from stream.read()

        assert data == b''