Python rest_framework.status 模块,HTTP_302_FOUND 实例源码
我们从Python开源项目中,提取了以下14个代码示例,用于说明如何使用rest_framework.status.HTTP_302_FOUND。
def test_success(self):
"""
Test /pearson/success URL
"""
response = self.client.get('/pearson/success/')
assert response.status_code == status.HTTP_302_FOUND
assert response.url == "/dashboard?exam=success"
def test_error(self):
"""
Test /pearson/error URL
"""
response = self.client.get('/pearson/error/')
assert response.status_code == status.HTTP_302_FOUND
assert response.url == "/dashboard?exam=error"
def test_timeout(self):
"""
Test /pearson/error URL
"""
response = self.client.get('/pearson/timeout/')
assert response.status_code == status.HTTP_302_FOUND
assert response.url == "/dashboard?exam=timeout"
def test_logout(self):
"""
Test /pearson/logout URL
"""
response = self.client.get('/pearson/logout/')
assert response.status_code == status.HTTP_302_FOUND
assert response.url == "/dashboard?exam=logout"
def render(self, data, accepted_media_type=None, renderer_context=None):
self.accepted_media_type = accepted_media_type or ''
self.renderer_context = renderer_context or {}
response = renderer_context['response']
request = renderer_context['request']
view = self.renderer_context['view']
if response.status_code == status.HTTP_400_BAD_REQUEST:
# Errors still need to display the list or detail information.
# The only way we can get at that is to simulate a GET request.
self.error_form = self.get_rendered_html_form(data, view, request.method, request)
self.error_title = {'POST': 'Create', 'PUT': 'Edit'}.get(request.method, 'Errors')
with override_method(view, request, 'GET') as request:
response = view.get(request, *view.args, **view.kwargs)
data = response.data
template = loader.get_template(self.template)
context = self.get_context(data, accepted_media_type, renderer_context)
ret = template_render(template, context, request=renderer_context['request'])
# Creation and deletion should use redirects in the admin style.
if (response.status_code == status.HTTP_201_CREATED) and ('Location' in response):
response.status_code = status.HTTP_302_FOUND
response['Location'] = request.build_absolute_uri()
ret = ''
if response.status_code == status.HTTP_204_NO_CONTENT:
response.status_code = status.HTTP_302_FOUND
try:
# Attempt to get the parent breadcrumb URL.
response['Location'] = self.get_breadcrumbs(request)[-2][1]
except KeyError:
# Otherwise reload current URL to get a 'Not Found' page.
response['Location'] = request.full_path
ret = ''
return ret
def test_index(client):
"""Test index anonymous"""
response = client.get(reverse('index'))
assert response.status_code == status.HTTP_302_FOUND
assert response.url == reverse('collection-react-view')
def test_fb_login(self):
url = reverse('fb-login')
r = self.client.get(url)
self.assertEqual(r.status_code, status.HTTP_302_FOUND)
def test_cannot_access_hard_login_page_while_soft_logged_in(self):
self.client.force_login(self.person.role, self.soft_backend)
response = self.client.get(reverse('create_event'))
self.assertRedirects(
response, reverse('oauth_redirect_view') + '?next=' + reverse('create_event'),
target_status_code=status.HTTP_302_FOUND
)
def test_unsubscribe_redirects_to_message_preferences_when_logged(self):
message_preferences_path = reverse('message_preferences')
unsubscribe_path = reverse('unsubscribe')
self.client.force_login(self.person.role)
response = self.client.get(unsubscribe_path)
self.assertEqual(response.status_code, status.HTTP_302_FOUND)
target_url = urlparse(response.url)
self.assertEqual(target_url.path, message_preferences_path)
def test_free_product(self):
"""Full checkout process using minimal api calls"""
product = self.create_product(price=D('0.00'))
resp = self.do_get_basket()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
basket_id = resp.data['id']
resp = self.do_add_to_basket(product.id)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
resp = self.do_checkout(basket_id)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
order_number = resp.data['number']
resp = self.do_fetch_payment_states()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.data['order_status'], 'Pending')
self.assertEqual(resp.data['payment_method_states']['cybersource']['required_action']['name'], 'get-token')
action = resp.data['payment_method_states']['cybersource']['required_action']
resp = self.do_cs_get_token(action['url'], action['fields'])
self.assertEqual(resp.status_code, status.HTTP_302_FOUND)
resp = self.do_fetch_payment_states()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.data['order_status'], 'Pending')
self.assertEqual(resp.data['payment_method_states']['cybersource']['required_action']['name'], 'authorize')
action = resp.data['payment_method_states']['cybersource']['required_action']
resp = self.do_cs_auth(action['url'], action['fields'])
self.assertEqual(resp.status_code, status.HTTP_302_FOUND)
resp = self.do_fetch_payment_states()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.data['order_status'], 'Authorized')
self.assertEqual(resp.data['payment_method_states']['cybersource']['amount'], '0.00')
self.check_finished_order(order_number, product.id)
def test_auth(self):
response = self.client.get(self.url)
self.assertEqual(response.status_code, status.HTTP_302_FOUND)
def test_checkout_process(self):
"""Full checkout process using minimal api calls"""
product = self.create_product()
resp = self.do_get_basket()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
basket_id = resp.data['id']
resp = self.do_add_to_basket(product.id)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
resp = self.do_checkout(basket_id)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
order_number = resp.data['number']
resp = self.do_fetch_payment_states()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.data['order_status'], 'Pending')
self.assertEqual(resp.data['payment_method_states']['cybersource']['status'], 'Pending')
self.assertEqual(resp.data['payment_method_states']['cybersource']['amount'], '10.00')
self.assertEqual(resp.data['payment_method_states']['cybersource']['required_action']['name'], 'get-token')
action = resp.data['payment_method_states']['cybersource']['required_action']
resp = self.do_cs_get_token(action['url'], action['fields'])
self.assertEqual(resp.status_code, status.HTTP_302_FOUND)
resp = self.do_fetch_payment_states()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.data['order_status'], 'Pending')
self.assertEqual(resp.data['payment_method_states']['cybersource']['status'], 'Pending')
self.assertEqual(resp.data['payment_method_states']['cybersource']['amount'], '10.00')
self.assertEqual(resp.data['payment_method_states']['cybersource']['required_action']['name'], 'authorize')
action = resp.data['payment_method_states']['cybersource']['required_action']
resp = self.do_cs_auth(action['url'], action['fields'])
self.assertEqual(resp.status_code, status.HTTP_302_FOUND)
resp = self.do_fetch_payment_states()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.data['order_status'], 'Authorized')
self.assertEqual(resp.data['payment_method_states']['cybersource']['status'], 'Complete')
self.assertEqual(resp.data['payment_method_states']['cybersource']['amount'], '10.00')
self.assertIsNone(resp.data['payment_method_states']['cybersource']['required_action'])
self.check_finished_order(order_number, product.id)
def test_add_product_during_auth(self):
"""Test attempting to add a product during the authorize flow"""
product = self.create_product()
resp = self.do_get_basket()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
basket_id = resp.data['id']
# Adding a product here should succeed
resp = self.do_add_to_basket(product.id)
basket1 = resp.data['id']
self.assertEqual(resp.status_code, status.HTTP_200_OK)
resp = self.do_checkout(basket_id)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
order_number = resp.data['number']
# Adding a product here should go to a new basket, not the one we're auth'ing
resp = self.do_add_to_basket(product.id)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
basket2 = resp.data['id']
self.assertNotEqual(basket1, basket2)
# Finish checkout process
resp = self.do_fetch_payment_states()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.data['order_status'], 'Pending')
self.assertEqual(resp.data['payment_method_states']['cybersource']['required_action']['name'], 'get-token')
action = resp.data['payment_method_states']['cybersource']['required_action']
resp = self.do_cs_get_token(action['url'], action['fields'])
self.assertEqual(resp.status_code, status.HTTP_302_FOUND)
resp = self.do_fetch_payment_states()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.data['order_status'], 'Pending')
self.assertEqual(resp.data['payment_method_states']['cybersource']['required_action']['name'], 'authorize')
action = resp.data['payment_method_states']['cybersource']['required_action']
resp = self.do_cs_auth(action['url'], action['fields'])
self.assertEqual(resp.status_code, status.HTTP_302_FOUND)
resp = self.do_fetch_payment_states()
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.data['order_status'], 'Authorized')
self.check_finished_order(order_number, product.id)
# Adding a product here should go to basket2, not basket1
resp = self.do_add_to_basket(product.id)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
basket3 = resp.data['id']
self.assertEqual(basket2, basket3)
def test_invalid_values(self):
resource_name = 'rotted-french-fries'
handler = Handler('test_invalid_values')
def made_to_fail(order_uuid, **kwargs):
order = Order.objects.get(uuid=order_uuid)
with fail_on_error(order, 'msg', status='failed'):
raise Exception('I was made to fail')
# Register invalid call back (logged through logging/error)
dispatcher.register(resource_name, made_to_fail, 'queued')
dispatcher.register(resource_name, handler.failed_task, 'failed')
# Place an invalid order
res = self.client.post(
reverse('async-rest:place-order', kwargs={'resource_name':resource_name}),
{
'context': {}
},
format='json'
)
self.assertEqual(res.status_code, status.HTTP_302_FOUND)
# Retrieve order and get status
res = self.client.get(res.url)
# Test assertions
self.assertEqual(res.data['status'], 'failed')
self.assertEqual(handler.count, 1)
# Place another invalid order
res = self.client.post(
reverse('async-rest:place-order', kwargs={'resource_name':resource_name}),
{
'context': '"size": "XL"'
},
format='json'
)
# Retrieve error
context = res.data.get('context')
self.assertIsNotNone(context)
self.assertTrue(context[0].endswith('is not a valid JSON string.'))