[fix] Ws api tests (#31)

This commit is contained in:
Vlad Stan 2024-11-11 15:25:25 +02:00 committed by GitHub
parent 73054fd5ce
commit 3dc066fbd4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 108 additions and 44 deletions

View file

@ -2,7 +2,7 @@ import hashlib
import json
from enum import Enum
from pydantic import BaseModel
from pydantic import BaseModel, Field
from secp256k1 import PublicKey
@ -15,13 +15,21 @@ class NostrEventType(str, Enum):
class NostrEvent(BaseModel):
id: str
relay_id: str
publisher: str
pubkey: str
created_at: int
kind: int
tags: list[list[str]] = []
tags: list[list[str]] = Field(default=[], no_database=True)
content: str = ""
sig: str
def nostr_dict(self) -> dict:
_nostr_dict = dict(self)
_nostr_dict.pop("relay_id")
_nostr_dict.pop("publisher")
return _nostr_dict
def serialize(self) -> list:
return [0, self.pubkey, self.created_at, self.kind, self.tags, self.content]
@ -36,7 +44,7 @@ class NostrEvent(BaseModel):
@property
def size_bytes(self) -> int:
s = json.dumps(dict(self), separators=(",", ":"), ensure_ascii=False)
s = json.dumps(self.nostr_dict(), separators=(",", ":"), ensure_ascii=False)
return len(s.encode())
@property
@ -83,7 +91,7 @@ class NostrEvent(BaseModel):
raise ValueError(f"Invalid signature: '{self.sig}' for event '{self.id}'")
def serialize_response(self, subscription_id):
return [NostrEventType.EVENT, subscription_id, dict(self)]
return [NostrEventType.EVENT, subscription_id, self.nostr_dict()]
def tag_values(self, tag_name: str) -> list[str]:
return [t[1] for t in self.tags if t[0] == tag_name]