Django

Code

Ticket #5982: 5982-r7023.diff

File 5982-r7023.diff, 2.8 kB (added by russellm, 11 months ago)

Test case for bug, against r7023

  • tests/regressiontests/test_client_regress/views.py

    old new  
    2424    return HttpResponse("Hello world") 
    2525get_view = login_required(get_view) 
    2626 
     27def view_with_argument(request, name): 
     28    """A view that takes a string argument 
     29     
     30    The purpose of this view is to check that if a space is provided in 
     31    the argument, the test framework unescapes the %20 before passing  
     32    the value to the view. 
     33    """ 
     34    if name == 'Arthur Dent': 
     35            return HttpResponse('Hi, Arthur') 
     36    else: 
     37            return HttpResponse('Howdy, %s' % name) 
     38                 
    2739def login_protected_redirect_view(request): 
    2840    "A view that redirects all requests to the GET view" 
    2941    return HttpResponseRedirect('/test_client_regress/get_view/') 
  • tests/regressiontests/test_client_regress/models.py

    old new  
    44""" 
    55from django.test import Client, TestCase 
    66from django.core import mail 
     7from django.core.urlresolvers import reverse 
    78import os 
    89 
    910class AssertContainsTests(TestCase): 
     
    261262        # Check that assertRedirects uses the original client, not the 
    262263        # default client. 
    263264        self.assertRedirects(response, "http://testserver/test_client_regress/get_view/") 
     265 
     266 
     267class URLEscapingTests(TestCase): 
     268    def test_simple_argument(self): 
     269        "Get a view that has a simple string argument" 
     270        response = self.client.get(reverse('arg_view', args=['Slartibartfast'])) 
     271        self.assertEqual(response.status_code, 200) 
     272        self.assertEqual(response.content, 'Howdy, Slartibartfast') 
     273 
     274    def test_argument_with_space(self): 
     275        "Get a view that has a string argument that requires escaping" 
     276        response = self.client.get(reverse('arg_view', args=['Arthur Dent'])) 
     277        self.assertEqual(response.status_code, 200) 
     278        self.assertEqual(response.content, 'Hi, Arthur') 
     279         
  • tests/regressiontests/test_client_regress/urls.py

    old new  
    55    (r'^no_template_view/$', views.no_template_view), 
    66    (r'^file_upload/$', views.file_upload_view), 
    77    (r'^get_view/$', views.get_view), 
     8    url(r'^arg_view/(?P<name>.+)/$', views.view_with_argument, name='arg_view'), 
    89    (r'^login_protected_redirect_view/$', views.login_protected_redirect_view) 
    910)