# 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 """

This is a test html snippet

Test link 1 Test link 2 Test link 3
Please mail us at email
""" 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)