summaryrefslogtreecommitdiff
path: root/tests/regressiontests/comment_tests
diff options
context:
space:
mode:
authorErik Romijn <eromijn@solidlinks.nl>2013-02-24 13:20:41 +0100
committerErik Romijn <eromijn@solidlinks.nl>2013-02-24 13:58:38 +0100
commitade992c61e15fbc83d87bfc688c0f844b6ef19fd (patch)
tree896a14f588761de03761b1bfe5abba9b2595ced8 /tests/regressiontests/comment_tests
parente4ee3d8fcac987bc91ab9c559f39f52949227b76 (diff)
Fixed #16302 -- Ensure contrib.comments is IPv6 capable
Changed the ip_address field for Comment to GenericIPAddressField. Added instructions to the release notes on how to update the schema of existing databases.
Diffstat (limited to 'tests/regressiontests/comment_tests')
-rw-r--r--tests/regressiontests/comment_tests/tests/comment_view_tests.py34
1 files changed, 32 insertions, 2 deletions
diff --git a/tests/regressiontests/comment_tests/tests/comment_view_tests.py b/tests/regressiontests/comment_tests/tests/comment_view_tests.py
index 5c1954026d..0d994d3af8 100644
--- a/tests/regressiontests/comment_tests/tests/comment_view_tests.py
+++ b/tests/regressiontests/comment_tests/tests/comment_view_tests.py
@@ -101,13 +101,43 @@ class CommentViewTests(CommentTestCase):
settings.DEBUG = olddebug
def testCreateValidComment(self):
+ address = "1.2.3.4"
a = Article.objects.get(pk=1)
data = self.getValidData(a)
- self.response = self.client.post("/post/", data, REMOTE_ADDR="1.2.3.4")
+ self.response = self.client.post("/post/", data, REMOTE_ADDR=address)
self.assertEqual(self.response.status_code, 302)
self.assertEqual(Comment.objects.count(), 1)
c = Comment.objects.all()[0]
- self.assertEqual(c.ip_address, "1.2.3.4")
+ self.assertEqual(c.ip_address, address)
+ self.assertEqual(c.comment, "This is my comment")
+
+ def testCreateValidCommentIPv6(self):
+ """
+ Test creating a valid comment with a long IPv6 address.
+ Note that this test should fail when Comment.ip_address is an IPAddress instead of a GenericIPAddress,
+ but does not do so on SQLite or PostgreSQL, because they use the TEXT and INET types, which already
+ allow storing an IPv6 address internally.
+ """
+ address = "2a02::223:6cff:fe8a:2e8a"
+ a = Article.objects.get(pk=1)
+ data = self.getValidData(a)
+ self.response = self.client.post("/post/", data, REMOTE_ADDR=address)
+ self.assertEqual(self.response.status_code, 302)
+ self.assertEqual(Comment.objects.count(), 1)
+ c = Comment.objects.all()[0]
+ self.assertEqual(c.ip_address, address)
+ self.assertEqual(c.comment, "This is my comment")
+
+ def testCreateValidCommentIPv6Unpack(self):
+ address = "::ffff:18.52.18.52"
+ a = Article.objects.get(pk=1)
+ data = self.getValidData(a)
+ self.response = self.client.post("/post/", data, REMOTE_ADDR=address)
+ self.assertEqual(self.response.status_code, 302)
+ self.assertEqual(Comment.objects.count(), 1)
+ c = Comment.objects.all()[0]
+ # We trim the '::ffff:' bit off because it is an IPv4 addr
+ self.assertEqual(c.ip_address, address[7:])
self.assertEqual(c.comment, "This is my comment")
def testPostAsAuthenticatedUser(self):