From a6eb52d76dc952cd7d4329bfcc99797229138566 Mon Sep 17 00:00:00 2001 From: Scott Sadler Date: Mon, 28 Nov 2016 17:31:35 +0100 Subject: [PATCH] disallow empty metadata dict in favour of null --- bigchaindb/common/schema/transaction.yaml | 3 ++- docs/server/source/schema/transaction.rst | 2 +- tests/common/test_schema.py | 10 ++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/bigchaindb/common/schema/transaction.yaml b/bigchaindb/common/schema/transaction.yaml index 780f5408..03f93ac7 100644 --- a/bigchaindb/common/schema/transaction.yaml +++ b/bigchaindb/common/schema/transaction.yaml @@ -245,6 +245,7 @@ definitions: - type: object description: | User provided transaction metadata. This field may be ``null`` or may - contain an object with freeform metadata. + contain an non empty object with freeform metadata. additionalProperties: true + minProperties: 1 - type: 'null' diff --git a/docs/server/source/schema/transaction.rst b/docs/server/source/schema/transaction.rst index f2cabf59..c79abf05 100644 --- a/docs/server/source/schema/transaction.rst +++ b/docs/server/source/schema/transaction.rst @@ -301,7 +301,7 @@ Metadata -------- User provided transaction metadata. This field may be ``null`` or may -contain an object with freeform metadata. +contain an non empty object with freeform metadata. diff --git a/tests/common/test_schema.py b/tests/common/test_schema.py index 5ded0272..1827d3cb 100644 --- a/tests/common/test_schema.py +++ b/tests/common/test_schema.py @@ -16,6 +16,16 @@ def test_validate_transaction_signed_transfer(signed_transfer_tx): validate_transaction_schema(signed_transfer_tx.to_dict()) +def test_validate_fails_metadata_empty_dict(create_tx): + create_tx.metadata = {'a': 1} + validate_transaction_schema(create_tx.to_dict()) + create_tx.metadata = None + validate_transaction_schema(create_tx.to_dict()) + create_tx.metadata = {} + with raises(SchemaValidationError): + validate_transaction_schema(create_tx.to_dict()) + + def test_validation_fails(): with raises(SchemaValidationError): validate_transaction_schema({})