seitime-frappe/frappe/tests/test_pdf.py

52 lines
1.5 KiB
Python

# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# License: MIT. See LICENSE
import io
from pypdf import PdfReader
import frappe
import frappe.utils.pdf as pdfgen
from frappe.tests.utils import FrappeTestCase
class TestPdf(FrappeTestCase):
@property
def html(self):
return """<style>
.print-format {
margin-top: 0mm;
margin-left: 10mm;
margin-right: 0mm;
}
</style>
<p>This is a test html snippet</p>
<div class="more-info">
<a href="http://test.com">Test link 1</a>
<a href="/about">Test link 2</a>
<a href="login">Test link 3</a>
<img src="/assets/frappe/test.jpg">
</div>
<div style="background-image: url('/assets/frappe/bg.jpg')">
Please mail us at <a href="mailto:test@example.com">email</a>
</div>"""
def runTest(self):
self.test_read_options_from_html()
def test_read_options_from_html(self):
_, html_options = pdfgen.read_options_from_html(self.html)
self.assertTrue(html_options["margin-top"] == "0")
self.assertTrue(html_options["margin-left"] == "10")
self.assertTrue(html_options["margin-right"] == "0")
def test_pdf_encryption(self):
password = "qwe"
pdf = pdfgen.get_pdf(self.html, options={"password": password})
reader = PdfReader(io.BytesIO(pdf))
self.assertTrue(reader.is_encrypted)
self.assertTrue(reader.decrypt(password))
def test_pdf_generation_as_a_user(self):
frappe.set_user("Administrator")
pdf = pdfgen.get_pdf(self.html)
self.assertTrue(pdf)