comment-server/tests/server_test.py

135 lines
4.1 KiB
Python

import unittest
import faker
import requests
from faker.providers import internet
from faker.providers import lorem
from faker.providers import misc
from src.settings import config
fake = faker.Faker()
fake.add_provider(internet)
fake.add_provider(lorem)
fake.add_provider(misc)
def post_jsonrpc(url, method, **params):
return requests.post(
url=url,
json={
'jsonrpc': '2.0',
'id': None,
'method': method,
'params': params
}
).json()
def comment_create(**kwargs):
return post_jsonrpc('http://localhost:5921/api', 'create_comment', **kwargs)
def comment_list(**kwargs):
return post_jsonrpc('http://localhost:5921/api', 'get_claim_comments', **kwargs)
def fake_lbryusername():
return '@' + fake.user_name()
class ServerTest(unittest.TestCase):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.url = 'http://' + config['HOST'] + ':5921/api'
def setUp(self) -> None:
self.claim_id = '9cb713f01bf247a0e03170b5ed00d5161340c486'
def test01CreateCommentNoReply(self):
resp = comment_create(
claim_id=self.claim_id,
comment='anonymous comment'
)
self.assertIn('result', resp)
resp = resp['result']
self.assertIsNotNone(resp)
self.assertIn('comment_id', resp)
def test02CreateNamedCommentNoSignature(self):
resp = comment_create(
claim_id=self.claim_id,
comment='blah blah blah this is my comment',
channel_name=fake_lbryusername(),
channel_id=fake.sha1(),
)
self.assertIn('result', resp)
resp = resp['result']
self.assertIsNotNone(resp)
self.assertIn('comment_id', resp)
self.assertNotIn('parent_id', resp)
def test03InvalidComments(self):
resp = comment_create(
claim_id=self.claim_id,
comment='this comment should fail',
signature=fake.sha1()
)
self.assertNotIn('result', resp)
self.assertIn('error', resp)
resp = comment_create(
comment='This comment has no claim_id'
)
self.assertNotIn('result', resp)
self.assertIn('error', resp)
resp = comment_create(claim_id=self.claim_id)
self.assertIn('error', resp)
resp = comment_create()
self.assertIn('error', resp)
resp = comment_create(
claim_id=self.claim_id,
comment='This comment has no channel_id',
channel_name=fake_lbryusername(),
)
self.assertIn('error', resp)
resp = comment_create(
claim_id=self.claim_id,
comment='This comment has no channel_name',
channel_id=fake.sha1(),
)
self.assertIn('error', resp)
def test04CreateAnonymousReply(self):
resp = comment_create(claim_id=self.claim_id, comment='anonymous comment')
self.assertIn('result', resp)
resp = resp['result']
self.assertIn('comment_id', resp)
reply = comment_create(
claim_id=self.claim_id,
comment='anonymous reply',
parent_id=resp['comment_id']
)
self.assertIn('result', reply)
self.assertIn('parent_id', reply['result'])
self.assertEquals(reply['result']['parent_id'], resp['comment_id'])
def test05CreateNamedReplies(self):
resp = comment_create(
claim_id=self.claim_id,
comment='blah blah blah this is my comment',
channel_name=fake_lbryusername(),
channel_id=fake.sha1(),
)
self.assertIn('result', resp)
parent_id = resp['result']['comment_id']
reply = comment_create(
claim_id=self.claim_id,
comment='this is a boring response to a named comment',
channel_name='@DukeSilver',
channel_id=fake.sha1(),
parent_id=parent_id
)
self.assertIn('result', reply)
self.assertIn('comment_id', reply['result'])
self.assertIn('parent_id', reply['result'])
self.assertEquals(reply['result']['parent_id'], parent_id)