Exemple #1
0
def test_media_upload(db):
    user, token = generate_user("tester")

    media_bearer_token = random_hex(32)

    with api_session(token) as api:
        res = api.InitiateMediaUpload(empty_pb2.Empty())

    params = parse_qs(urlparse(res.upload_url).query)
    data = urlsafe_b64decode(params["data"][0])

    response = media_pb2.UploadRequest.FromString(data)
    key = response.key

    filename = random_hex(32)

    req = media_pb2.UploadConfirmationReq(key=key, filename=filename)

    with session_scope() as session:
        # make sure it exists
        session.query(InitiatedUpload).filter(InitiatedUpload.key == key).one()

    with media_session(media_bearer_token) as media:
        res = media.UploadConfirmation(req)

    with session_scope() as session:
        # make sure it exists
        upload = (session.query(Upload).filter(Upload.key == key).filter(
            Upload.filename == filename).filter(
                Upload.creator_user_id == user.id).one())

    with session_scope() as session:
        # make sure it was deleted
        assert not session.query(InitiatedUpload).one_or_none()
Exemple #2
0
    def send_confirmation_to_main_server(key, filename):
        logger.warning(f"Notifying main server about new upload at {main_server_address}")

        if main_server_use_ssl:
            channel = grpc.secure_channel(main_server_address, grpc.ssl_channel_credentials())
        else:
            logger.warning("Connecting to main server insecurely!")
            channel = grpc.insecure_channel(main_server_address)

        media_stub = media_pb2_grpc.MediaStub(channel)
        req = media_pb2.UploadConfirmationReq(
            key=key,
            filename=filename,
        )
        media_stub.UploadConfirmation(req, metadata=(("authorization", f"Bearer {media_server_bearer_token}"),))