Skip to content

Commit 06f699e

Browse files
authored
Merge pull request #230 from novafloss/optional-trailing-slash
Make trailing slash not mandatory for the API
2 parents 72e75ae + cc16cc3 commit 06f699e

File tree

3 files changed

+53
-7
lines changed

3 files changed

+53
-7
lines changed

CHANGELOG.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ ChangeLog
55
master (unreleased)
66
===================
77

8-
Nothing here yet.
8+
- Make trailing slash not mandatory for the API (#75)
99

1010
Release 0.11.0 (2017-05-10)
1111
===========================

demo/tests/tests_integration.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,18 @@ def test_simple(self):
107107
field.accesses.filter(access_id=access, level=level).exists()
108108
)
109109

110+
def test_trailing_slash(self):
111+
url = reverse('formidable:form_create')
112+
self.assertFalse(url.endswith('/'))
113+
res = self.client.post(
114+
url, form_data, format='json'
115+
)
116+
self.assertEquals(res.status_code, 201)
117+
res = self.client.post(
118+
url + '/', form_data, format='json'
119+
)
120+
self.assertEquals(res.status_code, 201)
121+
110122
def test_fields_slug(self):
111123
data = deepcopy(form_data)
112124
# duplicate field
@@ -180,6 +192,40 @@ def test_simple(self):
180192
self.assertEquals(formidable.description, 'edited description')
181193
self.assertEquals(Formidable.objects.count(), initial_count)
182194

195+
def test_trailing_slash_on_put(self):
196+
data = {
197+
'label': 'edited label',
198+
'description': 'edited description',
199+
'fields': []
200+
}
201+
url = self.edit_url
202+
self.assertFalse(url.endswith('/'))
203+
res = self.client.put(
204+
url, data
205+
)
206+
self.assertEquals(res.status_code, 200)
207+
res = self.client.put(
208+
url + '/', form_data, format='json'
209+
)
210+
self.assertEquals(res.status_code, 200)
211+
212+
def test_trailing_slash_on_get(self):
213+
data = {
214+
'label': 'edited label',
215+
'description': 'edited description',
216+
'fields': []
217+
}
218+
url = self.edit_url
219+
self.assertFalse(url.endswith('/'))
220+
res = self.client.get(
221+
url, data
222+
)
223+
self.assertEquals(res.status_code, 200)
224+
res = self.client.get(
225+
url + '/', form_data, format='json'
226+
)
227+
self.assertEquals(res.status_code, 200)
228+
183229
def test_update_simple_fields(self):
184230
field = self.form.fields.create(
185231
type_id='text', slug='textslug', label='mytext',

formidable/urls.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
from formidable import views
44

55
urlpatterns = [
6-
url(r'^forms/(?P<pk>\d+)/$', views.ContextFormDetail.as_view(),
6+
url(r'^forms/(?P<pk>\d+)/?$', views.ContextFormDetail.as_view(),
77
name='context_form_detail'),
8-
url(r'^forms/(?P<pk>\d+)/validate/$', views.ValidateView.as_view(),
8+
url(r'^forms/(?P<pk>\d+)/validate/?$', views.ValidateView.as_view(),
99
name='form_validation'),
10-
url(r'^builder/forms/(?P<pk>\d+)/$', views.FormidableDetail.as_view(),
10+
url(r'^builder/forms/(?P<pk>\d+)/?$', views.FormidableDetail.as_view(),
1111
name='form_detail'),
12-
url(r'^builder/forms/$', views.FormidableCreate.as_view(),
12+
url(r'^builder/forms/?$', views.FormidableCreate.as_view(),
1313
name='form_create'),
14-
url(r'^builder/accesses/$', views.AccessList.as_view(),
14+
url(r'^builder/accesses/?$', views.AccessList.as_view(),
1515
name='accesses_list'),
16-
url(r'^builder/presets', views.PresetsList.as_view(),
16+
url(r'^builder/presets/?$', views.PresetsList.as_view(),
1717
name='presets_list'),
1818
]

0 commit comments

Comments
 (0)