From 0b31a04a38b3a2819ab166c69d31c122723a33af Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Mon, 23 Jun 2014 16:46:58 +0000 Subject: Improve move-to-top/bottom API call error messages --- lorrycontroller/movetopbottom.py | 12 ++++++++++++ yarns.webapp/030-queue-management.yarn | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lorrycontroller/movetopbottom.py b/lorrycontroller/movetopbottom.py index 7c1664a..2aeff98 100644 --- a/lorrycontroller/movetopbottom.py +++ b/lorrycontroller/movetopbottom.py @@ -26,13 +26,25 @@ class MoveBase(object): def run(self, **kwargs): logging.info('%s %s called', self.http_method, self.path) path = bottle.request.forms.path + if not path: + return 'Form field path was not given' statedb = self.open_statedb() with statedb: + if not self.lorry_exists(statedb, path): + return 'Lorry %s does not exist' % path lorry_infos = statedb.get_all_lorries_info() timestamp = self.get_new_timestamp(lorry_infos) statedb.set_lorry_last_run(path, timestamp) return self.msg % path + def lorry_exists(self, statedb, path): + try: + statedb.get_lorry_info(path) + except lorrycontroller.LorryNotFoundError: + return False + else: + return True + class MoveToTop(MoveBase, lorrycontroller.LorryControllerRoute): diff --git a/yarns.webapp/030-queue-management.yarn b/yarns.webapp/030-queue-management.yarn index 9fca4fb..ebf50af 100644 --- a/yarns.webapp/030-queue-management.yarn +++ b/yarns.webapp/030-queue-management.yarn @@ -101,6 +101,18 @@ Add two Lorries, then make sure they can reordered at will. AND admin makes request GET /1.0/list-queue THEN response has queue set to ["upstream/bar", "upstream/foo"] +If trying to move a lorry that doesn't exist, make sure there's an +appropriate error message. + + WHEN admin makes request POST /1.0/move-to-bottom with path=upstream/alfred + THEN response matches "upstream/alfred does not exist" + +Likewise, if we forget to give a path argument, there should be an +error message. + + WHEN admin makes request POST /1.0/move-to-bottom + THEN response matches "path.*not given" + Finally, clean up. FINALLY WEBAPP terminates -- cgit v1.2.1