From 9938995e0587c80c45200c8ea10173535927eb62 Mon Sep 17 00:00:00 2001 From: Shawn Falkner-Horine Date: Mon, 25 Aug 2014 14:00:35 -0700 Subject: [PATCH] Error handling: Model-level validations, proper error responses. (added coverage for new instance status call) --- moto/ec2/models.py | 4 ++++ tests/test_ec2/test_instances.py | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/moto/ec2/models.py b/moto/ec2/models.py index 039362a92..2aebc463f 100644 --- a/moto/ec2/models.py +++ b/moto/ec2/models.py @@ -219,6 +219,10 @@ class InstanceBackend(object): if instance.id in instance_ids: result.append(instance) + # TODO: Trim error message down to specific invalid id. + if instance_ids and len(instance_ids) > len(result): + raise InvalidInstanceIdError(instance_ids) + return result def get_instance_by_id(self, instance_id): diff --git a/tests/test_ec2/test_instances.py b/tests/test_ec2/test_instances.py index f032924a1..9f93121c6 100644 --- a/tests/test_ec2/test_instances.py +++ b/tests/test_ec2/test_instances.py @@ -277,3 +277,10 @@ def test_describe_instance_status_with_instance_filter(): all_status = conn.get_all_instance_status(instance_ids=[instance.id]) len(all_status).should.equal(1) all_status[0].id.should.equal(instance.id) + + # Call get_all_instance_status with a bad id should raise an error + with assert_raises(EC2ResponseError) as cm: + conn.get_all_instance_status(instance_ids=[instance.id, "i-1234abcd"]) + cm.exception.code.should.equal('InvalidInstanceID.NotFound') + cm.exception.status.should.equal(400) + cm.exception.request_id.should_not.be.none