您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 
 

67 行
2.0 KiB

  1. from __future__ import unicode_literals
  2. import frappe, unittest
  3. from werkzeug.wrappers import Request
  4. from werkzeug.test import EnvironBuilder
  5. from frappe.website import render
  6. def set_request(**kwargs):
  7. builder = EnvironBuilder(**kwargs)
  8. frappe.local.request = Request(builder.get_environ())
  9. def get_html_for_route(route):
  10. set_request(method='GET', path=route)
  11. response = render.render()
  12. html = frappe.safe_decode(response.get_data())
  13. return html
  14. class TestWebsite(unittest.TestCase):
  15. def test_page_load(self):
  16. frappe.set_user('Guest')
  17. set_request(method='POST', path='login')
  18. response = render.render()
  19. self.assertEquals(response.status_code, 200)
  20. html = frappe.safe_decode(response.get_data())
  21. self.assertTrue('/* login-css */' in html)
  22. self.assertTrue('// login.js' in html)
  23. self.assertTrue('<!-- login.html -->' in html)
  24. frappe.set_user('Administrator')
  25. def test_redirect(self):
  26. import frappe.hooks
  27. frappe.hooks.website_redirects = [
  28. dict(source=r'/testfrom', target=r'://testto1'),
  29. dict(source=r'/testfromregex.*', target=r'://testto2'),
  30. dict(source=r'/testsub/(.*)', target=r'://testto3/\1')
  31. ]
  32. frappe.cache().delete_key('app_hooks')
  33. frappe.cache().delete_key('website_redirects')
  34. set_request(method='GET', path='/testfrom')
  35. response = render.render()
  36. self.assertEquals(response.status_code, 301)
  37. self.assertEquals(response.headers.get('Location'), r'://testto1')
  38. set_request(method='GET', path='/testfromregex/test')
  39. response = render.render()
  40. self.assertEquals(response.status_code, 301)
  41. self.assertEquals(response.headers.get('Location'), r'://testto2')
  42. set_request(method='GET', path='/testsub/me')
  43. response = render.render()
  44. self.assertEquals(response.status_code, 301)
  45. self.assertEquals(response.headers.get('Location'), r'://testto3/me')
  46. set_request(method='GET', path='/test404')
  47. response = render.render()
  48. self.assertEquals(response.status_code, 404)
  49. delattr(frappe.hooks, 'website_redirects')
  50. frappe.cache().delete_key('app_hooks')