portfolio: pass text to json (#36515)

This commit is contained in:
Frédéric Péters 2019-11-18 18:05:31 +01:00
parent 0be6a94f13
commit 4aa96b93c5
2 changed files with 15 additions and 8 deletions

View File

@ -4,6 +4,7 @@ import datetime
import json
import pytest
import hashlib
import locale
import os
import re
import time
@ -17,6 +18,7 @@ try:
except ImportError:
Image = None
from django.utils import six
from django.utils.six import StringIO, BytesIO
from django.utils.six.moves.urllib import parse as urlparse
@ -3552,8 +3554,15 @@ def test_formdata_generated_document_odt_to_pdf_download_push_to_portfolio(pub,
http_post_request.return_value = None, 200, 'null', None
resp = resp.form.submit('button_export_to')
assert http_post_request.call_count == 1
assert ("file 'template.pdf' pushed to portfolio of 'Foo Bar\\xc3\\xa9'"
== caplog.records[-1].message)
if six.PY2:
assert ("file 'template.pdf' pushed to portfolio of 'Foo Bar\\xc3\\xa9'"
== caplog.records[-1].message)
elif locale.getpreferredencoding() == 'UTF-8':
assert ("file 'template.pdf' pushed to portfolio of 'Foo Baré'"
== caplog.records[-1].message)
else: # Python < 3.7
assert ("file 'template.pdf' pushed to portfolio of 'Foo Bar\xe9'"
== caplog.records[-1].message)
resp = resp.follow() # $form/$id/create_doc
resp = resp.follow() # $form/$id/create_doc/
@ -3565,8 +3574,7 @@ def test_formdata_generated_document_odt_to_pdf_download_push_to_portfolio(pub,
http_post_request.return_value = None, 400, 'null', None # fail
resp = resp.form.submit('button_export_to')
assert http_post_request.call_count == 1
assert ("file 'template.pdf' failed to be pushed to portfolio of 'Foo Bar\\xc3\\xa9'"
== caplog.records[-1].message)
assert caplog.records[-1].message.startswith("file 'template.pdf' failed to be pushed to portfolio of 'Foo")
# failed to push to portfolio, but document is here
resp = resp.follow() # $form/$id/create_doc
@ -3587,9 +3595,8 @@ def test_formdata_generated_document_odt_to_pdf_download_push_to_portfolio(pub,
assert payload['file_name'] == 'template.pdf'
assert payload['user_email'] == 'foo@localhost'
assert payload['origin'] == 'example.net'
assert payload['file_b64_content'].decode('base64').startswith('%PDF')
assert ("file 'template.pdf' pushed to portfolio of 'Foo Bar\\xc3\\xa9'"
== caplog.records[-1].message)
assert base64.decodestring(force_bytes(payload['file_b64_content'])).startswith(b'%PDF')
assert caplog.records[-1].message.startswith("file 'template.pdf' pushed to portfolio of 'Foo")
assert resp.location == form_location
resp = resp.follow() # back to form page

View File

@ -92,7 +92,7 @@ def push_document(user, filename, stream):
payload['origin'] = urlparse.urlparse(get_publisher().get_frontoffice_url()).netloc
payload['file_name'] = force_text(filename, charset)
stream.seek(0)
payload['file_b64_content'] = base64.b64encode(stream.read())
payload['file_b64_content'] = force_text(base64.b64encode(stream.read()))
async_post = fargo_post_json_async('/api/documents/push/', payload)
def afterjob(job):