Skip to content

Commit

Permalink
Merge pull request #223 from steemit/netuoso-221-custom-json-validator
Browse files Browse the repository at this point in the history
Community - adjust custom_json validator
  • Loading branch information
jredbeard authored Oct 4, 2019
2 parents 74a41cc + 39ff4b9 commit ae6c6c7
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 7 deletions.
1 change: 1 addition & 0 deletions Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ funcy = "*"
vprof = "*"

[packages]
attrs = "==19.1.0"
aiodns = "*"
aiohttp = "*"
aredis = "*"
Expand Down
4 changes: 2 additions & 2 deletions jussi/validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
ID_TYPES = (int, str, float, NONE_TYPE)
PARAMS_TYPES = (list, dict, NONE_TYPE)

CUSTOM_JSON_SIZE_LIMIT = 2000
CUSTOM_JSON_SIZE_LIMIT = 8192
CUSTOM_JSON_FOLLOW_RATE = 2

BROADCAST_TRANSACTION_METHODS = {
Expand Down Expand Up @@ -199,7 +199,7 @@ def limit_broadcast_transaction_request(request: JSONRPCRequest, limits=None) ->


def limit_custom_json_op_length(ops: list, size_limit=None):
if any(len(op[1]['json']) > size_limit for op in ops):
if any(len(op[1]['json'].encode('utf-8')) > size_limit for op in ops):
raise JussiCustomJsonOpLengthError(size_limit=size_limit)


Expand Down
4 changes: 2 additions & 2 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -1594,7 +1594,7 @@ def appbase_requests(appbase_requests_and_responses):
{
"required_auths": [],
"id": "follow",
"json": 'a' * 2001,
"json": 'a' * 8193,
"required_posting_auths": ["steemit"]
}
]
Expand Down Expand Up @@ -1666,7 +1666,7 @@ def appbase_requests(appbase_requests_and_responses):
{
"required_auths": [],
"id": "follow",
"json": 'a' * 2001,
"json": 'a' * 8193,
"required_posting_auths": ["steemit"]
}
]
Expand Down
15 changes: 12 additions & 3 deletions tests/test_validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -294,17 +294,26 @@ def test_is_valid_jussi_response_using_steemd(steemd_request_and_response):
{
"required_auths": [],
"id": "follow",
"json": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"json": "a"*8192,
"required_posting_auths": ["steemit"]
}
]], False),
([[
'custom_json',
{
"required_auths": [],
"id": "follow",
"json": "😂"*2048,
"required_posting_auths": ["steemit"]
}
]], False),
])
def test_is_valid_custom_json_op_length(ops, expected):
if expected is False:
with pytest.raises(JussiCustomJsonOpLengthError):
limit_custom_json_op_length(ops, size_limit=1000)
limit_custom_json_op_length(ops, size_limit=8191)
else:
limit_custom_json_op_length(ops, size_limit=1000)
limit_custom_json_op_length(ops, size_limit=100)


@pytest.mark.parametrize('ops, expected', [
Expand Down

0 comments on commit ae6c6c7

Please sign in to comment.