refactor: extract fixtures

This commit is contained in:
Vlad Stan 2023-02-03 09:58:50 +02:00
parent f183027811
commit 3d1511a545
6 changed files with 220 additions and 227 deletions

0
tests/__init__.py Normal file
View file

200
tests/fixture/clients.json Normal file
View file

@ -0,0 +1,200 @@
{
"alice": {
"meta": [
"EVENT",
{
"id": "9d4883c31d6ae3d80fd8882a248cc193800a096d87bd55d5c1df8a237e78ca09",
"pubkey": "0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816",
"created_at": 1675332095,
"kind": 0,
"tags": [],
"content": "{\"name\":\"Alice\"}",
"sig": "95c30b6bbc70f3777d2b2b47ae3961e196eae0df72f3ae301ff1009cdabf9c50bb0eb7825891c842fc6ca5cb268342cc486850a6127ab40df871bd3e1fd0b0d7"
}
],
"meta_response": [
"ok",
"9d4883c31d6ae3d80fd8882a248cc193800a096d87bd55d5c1df8a237e78ca09",
true,
""
],
"post01": [
"EVENT",
{
"id": "05741bda9079cdf66f3be977a4d31287366470d1337b1aeb09506da4fbf7cd85",
"pubkey": "0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816",
"created_at": 1675332224,
"kind": 1,
"tags": [],
"content": "Alice - post 01",
"sig": "8d27c9f818ff194b491de1dc7d52d2d26916d87189ed1330315c4ff5509a986c80f34c2202302f8fe246c0b3f4e2f79103c000cbd6ca65bbe3921e14f30cb35b"
}
],
"post01_response_ok": [
"ok",
"05741bda9079cdf66f3be977a4d31287366470d1337b1aeb09506da4fbf7cd85",
true,
""
],
"post01_response_duplicate": [
"ok",
"05741bda9079cdf66f3be977a4d31287366470d1337b1aeb09506da4fbf7cd85",
false,
"error: failed to create event"
],
"post02": [
"EVENT",
{
"id": "79d89e66626c4c54b007259cf068a7ba9416ffb6262cc01ba8e7cebf79b9c0d5",
"pubkey": "0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816",
"created_at": 1675332284,
"kind": 1,
"tags": [],
"content": "Alice post 02",
"sig": "012fc88407b0cfb967e80d1117acf6cf03410f6810039543d2290eef64e246d82ad130d08814b2564cee68e77dd0e99ea539e7a9751ef2e0914e7d93f345094e"
}
],
"post02_response_ok": [
"ok",
"79d89e66626c4c54b007259cf068a7ba9416ffb6262cc01ba8e7cebf79b9c0d5",
true,
""
],
"subscribe_reactions_to_me": [
"REQ",
"notifications:0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345",
{
"kinds": [
1,
7,
6,
4
],
"#p": [
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816"
],
"limit": 400
}
]
},
"bob": {
"meta": [
"EVENT",
{
"id": "a3591f44f9f12e8d745a79c19affc1f9ea267a716981116835ddb7b327096be5",
"pubkey": "d685447c43c7c18dbbea61923cf0b63e1ab46bed69b153a48279a95c40bd414a",
"created_at": 1675332410,
"kind": 0,
"tags": [],
"content": "{\"name\":\"Bob\"}",
"sig": "52b142eb5bf95e46424d8f146a0efcfd1be35ec2ae446152ccc875bc82eee66bef6df1af9a4456ec8984540ac4e21905544b5291334e2b18a24e534b788b2d81"
}
],
"meta_response": [
"ok",
"a3591f44f9f12e8d745a79c19affc1f9ea267a716981116835ddb7b327096be5",
true,
""
],
"request_meta_alice": [
"REQ",
"profile",
{
"kinds": [
0
],
"authors": [
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816"
]
}
],
"request_posts_alice": [
"REQ",
"sub0",
{
"kinds": [
1
],
"authors": [
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816"
],
"limit": 50
}
],
"like_post01": [
"EVENT",
{
"id": "700da4df9029a049ddecd1c586b778f434afb55e56c3016d94334108e3829db7",
"pubkey": "d685447c43c7c18dbbea61923cf0b63e1ab46bed69b153a48279a95c40bd414a",
"created_at": 1675350162,
"kind": 7,
"tags": [
[
"e",
"05741bda9079cdf66f3be977a4d31287366470d1337b1aeb09506da4fbf7cd85"
],
[
"p",
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816"
]
],
"content": "\u2764\ufe0f",
"sig": "3522d670f2e28bd63d32184aa9617df360684e5bc4b7c791b53c5401437e1bf91d1d335f016076fdee9afa99046dc9cc06a39738b25ff9a1562ac7321e3dca2e"
}
],
"like_post02": [
"EVENT",
{
"id": "920ee4e856acb3310e64415183da0dd7e2e2b7e7c5a517553b9a75981fbafcc9",
"pubkey": "d685447c43c7c18dbbea61923cf0b63e1ab46bed69b153a48279a95c40bd414a",
"created_at": 1675332450,
"kind": 7,
"tags": [
[
"e",
"79d89e66626c4c54b007259cf068a7ba9416ffb6262cc01ba8e7cebf79b9c0d5"
],
[
"p",
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816"
]
],
"content": "\u2764\ufe0f",
"sig": "90fa8093088ed9280277f10a97c41d68d9f51d24254f7b27c28f5d84ac25426f1bfc217bca0c6712a9965164b07db219ee7e583b94c4d26f00aee87344c3f17a"
}
],
"like_post02_response": [
"ok",
"920ee4e856acb3310e64415183da0dd7e2e2b7e7c5a517553b9a75981fbafcc9",
true,
""
],
"comment_on_alice_post01": [
"EVENT",
{
"id": "bb34749ffd3eb0e393e54cc90b61a7dd5f34108d4931467861d20281c0b7daea",
"pubkey": "d685447c43c7c18dbbea61923cf0b63e1ab46bed69b153a48279a95c40bd414a",
"created_at": 1675332468,
"kind": 1,
"tags": [
[
"e",
"05741bda9079cdf66f3be977a4d31287366470d1337b1aeb09506da4fbf7cd85"
],
[
"p",
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816"
]
],
"content": "bob comment 01",
"sig": "f9bb53e2adc27f3a49ec42d681833742e28d734327107ebba3076be226340503048116947a75274e5262fa03aa0430da6fe697e46e19342639ef208e5690d8c5"
}
],
"comment_on_alice_post01_response": [
"ok",
"bb34749ffd3eb0e393e54cc90b61a7dd5f34108d4931467861d20281c0b7daea",
true,
""
]
}
}

View file

@ -1,12 +0,0 @@
{
"name": "kind 1, emoticon",
"data": {
"kind": 1,
"content": "😁",
"tags": [],
"created_at": 1675241147,
"pubkey": "a24496bca5dd73300f4e5d5d346c73132b7354c597fcbb6509891747b4689211",
"id": "906bf8746456ae8583f4def33b8fddca785cecab44ecfa6205a0be97c2576b74",
"sig": "67465c16101f8436a402a7369522fb1138838c012895c8752e942eca2ddf520b2938a508bc5236f633f1d6b4dc61eb19f7271555ca523b8043b65a793d3b208e"
}
},

12
tests/helpers.py Normal file
View file

@ -0,0 +1,12 @@
import json
FIXTURES_PATH = "tests/extensions/nostrrelay/fixture"
def get_fixtures(file):
"""
Read the content of the JSON file.
"""
with open(f"{FIXTURES_PATH}/{file}.json") as f:
raw_data = json.load(f)
return raw_data

View file

@ -8,210 +8,13 @@ from lnbits.extensions.nostrrelay.client_manager import (
NostrClientConnection,
NostrClientManager,
)
from .helpers import get_fixtures
def simple_urandom():
# print('### simple_urandom', x)
return 3
fixtures = {
"alice": {
"meta": [
"EVENT",
{
"id": "9d4883c31d6ae3d80fd8882a248cc193800a096d87bd55d5c1df8a237e78ca09",
"pubkey": "0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816",
"created_at": 1675332095,
"kind": 0,
"tags": [],
"content": '{"name":"Alice"}',
"sig": "95c30b6bbc70f3777d2b2b47ae3961e196eae0df72f3ae301ff1009cdabf9c50bb0eb7825891c842fc6ca5cb268342cc486850a6127ab40df871bd3e1fd0b0d7",
},
],
"meta_response": [
"ok",
"9d4883c31d6ae3d80fd8882a248cc193800a096d87bd55d5c1df8a237e78ca09",
True,
"",
],
"post01": [
"EVENT",
{
"id": "05741bda9079cdf66f3be977a4d31287366470d1337b1aeb09506da4fbf7cd85",
"pubkey": "0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816",
"created_at": 1675332224,
"kind": 1,
"tags": [],
"content": "Alice - post 01",
"sig": "8d27c9f818ff194b491de1dc7d52d2d26916d87189ed1330315c4ff5509a986c80f34c2202302f8fe246c0b3f4e2f79103c000cbd6ca65bbe3921e14f30cb35b",
},
],
"post01_response_ok": [
"ok",
"05741bda9079cdf66f3be977a4d31287366470d1337b1aeb09506da4fbf7cd85",
True,
"",
],
"post01_response_duplicate": [
"ok",
"05741bda9079cdf66f3be977a4d31287366470d1337b1aeb09506da4fbf7cd85",
False,
"error: failed to create event",
],
"post02": [
"EVENT",
{
"id": "79d89e66626c4c54b007259cf068a7ba9416ffb6262cc01ba8e7cebf79b9c0d5",
"pubkey": "0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816",
"created_at": 1675332284,
"kind": 1,
"tags": [],
"content": "Alice post 02",
"sig": "012fc88407b0cfb967e80d1117acf6cf03410f6810039543d2290eef64e246d82ad130d08814b2564cee68e77dd0e99ea539e7a9751ef2e0914e7d93f345094e",
},
],
"post02_response_ok": [
"ok",
"79d89e66626c4c54b007259cf068a7ba9416ffb6262cc01ba8e7cebf79b9c0d5",
True,
"",
],
"subscribe_reactions_to_me": [
"REQ",
"notifications:0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345",
{
"kinds": [1, 7, 6, 4],
"#p": [
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816"
],
"limit": 400,
},
],
},
"bob": {
"meta": [
"EVENT",
{
"id": "a3591f44f9f12e8d745a79c19affc1f9ea267a716981116835ddb7b327096be5",
"pubkey": "d685447c43c7c18dbbea61923cf0b63e1ab46bed69b153a48279a95c40bd414a",
"created_at": 1675332410,
"kind": 0,
"tags": [],
"content": '{"name":"Bob"}',
"sig": "52b142eb5bf95e46424d8f146a0efcfd1be35ec2ae446152ccc875bc82eee66bef6df1af9a4456ec8984540ac4e21905544b5291334e2b18a24e534b788b2d81",
},
],
"meta_response": [
"ok",
"a3591f44f9f12e8d745a79c19affc1f9ea267a716981116835ddb7b327096be5",
True,
"",
],
"request_meta_alice": [
"REQ",
"profile",
{
"kinds": [0],
"authors": [
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816"
],
},
],
"request_posts_alice": [
"REQ",
"sub0",
{
"kinds": [1],
"authors": [
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816"
],
"limit": 50,
},
],
"like_post01": [
"EVENT",
{
"id": "700da4df9029a049ddecd1c586b778f434afb55e56c3016d94334108e3829db7",
"pubkey": "d685447c43c7c18dbbea61923cf0b63e1ab46bed69b153a48279a95c40bd414a",
"created_at": 1675350162,
"kind": 7,
"tags": [
[
"e",
"05741bda9079cdf66f3be977a4d31287366470d1337b1aeb09506da4fbf7cd85",
],
[
"p",
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816",
],
],
"content": "❤️",
"sig": "3522d670f2e28bd63d32184aa9617df360684e5bc4b7c791b53c5401437e1bf91d1d335f016076fdee9afa99046dc9cc06a39738b25ff9a1562ac7321e3dca2e",
},
],
"like_post02": [
"EVENT",
{
"id": "920ee4e856acb3310e64415183da0dd7e2e2b7e7c5a517553b9a75981fbafcc9",
"pubkey": "d685447c43c7c18dbbea61923cf0b63e1ab46bed69b153a48279a95c40bd414a",
"created_at": 1675332450,
"kind": 7,
"tags": [
[
"e",
"79d89e66626c4c54b007259cf068a7ba9416ffb6262cc01ba8e7cebf79b9c0d5",
],
[
"p",
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816",
],
],
"content": "❤️",
"sig": "90fa8093088ed9280277f10a97c41d68d9f51d24254f7b27c28f5d84ac25426f1bfc217bca0c6712a9965164b07db219ee7e583b94c4d26f00aee87344c3f17a",
},
],
"like_post02_response": [
"ok",
"920ee4e856acb3310e64415183da0dd7e2e2b7e7c5a517553b9a75981fbafcc9",
True,
"",
],
"comment_on_alice_post01": [
"EVENT",
{
"id": "bb34749ffd3eb0e393e54cc90b61a7dd5f34108d4931467861d20281c0b7daea",
"pubkey": "d685447c43c7c18dbbea61923cf0b63e1ab46bed69b153a48279a95c40bd414a",
"created_at": 1675332468,
"kind": 1,
"tags": [
[
"e",
"05741bda9079cdf66f3be977a4d31287366470d1337b1aeb09506da4fbf7cd85",
],
[
"p",
"0b29ecc73ba400e5b4bd1e4cb0d8f524e9958345749197ca21c8da38d0622816",
],
],
"content": "bob comment 01",
"sig": "f9bb53e2adc27f3a49ec42d681833742e28d734327107ebba3076be226340503048116947a75274e5262fa03aa0430da6fe697e46e19342639ef208e5690d8c5",
},
],
"comment_on_alice_post01_response": [
"ok",
"bb34749ffd3eb0e393e54cc90b61a7dd5f34108d4931467861d20281c0b7daea",
True,
"",
],
},
}
fixtures = get_fixtures("clients")
class MockWebSocket(WebSocket):
def __init__(self):
self.sent_messages = []
self.received_messages = []
self.fake_wire: asyncio.Queue[str] = asyncio.Queue(0)
pass
@ -219,22 +22,19 @@ class MockWebSocket(WebSocket):
await asyncio.sleep(0.1)
async def receive_text(self) -> str:
# print("### mock receive_text")
data = await self.fake_wire.get()
self.received_messages.append(data)
return data
async def send_text(self, data: str):
self.sent_messages.append(data)
# print("### mock send_text", data)
async def wire_mock_message(self, data: str):
# print("#### wire_mock_message", data)
await self.fake_wire.put(data)
@pytest.mark.asyncio
async def test_xxx():
async def test_alice_and_bob():
client_manager = NostrClientManager()
ws_alice = MockWebSocket()
@ -247,7 +47,7 @@ async def test_xxx():
client_manager.add_client(client_bob)
asyncio.create_task(client_bob.start())
await asyncio.sleep(1)
await asyncio.sleep(0.1)
await alice_wire_meta_and_post01(ws_alice, fixtures)

View file

@ -6,9 +6,10 @@ from loguru import logger
from pydantic import BaseModel
from lnbits.extensions.nostrrelay.crud import create_event, get_event, get_events
from lnbits.extensions.nostrrelay.models import NostrEvent, NostrFilter
FIXTURES_PATH = "tests/extensions/nostrrelay/fixture"
from lnbits.extensions.nostrrelay.models import NostrEvent, NostrFilter
from .helpers import get_fixtures
RELAY_ID = "r1"
class EventFixture(BaseModel):
@ -142,11 +143,3 @@ async def filter_by_tag_e_p_and_author(all_events: List[NostrEvent], author, eve
assert filtered_events[0].id == reply_event_id, f"Failed to filter the right event by 'author' and tags 'e' & 'p'"
def get_fixtures(file):
"""
Read the content of the JSON file.
"""
with open(f"{FIXTURES_PATH}/{file}.json") as f:
raw_data = json.load(f)
return raw_data