From 11b12729ce3d125765737dc80d65546970745796 Mon Sep 17 00:00:00 2001
From: Marcin Ickiewicz <mickiewicz@syncad.com>
Date: Mon, 29 Jun 2020 14:27:25 +0200
Subject: [PATCH] split api_error_smoketest.py

---
 hived/scripts/api_error_smoketest.py    | 288 +-------------------
 hivemind/scripts/api_error_smoketest.py | 339 ++++++++++++++++++++++++
 2 files changed, 343 insertions(+), 284 deletions(-)
 mode change 100644 => 100755 hived/scripts/api_error_smoketest.py
 create mode 100755 hivemind/scripts/api_error_smoketest.py

diff --git a/hived/scripts/api_error_smoketest.py b/hived/scripts/api_error_smoketest.py
old mode 100644
new mode 100755
index 4cf12ba0..eb6c030d
--- a/hived/scripts/api_error_smoketest.py
+++ b/hived/scripts/api_error_smoketest.py
@@ -5,22 +5,6 @@ import requests
 import json
 
 tests = [
-   {
-      "method": "condenser_api.get_state",
-      "params": ["trending"]
-   },
-   {
-      "method": "condenser_api.get_state",
-      "params": ["hot"]
-   },
-   {
-      "method": "condenser_api.get_state",
-      "params": ["/@temp"]
-   },
-   {
-      "method": "condenser_api.get_trending_tags",
-      "params": ["", 20]
-   },
    {
       "method": "condenser_api.get_active_witnesses",
       "params": []
@@ -77,10 +61,6 @@ tests = [
       "method": "condenser_api.get_key_references",
       "params": [["STM8GC13uCZbP44HzMLV6zPZGwVQ8Nt4Kji8PapsPiNq1BK153XTX"]]
    },
-   {
-      "method": "condenser_api.get_accounts",
-      "params": [["initminer","temp"]]
-   },
    {
       "method": "condenser_api.lookup_account_names",
       "params": [["initminer","foobar","temp"]]
@@ -178,128 +158,10 @@ tests = [
       "method": "condenser_api.verify_account_authority",
       "params": ["temp",["STM8GC13uCZbP44HzMLV6zPZGwVQ8Nt4Kji8PapsPiNq1BK153XTX"]]
    },
-   {
-      "method": "condenser_api.get_active_votes",
-      "params": ["temp", "test1"]
-   },
-   {
-      "method": "condenser_api.get_account_votes",
-      "params": ["temp"]
-   },
-   {
-      "method": "condenser_api.get_content",
-      "params": ["temp", "test1"]
-   },
-   {
-      "method": "condenser_api.get_content_replies",
-      "params": ["temp", "foobar"]
-   },
-   {
-      "method": "condenser_api.get_tags_used_by_author",
-      "params": ["temp"]
-   },
-   {
-      "method": "condenser_api.get_comment_discussions_by_payout",
-      "params": [{"tag":"test"}]
-   },
-   {
-      "method": "condenser_api.get_discussions_by_trending",
-      "params": [{"tag":"test"}]
-   },
-   {
-      "method": "condenser_api.get_discussions_by_created",
-      "params": [{"tag":"test"}]
-   },
-   {
-      "method": "condenser_api.get_discussions_by_active",
-      "params": [{"tag":"test"}]
-   },
-   {
-      "method": "condenser_api.get_discussions_by_cashout",
-      "params": [{"tag":"test"}]
-   },
-   {
-      "method": "condenser_api.get_discussions_by_votes",
-      "params": [{"tag":"test"}]
-   },
-   {
-      "method": "condenser_api.get_discussions_by_children",
-      "params": [{"tag":"test"}]
-   },
-   {
-      "method": "condenser_api.get_discussions_by_hot",
-      "params": [{"tag":"test"}]
-   },
-   {
-      "method": "condenser_api.get_discussions_by_feed",
-      "params": [{"tag":"test"}]
-   },
-   {
-      "method": "condenser_api.get_discussions_by_blog",
-      "params": [{"tag":"test"}]
-   },
-   {
-      "method": "condenser_api.get_discussions_by_comments",
-      "params": [{"tag":"test", "start_author":"temp"}]
-   },
-   {
-      "method": "condenser_api.get_discussions_by_promoted",
-      "params": [{"tag":"test"}]
-   },
-   {
-      "method": "condenser_api.get_replies_by_last_update",
-      "params": ["temp", "test1", 10]
-   },
-# Might be broken
-#   {
-#      "method": "condenser_api.get_discussions_by_author_before_date",
-#      "params": ["temp", "test1", "1969-12-31T23:59:59", 10]
-#   },
    {
       "method": "condenser_api.get_account_history",
       "params": ["temp", -1, 10]
    },
-   {
-      "method": "condenser_api.get_followers",
-      "params": ["temp", "", "blog", 10]
-   },
-   {
-      "method": "condenser_api.get_following",
-      "params": ["temp", "", "blog", 10]
-   },
-   {
-      "method": "condenser_api.get_follow_count",
-      "params": ["temp"]
-   },
-   {
-      "method": "condenser_api.get_feed_entries",
-      "params": ["temp", -1, 10]
-   },
-   {
-      "method": "condenser_api.get_feed",
-      "params": ["temp", -1, 10]
-   },
-   {
-      "method": "condenser_api.get_blog_entries",
-      "params": ["temp", -1, 10]
-   },
-   {
-      "method": "condenser_api.get_blog",
-      "params": ["temp", -1, 10]
-   },
-   {
-      "method": "condenser_api.get_account_reputations",
-      "params": ["", 10]
-   },
-# Might be broken
-#   {
-#      "method": "condenser_api.get_reblogged_by",
-#      "params": ["temp", "test1"]
-#   },
-   {
-      "method": "condenser_api.get_blog_authors",
-      "params": ["temp"]
-   },
    {
       "method": "condenser_api.get_ticker",
       "params": []
@@ -356,47 +218,6 @@ tests = [
       "method": "block_api.get_block",
       "params": {"block_num":10000}
    },
-   {
-      "method": "follow_api.get_followers",
-      "params": {"account":"temp", "start":"", "type":"blog", "limit":10}
-   },
-   {
-      "method": "follow_api.get_following",
-      "params": {"account":"temp", "start":"", "type":"blog", "limit":10}
-   },
-   {
-      "method": "follow_api.get_follow_count",
-      "params": {"account":"temp"}
-   },
-   {
-      "method": "follow_api.get_feed_entries",
-      "params": {"account":"temp", "start":-1, "limit":10}
-   },
-   {
-      "method": "follow_api.get_feed",
-      "params": {"account":"temp", "start":-1, "limit":10}
-   },
-   {
-      "method": "follow_api.get_blog_entries",
-      "params": {"account":"temp", "start":-1, "limit":10}
-   },
-   {
-      "method": "follow_api.get_blog",
-      "params": {"account":"temp", "start":-1, "limit":10}
-   },
-   {
-      "method": "follow_api.get_account_reputations",
-      "params": {"lower_bound":"", "limit":10}
-   },
-# Might be broken
-#   {
-#      "method": "condenser_api.get_reblogged_by",
-#      "params": ["temp", "test1"]
-#   },
-   {
-      "method": "follow_api.get_blog_authors",
-      "params": {"blog_account":"temp"}
-   },
    {
       "method": "market_history_api.get_ticker",
       "params": {}
@@ -437,92 +258,6 @@ tests = [
       "method": "rc_api.find_rc_accounts",
       "params": {"accounts":["test"]}
    },
-# Not currently enabled
-#   {
-#      "method": "reputation_api.get_account_reputations",
-#      "params": {"lower_bound":"", "limit":10}
-#   },
-   {
-      "method": "tags_api.get_trending_tags",
-      "params": {"start_tag":"", "limit":20}
-   },
-   {
-      "method": "tags_api.get_tags_used_by_author",
-      "params": {"author":"temp"}
-   },
-   {
-      "method": "tags_api.get_discussion",
-      "params": {"author":"temp", "permlink":"test1"}
-   },
-   {
-      "method": "tags_api.get_content_replies",
-      "params": {"author":"temp", "permlink":"foobar"}
-   },
-   {
-      "method": "tags_api.get_post_discussions_by_payout",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_comment_discussions_by_payout",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_discussions_by_trending",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_discussions_by_created",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_discussions_by_active",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_discussions_by_cashout",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_discussions_by_votes",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_discussions_by_children",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_discussions_by_hot",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_discussions_by_feed",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_discussions_by_blog",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_discussions_by_comments",
-      "params": {"tag":"test", "start_author":"temp"}
-   },
-   {
-      "method": "tags_api.get_discussions_by_promoted",
-      "params": {"tag":"test"}
-   },
-   {
-      "method": "tags_api.get_replies_by_last_update",
-      "params": {"start_parent_author":"temp", "start_permlink":"test1", "limit":10}
-   },
-# Might be broken
-#   {
-#      "method": "tags_api.get_discussions_by_author_before_date",
-#      "params": {"author":"temp", "start_permlink":"test1", "before_date":"1969-12-31T23:59:59", "limit":10}
-#   },
-   {
-      "method": "tags_api.get_active_votes",
-      "params": {"author":"temp", "permlink":"test1"}
-   },
    {
       "method": "database_api.get_config",
       "params": {}
@@ -659,22 +394,6 @@ tests = [
       "method": "database_api.find_decline_voting_rights_requests",
       "params": {"accounts":["temp","null"]}
    },
-   {
-      "method": "database_api.list_comments",
-      "params": {"start":("1970-01-01T00:00:00","",""), "limit":10, "order":"by_cashout_time"}
-   },
-   {
-      "method": "database_api.find_comments",
-      "params": {"start":[["temp","test1"],["temp","foobar"]], "limit":10, "order":"by_account"}
-   },
-   {
-      "method": "database_api.list_votes",
-      "params": {"start":["","",""], "limit":10, "order":"by_comment_voter"}
-   },
-   {
-      "method": "database_api.find_votes",
-      "params": {"author":"temp", "permlink":"test1"}
-   },
    {
       "method": "database_api.list_limit_orders",
       "params": {"start":[{"base":{"amount":1000,"precision":3,"nai":"@@000000021"},"quote":{"amount":1,"precision":3,"nai":"@@000000013"}},0], "limit":10, "order":"by_price"}
@@ -707,16 +426,17 @@ tests = [
       "method": "database_api.list_smt_token_emissions",
       "params": {"limit": 100, "order": "by_symbol_time", "start": []}
    },
-   {  "method": "database_api.find_smt_token_emissions",
+   {
+      "method": "database_api.find_smt_token_emissions",
       "params": {"asset_symbol": {"nai":"@@100000006", "decimals": 3}}
-   }
+   },
    {
       "method": "database_api.list_smt_contributions",
       "params": {"limit": 100, "order": "by_symbol_contributor", "start": []}
    },
    {
       "method": "database_api.find_smt_contributions",
-      "params": {"symbol_contributor": [["asset_symbol": {"nai":"@@100000006", "decimals": 3}, "account": "temp"]] }
+      "params": {"symbol_contributor": [{"asset_symbol": {"nai":"@@100000006", "decimals": 3}, "account": "temp"}] }
    }
 ]
 
diff --git a/hivemind/scripts/api_error_smoketest.py b/hivemind/scripts/api_error_smoketest.py
new file mode 100755
index 00000000..21cfb4b4
--- /dev/null
+++ b/hivemind/scripts/api_error_smoketest.py
@@ -0,0 +1,339 @@
+#!/usr/bin/env python3
+
+import sys
+import requests
+import json
+
+tests = [
+   {
+      "method": "condenser_api.get_state",
+      "params": ["trending"]
+   },
+   {
+      "method": "condenser_api.get_state",
+      "params": ["hot"]
+   },
+   {
+      "method": "condenser_api.get_state",
+      "params": ["/@temp"]
+   },
+   {
+      "method": "condenser_api.get_trending_tags",
+      "params": ["", 20]
+   },
+   {
+      "method": "condenser_api.get_accounts",
+      "params": [["initminer","temp"]]
+   },
+   {
+      "method": "condenser_api.get_active_votes",
+      "params": ["temp", "test1"]
+   },
+   {
+      "method": "condenser_api.get_account_votes",
+      "params": ["temp"]
+   },
+   {
+      "method": "condenser_api.get_content",
+      "params": ["temp", "test1"]
+   },
+   {
+      "method": "condenser_api.get_content_replies",
+      "params": ["temp", "foobar"]
+   },
+   {
+      "method": "condenser_api.get_tags_used_by_author",
+      "params": ["temp"]
+   },
+   {
+      "method": "condenser_api.get_comment_discussions_by_payout",
+      "params": [{"tag":"test"}]
+   },
+   {
+      "method": "condenser_api.get_discussions_by_trending",
+      "params": [{"tag":"test"}]
+   },
+   {
+      "method": "condenser_api.get_discussions_by_created",
+      "params": [{"tag":"test"}]
+   },
+   {
+      "method": "condenser_api.get_discussions_by_active",
+      "params": [{"tag":"test"}]
+   },
+   {
+      "method": "condenser_api.get_discussions_by_cashout",
+      "params": [{"tag":"test"}]
+   },
+   {
+      "method": "condenser_api.get_discussions_by_votes",
+      "params": [{"tag":"test"}]
+   },
+   {
+      "method": "condenser_api.get_discussions_by_children",
+      "params": [{"tag":"test"}]
+   },
+   {
+      "method": "condenser_api.get_discussions_by_hot",
+      "params": [{"tag":"test"}]
+   },
+   {
+      "method": "condenser_api.get_discussions_by_feed",
+      "params": [{"tag":"test"}]
+   },
+   {
+      "method": "condenser_api.get_discussions_by_blog",
+      "params": [{"tag":"test"}]
+   },
+   {
+      "method": "condenser_api.get_discussions_by_comments",
+      "params": [{"tag":"test", "start_author":"temp"}]
+   },
+   {
+      "method": "condenser_api.get_discussions_by_promoted",
+      "params": [{"tag":"test"}]
+   },
+   {
+      "method": "condenser_api.get_replies_by_last_update",
+      "params": ["temp", "test1", 10]
+   },
+   {
+      "method": "condenser_api.get_followers",
+      "params": ["temp", "", "blog", 10]
+   },
+   {
+      "method": "condenser_api.get_following",
+      "params": ["temp", "", "blog", 10]
+   },
+   {
+      "method": "condenser_api.get_follow_count",
+      "params": ["temp"]
+   },
+   {
+      "method": "condenser_api.get_feed_entries",
+      "params": ["temp", -1, 10]
+   },
+   {
+      "method": "condenser_api.get_feed",
+      "params": ["temp", -1, 10]
+   },
+   {
+      "method": "condenser_api.get_blog_entries",
+      "params": ["temp", -1, 10]
+   },
+   {
+      "method": "condenser_api.get_blog",
+      "params": ["temp", -1, 10]
+   },
+   {
+      "method": "condenser_api.get_account_reputations",
+      "params": ["", 10]
+   },
+# Might be broken
+#   {
+#      "method": "condenser_api.get_reblogged_by",
+#      "params": ["temp", "test1"]
+#   },
+   {
+      "method": "condenser_api.get_blog_authors",
+      "params": ["temp"]
+   },
+   {
+      "method": "account_history_api.get_ops_in_block",
+      "params": {"block_num":10000}
+   },
+   {
+      "method": "account_history_api.get_ops_in_block",
+      "params": {"block_num":10000, "only_virtual":True}
+   },
+   {
+      "method": "follow_api.get_followers",
+      "params": {"account":"temp", "start":"", "type":"blog", "limit":10}
+   },
+   {
+      "method": "follow_api.get_following",
+      "params": {"account":"temp", "start":"", "type":"blog", "limit":10}
+   },
+   {
+      "method": "follow_api.get_follow_count",
+      "params": {"account":"temp"}
+   },
+   {
+      "method": "follow_api.get_feed_entries",
+      "params": {"account":"temp", "start":-1, "limit":10}
+   },
+   {
+      "method": "follow_api.get_feed",
+      "params": {"account":"temp", "start":-1, "limit":10}
+   },
+   {
+      "method": "follow_api.get_blog_entries",
+      "params": {"account":"temp", "start":-1, "limit":10}
+   },
+   {
+      "method": "follow_api.get_blog",
+      "params": {"account":"temp", "start":-1, "limit":10}
+   },
+   {
+      "method": "follow_api.get_blog_authors",
+      "params": {"blog_account":"temp"}
+   },
+   {
+      "method": "tags_api.get_trending_tags",
+      "params": {"start_tag":"", "limit":20}
+   },
+   {
+      "method": "tags_api.get_tags_used_by_author",
+      "params": {"author":"temp"}
+   },
+   {
+      "method": "tags_api.get_discussion",
+      "params": {"author":"temp", "permlink":"test1"}
+   },
+   {
+      "method": "tags_api.get_content_replies",
+      "params": {"author":"temp", "permlink":"foobar"}
+   },
+   {
+      "method": "tags_api.get_post_discussions_by_payout",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_comment_discussions_by_payout",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_discussions_by_trending",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_discussions_by_created",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_discussions_by_active",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_discussions_by_cashout",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_discussions_by_votes",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_discussions_by_children",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_discussions_by_hot",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_discussions_by_feed",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_discussions_by_blog",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_discussions_by_comments",
+      "params": {"tag":"test", "start_author":"temp"}
+   },
+   {
+      "method": "tags_api.get_discussions_by_promoted",
+      "params": {"tag":"test"}
+   },
+   {
+      "method": "tags_api.get_replies_by_last_update",
+      "params": {"start_parent_author":"temp", "start_permlink":"test1", "limit":10}
+   },
+# Might be broken
+#   {
+#      "method": "tags_api.get_discussions_by_author_before_date",
+#      "params": {"author":"temp", "start_permlink":"test1", "before_date":"1969-12-31T23:59:59", "limit":10}
+#   },
+   {
+      "method": "tags_api.get_active_votes",
+      "params": {"author":"temp", "permlink":"test1"}
+   },
+   {
+      "method": "database_api.list_comments",
+      "params": {"start":("1970-01-01T00:00:00","",""), "limit":10, "order":"by_cashout_time"}
+   },
+   {
+      "method": "database_api.find_comments",
+      "params": {"start":[["temp","test1"],["temp","foobar"]], "limit":10, "order":"by_account"}
+   },
+   {
+      "method": "database_api.list_votes",
+      "params": {"start":["","",""], "limit":10, "order":"by_comment_voter"}
+   },
+   {
+      "method": "database_api.find_votes",
+      "params": {"author":"temp", "permlink":"test1"}
+   }
+]
+
+def test_api( url, headers, payload ):
+   response = requests.post( url, data=json.dumps(payload), headers=headers).json()
+
+   try:
+      if( response["id"] != payload["id"]
+         or response["jsonrpc"] != "2.0" ):
+         return False
+      response["result"]
+   except:
+      return False
+
+   try:
+      response["error"]
+      return False
+   except KeyError:
+      return True
+   except:
+      return False
+
+   return True
+
+def main():
+   if len( sys.argv ) == 1:
+      url = "https://api.steemit.com/"
+   elif len( sys.argv ) == 2:
+      url = sys.argv[1]
+   else:
+      exit( "Usage: api_error_smoketest.py <hive_api_endpoint>" )
+
+   print( "Testing against endpoint: " + url )
+
+   headers = {'content-type': 'application/json'}
+
+   payload = {
+      "jsonrpc": "2.0"
+   }
+
+   id = 0
+   errors = 0
+
+   for testcase in tests:
+      payload["method"] = testcase["method"]
+      payload["params"] = testcase["params"]
+      payload["id"] = id
+
+      if( not test_api( url, headers, payload ) ):
+         errors += 1
+         print( "Error in testcase: " + json.dumps( payload ) )
+
+      id += 1
+
+   print( str( errors ) + " error(s) found." )
+
+   if( errors > 0 ):
+      return 1
+
+   return 0
+
+if __name__ == "__main__":
+   main()
-- 
GitLab