schema validates that create txes only have 1 input and that it has no fulfills

This commit is contained in:
Scott Sadler 2017-03-07 17:12:12 +01:00
parent 5b2d22efd4
commit dbf24a6065
2 changed files with 31 additions and 5 deletions

View File

@ -1,17 +1,28 @@
---
"$schema": "http://json-schema.org/draft-04/schema#"
type: object
title: Transaction Schema - CREATE/GENESIS specific properties
title: Transaction Schema - CREATE/GENESIS specific constraints
required:
- asset
- inputs
properties:
asset:
additionalProperties: false
properties:
data:
description: |
User provided metadata associated with the asset. May also be ``null``.
anyOf:
- type: object
additionalProperties: true
- type: 'null'
inputs:
type: array
title: "Transaction inputs"
maxItems: 1
minItems: 1
items:
type: "object"
required:
- fulfills
properties:
fulfills:
type: "null"

View File

@ -32,8 +32,6 @@ def test_validate_fails_metadata_empty_dict(create_tx):
def test_transfer_asset_schema(signed_transfer_tx):
from bigchaindb.common.schema import (SchemaValidationError,
validate_transaction_schema)
tx = signed_transfer_tx.to_dict()
validate_transaction_schema(tx)
tx['asset']['data'] = {}
@ -43,3 +41,20 @@ def test_transfer_asset_schema(signed_transfer_tx):
tx['asset']['id'] = 'b' * 63
with raises(SchemaValidationError):
validate_transaction_schema(tx)
def test_create_single_input(create_tx):
tx = create_tx.to_dict()
tx['inputs'] += tx['inputs']
with raises(SchemaValidationError):
validate_transaction_schema(tx)
tx['inputs'] = []
with raises(SchemaValidationError):
validate_transaction_schema(tx)
def test_create_tx_no_fulfills(create_tx):
tx = create_tx.to_dict()
tx['inputs'][0]['fulfills'] = {'tx': 'a' * 64, 'output': 0}
with raises(SchemaValidationError):
validate_transaction_schema(tx)