'''
Created on 2020-12-27
@author: wf
'''
import unittest
from frontend.wikicms import Frontend
from tests.test_webserver import TestWebServer
import getpass
from tests.basetest import Basetest
[docs]class TestFrontend(Basetest):
'''
test the frontend
'''
[docs] def setUp(self):
Basetest.setUp(self)
self.server=TestWebServer.initServer()
pass
[docs] def testWikiPage(self):
'''
test the route to page translation
'''
frontend=Frontend('cr')
routes=['/index.php/File:Link.png']
expectedList=['File:Link.png']
for i,route in enumerate(routes):
pageTitle=frontend.wikiPage(route)
if self.debug:
print (pageTitle)
expected=expectedList[i]
self.assertEqual(expected,pageTitle)
pass
[docs] def testProxy(self):
'''
test the proxy handling
'''
frontend=self.server.enableFrontend('sharks')
url="/images/wiki/thumb/6/62/IMG_0736_Shark.png/400px-IMG_0736_Shark.png"
self.assertTrue(frontend.needsProxy(url))
imageResponse=frontend.proxy(url)
self.assertFalse(imageResponse is None)
self.assertEqual("200 OK",imageResponse.status)
self.assertEqual(79499,len(imageResponse.data))
[docs] def testIssue18(self):
'''
https://github.com/BITPlan/pyWikiCMS/issues/18
image proxying should work #18
'''
frontend=self.server.enableFrontend('www')
url="/images/wiki/thumb/4/42/1738-006.jpg/400px-1738-006.jpg"
self.assertTrue(frontend.needsProxy(url))
imageResponse=frontend.render(url)
self.assertFalse(imageResponse is None)
self.assertEqual("200 OK",imageResponse.status)
self.assertEqual(33742,len(imageResponse.data))
[docs] def testIssue14(self):
'''
test Allow to use templates specified in Wiki
https://github.com/BITPlan/pyWikiCMS/issues/14
'''
# see e.g. http://wiki.bitplan.com/index.php/Property:Frame
frontend=self.server.enableFrontend('www')
pageTitle="Feedback"
frame=frontend.getFrame(pageTitle)
self.assertEqual("Contact",frame)
html=frontend.getContent(pageTitle)
if self.debug:
print(html)
[docs] def testIssue15(self):
'''
test Filter "edit" section buttons
see https://github.com/BITPlan/pyWikiCMS/issues/15
'''
frontend=self.server.enableFrontend('cr')
unfiltered="""<span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=...;action=edit&section=T-1" title="Edit section: ">edit</a><span class="mw-editsection-bracket">]</span></span>"""
filtered=frontend.doFilter(unfiltered,["editsection"])
if self.debug:
print(filtered)
self.assertFalse('''<span class="mw-editsection">''' in filtered)
pageTitle,content,error=frontend.getContent('Issue15')
self.assertEqual("Issue15",pageTitle)
self.assertIsNone(error)
if self.debug:
print(content)
self.assertFalse('''<span class="mw-editsection">''' in content)
[docs] def testIssue19(self):
'''
https://github.com/BITPlan/pyWikiCMS/issues/19
editsection filter should keep other span's untouched #19
'''
unfiltered="""<span class="mw-editsection">editsection</span><span class='image'>image section</span>"""
frontend=self.server.enableFrontend('cr')
filtered=frontend.doFilter(unfiltered,["editsection"])
#print(filtered)
self.assertTrue("""<span class="image">image section</span>""" in str(filtered))
[docs] def testIssue17(self):
'''
https://github.com/BITPlan/pyWikiCMS/issues/17
filter <html><body><div class="mw-parser-output">
'''
frontend=self.server.enableFrontend('cr')
unfiltered="""<html><body><div class="mw-parser-output">content</div></body></html>"""
filtered=frontend.doFilter(unfiltered,"mw-parser-output")
#self.debug=True
if self.debug:
print(filtered)
self.assertFalse("<html>" in filtered)
self.assertFalse("<body>" in filtered)
pageTitle,content,error=frontend.getContent('Issue17')
self.assertIsNone(error)
self.assertEqual("Issue17",pageTitle)
if self.debug:
print(content)
[docs] def testToReveal(self):
'''
test reveal handling
'''
wikihtml="""
<!DOCTYPE html>
<html>
<body>
<div>
<h2><span id="⌘⌘_Slide1"></span><span class="mw-headline" id=".E2.8C.98.E2.8C.98_Slide1">⌘⌘ Slide1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=RevealTest&action=edit&section=1" title="Edit section: ⌘⌘ Slide1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>Content for slide 1
</p>
<h2><span id="⌘⌘_Slide2"></span><span class="mw-headline" id=".E2.8C.98.E2.8C.98_Slide2">⌘⌘ Slide2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=RevealTest&action=edit&section=2" title="Edit section: ⌘⌘ Slide2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>Content for slide 2
</p>
</div>
</body>
<html>"""
frontend=self.server.enableFrontend('www')
html=frontend.toReveal(wikihtml)
if self.debug:
print(html)
[docs] def testFixHtml(self):
'''
test that hrefs, images src, srcset videos and objects are
modified from local-absolute urls to ones with "www"
'''
frontend=self.server.enableFrontend('www')
pageTitle,content,error=frontend.getContent("Welcome")
if error is not None:
print(error)
self.fail(error)
self.assertEqual(pageTitle,"Welcome")
if self.debug:
print(content)
self.assertFalse('''href="/index.php''' in content)
self.assertTrue('''href="/www/index.php''' in content)
self.assertFalse('''src="/images''' in content)
self.assertTrue('''src="/www/images''' in content)
self.assertFalse('''srcset="/images''' in content)
self.assertTrue('''srcset="/www/images''' in content)
pass
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()