34 lines
836 B
Python
34 lines
836 B
Python
|
import os
|
||
|
from textwrap import dedent
|
||
|
from sympy.external import import_module
|
||
|
from sympy.testing.pytest import skip
|
||
|
from sympy.utilities.mathml import apply_xsl
|
||
|
|
||
|
|
||
|
|
||
|
lxml = import_module('lxml')
|
||
|
|
||
|
path = os.path.abspath(os.path.join(os.path.dirname(__file__), "test_xxe.py"))
|
||
|
|
||
|
|
||
|
def test_xxe():
|
||
|
assert os.path.isfile(path)
|
||
|
if not lxml:
|
||
|
skip("lxml not installed.")
|
||
|
|
||
|
mml = dedent(
|
||
|
rf"""
|
||
|
<!--?xml version="1.0" ?-->
|
||
|
<!DOCTYPE replace [<!ENTITY ent SYSTEM "file://{path}"> ]>
|
||
|
<userInfo>
|
||
|
<firstName>John</firstName>
|
||
|
<lastName>&ent;</lastName>
|
||
|
</userInfo>
|
||
|
"""
|
||
|
)
|
||
|
xsl = 'mathml/data/simple_mmlctop.xsl'
|
||
|
|
||
|
res = apply_xsl(mml, xsl)
|
||
|
assert res == \
|
||
|
'<?xml version="1.0"?>\n<userInfo>\n<firstName>John</firstName>\n<lastName/>\n</userInfo>\n'
|