From b5cf298b493b71402412cb670dd7b541e3bde251 Mon Sep 17 00:00:00 2001 From: Mike Shoup Date: Sun, 7 Jul 2019 08:28:22 -0600 Subject: [PATCH] Abort w/ 400 is view is not found --- src/humulus/recipes.py | 10 ++++++++-- tests/test_recipes.py | 4 ++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/humulus/recipes.py b/src/humulus/recipes.py index cda4a3d..d147532 100644 --- a/src/humulus/recipes.py +++ b/src/humulus/recipes.py @@ -17,7 +17,8 @@ import json from decimal import Decimal -from flask import (Blueprint, flash, redirect, render_template, jsonify, +import requests +from flask import (abort, Blueprint, flash, redirect, render_template, jsonify, request, url_for) from flask_wtf import FlaskForm from flask_wtf.file import FileField, FileRequired @@ -262,11 +263,16 @@ def index(): ['true', 'yes'] ) sort_by = request.args.get('sort_by', default='name', type=str) + view = get_view('_design/recipes', 'by-{}'.format(sort_by)) + try: + rows = view(include_docs=True, descending=descending)['rows'] + except requests.exceptions.HTTPError: + abort(400) return render_template( 'recipes/index.html', - rows=view(include_docs=True, descending=descending)['rows'], + rows=rows, descending=descending, sort_by=sort_by ) diff --git a/tests/test_recipes.py b/tests/test_recipes.py index d6d2f41..43f2c2f 100644 --- a/tests/test_recipes.py +++ b/tests/test_recipes.py @@ -22,6 +22,10 @@ from humulus.recipes import FermentableForm, HopForm, RecipeForm, YeastForm def test_index(client): """Test success in retrieving index.""" + # Test for bad request + response = client.get('/recipes/?sort_by=foobar') + assert response.status_code == 400 + # Verify defaults response = client.get('/recipes/') assert response.status_code == 200