summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2014-06-23 16:46:58 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2014-06-23 16:48:25 +0000
commit0b31a04a38b3a2819ab166c69d31c122723a33af (patch)
treef5c1d9f6ab6b5b5fa2ceb20dd493797725f96e8e
parente530deefe02b7f6de2748f7d99f713bc9d4abfe5 (diff)
downloadlorry-controller-liw/move-error-msgs.tar.gz
Improve move-to-top/bottom API call error messagesliw/move-error-msgs
-rw-r--r--lorrycontroller/movetopbottom.py12
-rw-r--r--yarns.webapp/030-queue-management.yarn12
2 files changed, 24 insertions, 0 deletions
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