From 755fe6563b5f2bedb23144a2a49e5ef27bdf9c7d Mon Sep 17 00:00:00 2001 From: Steve Pulec Date: Tue, 7 May 2013 00:19:04 -0400 Subject: [PATCH] Fix missing dynamodb key status code to fix has_item. Closes #20 --- moto/dynamodb/responses.py | 2 +- tests/test_dynamodb/test_dynamodb_table_with_range_key.py | 8 ++++++-- .../test_dynamodb_table_without_range_key.py | 5 +++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/moto/dynamodb/responses.py b/moto/dynamodb/responses.py index dece0654..8f317211 100644 --- a/moto/dynamodb/responses.py +++ b/moto/dynamodb/responses.py @@ -195,7 +195,7 @@ class DynamoHandler(BaseResponse): return dynamo_json_dump(item_dict) else: er = 'com.amazonaws.dynamodb.v20111205#ResourceNotFoundException' - return self.error(er) + return self.error(er, status=404) def batch_get_item(self): table_batches = self.body['RequestItems'] diff --git a/tests/test_dynamodb/test_dynamodb_table_with_range_key.py b/tests/test_dynamodb/test_dynamodb_table_with_range_key.py index bff2be93..e357c592 100644 --- a/tests/test_dynamodb/test_dynamodb_table_with_range_key.py +++ b/tests/test_dynamodb/test_dynamodb_table_with_range_key.py @@ -6,6 +6,7 @@ from moto import mock_dynamodb from moto.dynamodb import dynamodb_backend from boto.dynamodb import condition +from boto.dynamodb.exceptions import DynamoDBKeyNotFoundError from boto.exception import DynamoDBResponseError @@ -101,6 +102,8 @@ def test_item_add_and_describe_and_update(): ) item.put() + table.has_item("LOLCat Forum", "Check this out!").should.equal(True) + returned_item = table.get_item( hash_key='LOLCat Forum', range_key='Check this out!', @@ -150,7 +153,8 @@ def test_get_missing_item(): table.get_item.when.called_with( hash_key='tester', range_key='other', - ).should.throw(DynamoDBResponseError) + ).should.throw(DynamoDBKeyNotFoundError) + table.has_item("foobar").should.equal(False) @mock_dynamodb @@ -163,7 +167,7 @@ def test_get_item_with_undeclared_table(): 'HashKeyElement': {'S': 'tester'}, 'RangeKeyElement': {'S': 'test-range'}, }, - ).should.throw(DynamoDBResponseError) + ).should.throw(DynamoDBKeyNotFoundError) @mock_dynamodb diff --git a/tests/test_dynamodb/test_dynamodb_table_without_range_key.py b/tests/test_dynamodb/test_dynamodb_table_without_range_key.py index c1ffdf2c..a3d68b11 100644 --- a/tests/test_dynamodb/test_dynamodb_table_without_range_key.py +++ b/tests/test_dynamodb/test_dynamodb_table_without_range_key.py @@ -6,6 +6,7 @@ from moto import mock_dynamodb from moto.dynamodb import dynamodb_backend from boto.dynamodb import condition +from boto.dynamodb.exceptions import DynamoDBKeyNotFoundError from boto.exception import DynamoDBResponseError @@ -137,7 +138,7 @@ def test_get_missing_item(): table.get_item.when.called_with( hash_key='tester', - ).should.throw(DynamoDBResponseError) + ).should.throw(DynamoDBKeyNotFoundError) @mock_dynamodb @@ -149,7 +150,7 @@ def test_get_item_with_undeclared_table(): key={ 'HashKeyElement': {'S': 'tester'}, }, - ).should.throw(DynamoDBResponseError) + ).should.throw(DynamoDBKeyNotFoundError) @mock_dynamodb