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()
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}"),))