github.com/status-im/status-go@v1.1.0/integration-tests/tests/test_waku_rpc.py (about) 1 import random 2 import pytest 3 import jsonschema 4 import json 5 import time 6 from conftest import option, user_1, user_2 7 from test_cases import RpcTestCase, TransactionTestCase 8 from dataclasses import dataclass, field 9 from typing import List, Optional 10 11 12 @pytest.mark.rpc 13 @pytest.mark.wakuext 14 class TestRpc(RpcTestCase): 15 16 @pytest.mark.parametrize( 17 "method, params", 18 [ 19 ("wakuext_peers", []), 20 ], 21 ) 22 def test_(self, method, params): 23 _id = str(random.randint(1, 8888)) 24 25 response = self.rpc_request(method, params, _id, url=option.rpc_url_2) 26 self.verify_is_valid_json_rpc_response(response) 27 self.verify_json_schema(response, method) 28 29 30 @pytest.mark.rpc 31 @pytest.mark.accounts 32 @pytest.mark.wakuext 33 class TestRpcMessaging(RpcTestCase): 34 35 @dataclass 36 class User: 37 rpc_url: str 38 chat_public_key: Optional[str] = None 39 chat_id: Optional[str] = None 40 41 def test_add_contact(self): 42 _id = str(random.randint(1, 8888)) 43 44 self.user_1 = self.User(rpc_url=option.rpc_url) 45 self.user_2 = self.User(rpc_url=option.rpc_url_2) 46 47 # get chat public key 48 for user in self.user_1, self.user_2: 49 response = self.rpc_request( 50 "accounts_getAccounts", [], _id, url=user.rpc_url 51 ) 52 self.verify_is_valid_json_rpc_response(response) 53 54 user.chat_public_key = next( 55 ( 56 item["public-key"] 57 for item in response.json()["result"] 58 if item["chat"] 59 ), 60 None, 61 ) 62 63 # send contact requests 64 for sender in self.user_1, self.user_2: 65 for receiver in self.user_1, self.user_2: 66 if sender != receiver: 67 response = self.rpc_request( 68 method="wakuext_sendContactRequest", 69 params=[ 70 { 71 "id": receiver.chat_public_key, 72 "message": f"contact request from {sender.chat_public_key}: sent at {time.time()}", 73 } 74 ], 75 _id=99, 76 url=sender.rpc_url, 77 ) 78 79 self.verify_is_valid_json_rpc_response(response) 80 sender.chat_id = response.json()["result"]["chats"][0]["lastMessage"]["id"] 81 82 # accept contact requests 83 for user in self.user_1, self.user_2: 84 response = self.rpc_request( 85 method="wakuext_acceptContactRequest", 86 params=[ 87 { 88 "id": user.chat_id, 89 } 90 ], 91 _id=99, 92 url=user.rpc_url, 93 ) 94 self.verify_is_valid_json_rpc_response(response) 95 96 # verify contacts 97 for user in (self.user_1, self.user_2), (self.user_2, self.user_1): 98 response = self.rpc_request( 99 method="wakuext_contacts", 100 params=[], 101 _id=99, 102 url=user[0].rpc_url, 103 ) 104 self.verify_is_valid_json_rpc_response(response) 105 106 response = response.json() 107 assert response["result"][0]["added"] == True 108 assert response["result"][0]["id"] == user[1].chat_public_key