diff --git a/ckan/new_tests/controllers/test_package.py b/ckan/new_tests/controllers/test_package.py index 068de8957a4..cb9051ff532 100644 --- a/ckan/new_tests/controllers/test_package.py +++ b/ckan/new_tests/controllers/test_package.py @@ -43,11 +43,7 @@ def test_resource_form_renders(self): form['name'] = u'resource-form-renders' form['title'] = u'Resource form renders' - response = webtest_submit(form, 'save', status=302, extra_environ=env) - response = self.app.get( - url=dict(response.headers)['Location'], - extra_environ=env, - ) + response = self._submit_and_follow(form, env, 'save') assert_true('resource-edit' in response.forms) def test_previous_button_works(self): @@ -61,18 +57,10 @@ def test_previous_button_works(self): form['name'] = u'previous-button-works' form['title'] = u'Previous button works' - response = webtest_submit(form, 'save', status=302, extra_environ=env) - response = self.app.get( - url=dict(response.headers)['Location'], - extra_environ=env, - ) + response = self._submit_and_follow(form, env, 'save') form = response.forms['resource-edit'] - response = webtest_submit(form, 'save', value='go-dataset', - status=302, extra_environ=env) - response = self.app.get( - url=dict(response.headers)['Location'], - extra_environ=env, - ) + + response = self._submit_and_follow(form, env, 'save', 'go-dataset') assert_true('dataset-edit' in response.forms) def test_previous_button_populates_form(self): @@ -86,18 +74,10 @@ def test_previous_button_populates_form(self): form['name'] = u'previous-button-populates-form' form['title'] = u'Previous button populates form' - response = webtest_submit(form, 'save', status=302, extra_environ=env) - response = self.app.get( - url=dict(response.headers)['Location'], - extra_environ=env, - ) + response = self._submit_and_follow(form, env, 'save') form = response.forms['resource-edit'] - response = webtest_submit(form, 'save', value='go-dataset', - status=302, extra_environ=env) - response = self.app.get( - url=dict(response.headers)['Location'], - extra_environ=env, - ) + + response = self._submit_and_follow(form, env, 'save', 'go-dataset') form = response.forms['dataset-edit'] assert_true('title' in form.fields) assert_equal(form['title'].value, u'Previous button populates form') diff --git a/ckan/new_tests/helpers.py b/ckan/new_tests/helpers.py index 214b117a492..8a306d64d76 100644 --- a/ckan/new_tests/helpers.py +++ b/ckan/new_tests/helpers.py @@ -177,6 +177,23 @@ def teardown_class(cls): config.clear() config.update(cls._original_config) + def _submit_and_follow(self, form, extra_environ, name=None, + value=None, **args): + ''' + Call webtest_submit with name/value passed expecting a redirect + and return the response from following that redirect. + ''' + response = webtest_submit(form, name, value=value, + extra_environ=extra_environ, **args) + if response.status != 302: + raise ValueError('response was not a redirect') + for header, header_value in response.headers: + if header == 'Location': + break + else: + raise ValueError('redirect response has no Location header') + return self.app.get(url=header_value, extra_environ=extra_environ) + ## FIXME: remove webtest_* functions below when we upgrade webtest