Convert test for invalid comment id in url to integration test.
This commit is contained in:
parent
f0cea65bc2
commit
e57d3a2ad4
@ -1,70 +0,0 @@
|
|||||||
===================================
|
|
||||||
Dealing with faulty comment links
|
|
||||||
===================================
|
|
||||||
|
|
||||||
Make sure that calling specially crafted URLs doesn't break the conversation
|
|
||||||
view.
|
|
||||||
|
|
||||||
See also https://dev.plone.org/ticket/13327
|
|
||||||
|
|
||||||
|
|
||||||
Setting up and logging in
|
|
||||||
=========================
|
|
||||||
|
|
||||||
First we have to set up some things and login.
|
|
||||||
|
|
||||||
>>> app = layer['app']
|
|
||||||
>>> from plone.testing.z2 import Browser
|
|
||||||
>>> browser = Browser(app)
|
|
||||||
>>> browser.addHeader('Authorization', 'Basic admin:secret')
|
|
||||||
>>> portal = layer['portal']
|
|
||||||
>>> portal_url = 'http://nohost/plone'
|
|
||||||
|
|
||||||
As we're expecting to see 404s, the test should not break on HTTP errors.
|
|
||||||
|
|
||||||
>>> browser.raiseHttpErrors = False
|
|
||||||
|
|
||||||
Enable commenting.
|
|
||||||
|
|
||||||
>>> from zope.component import queryUtility
|
|
||||||
>>> from plone.registry.interfaces import IRegistry
|
|
||||||
>>> from plone.app.discussion.interfaces import IDiscussionSettings
|
|
||||||
>>> registry = queryUtility(IRegistry)
|
|
||||||
>>> settings = registry.forInterface(IDiscussionSettings)
|
|
||||||
>>> settings.globally_enabled = True
|
|
||||||
|
|
||||||
Create a public page with comments allowed.
|
|
||||||
|
|
||||||
>>> browser.open(portal_url)
|
|
||||||
>>> browser.getLink(id='document').click()
|
|
||||||
>>> browser.getControl(name='title').value = "Doc1"
|
|
||||||
>>> browser.getControl(name='allowDiscussion:boolean').value = True
|
|
||||||
>>> browser.getControl(name='form.button.save').click()
|
|
||||||
>>> urldoc1 = browser.url
|
|
||||||
|
|
||||||
Check that the form has been properly submitted
|
|
||||||
|
|
||||||
>>> browser.url
|
|
||||||
'http://nohost/plone/doc1'
|
|
||||||
|
|
||||||
|
|
||||||
Checking invalid comment links
|
|
||||||
==============================
|
|
||||||
|
|
||||||
URL has invalid comment id
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
Test a URL with a comment id that cannot be converted to long integer.
|
|
||||||
|
|
||||||
>>> url_invalid_comment_id = "%s/++conversation++default/ThisCantBeRight" % urldoc1
|
|
||||||
>>> browser.open(url_invalid_comment_id)
|
|
||||||
|
|
||||||
We should not get an error,
|
|
||||||
|
|
||||||
>>> "500 Internal Server Error" in str(browser.headers)
|
|
||||||
False
|
|
||||||
|
|
||||||
but we should get a 404:
|
|
||||||
|
|
||||||
>>> "404 Not Found" in str(browser.headers)
|
|
||||||
True
|
|
@ -699,6 +699,14 @@ class ConversationTest(unittest.TestCase):
|
|||||||
self.assertEqual('http://nohost/plone/doc1/++conversation++default',
|
self.assertEqual('http://nohost/plone/doc1/++conversation++default',
|
||||||
conversation.absolute_url())
|
conversation.absolute_url())
|
||||||
|
|
||||||
|
def test_unconvertible_id(self):
|
||||||
|
# make sure the conversation view doesn't break when given comment id
|
||||||
|
# can't be converted to long
|
||||||
|
|
||||||
|
conversation = self.portal.doc1.restrictedTraverse(
|
||||||
|
'++conversation++default/ThisCantBeRight')
|
||||||
|
self.assertEqual(conversation, None)
|
||||||
|
|
||||||
def test_parent(self):
|
def test_parent(self):
|
||||||
# Check that conversation has a content object as parent
|
# Check that conversation has a content object as parent
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ optionflags = (
|
|||||||
normal_testfiles = [
|
normal_testfiles = [
|
||||||
'functional_test_comments.txt',
|
'functional_test_comments.txt',
|
||||||
'functional_test_comment_review_workflow.txt',
|
'functional_test_comment_review_workflow.txt',
|
||||||
'functional_test_comment_url.txt',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user