comment-server/tests/server_test.py

136 lines
4.1 KiB
Python
Raw Normal View History

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)