comment-server/tests/database_test.py

156 lines
6 KiB
Python
Raw Normal View History

2019-05-19 08:23:20 +02:00
import unittest
import server.conf
import server.database as db
import sqlite3
import json
class TestCommentCreation(unittest.TestCase):
def setUp(self) -> None:
self.db = db.DatabaseConnection('test.db')
self.db.obtain_connection()
self.db.generate_schema(server.conf.schema_dir)
self.claimId = '529357c3422c6046d3fec76be2358004ba22e340'
def tearDown(self) -> None:
curs = self.db.connection.execute('SELECT * FROM COMMENT')
results = {'COMMENT': [dict(r) for r in curs.fetchall()]}
curs = self.db.connection.execute('SELECT * FROM CHANNEL')
results['CHANNEL'] = [dict(r) for r in curs.fetchall()]
curs = self.db.connection.execute('SELECT * FROM COMMENTS_ON_CLAIMS')
results['COMMENTS_ON_CLAIMS'] = [dict(r) for r in curs.fetchall()]
curs = self.db.connection.execute('SELECT * FROM COMMENT_REPLIES')
results['COMMENT_REPLIES'] = [dict(r) for r in curs.fetchall()]
print(json.dumps(results, indent=4))
conn: sqlite3.Connection = self.db.connection
conn.executescript("""
DROP TABLE IF EXISTS COMMENT;
DROP TABLE IF EXISTS CHANNEL;
DROP VIEW IF EXISTS COMMENTS_ON_CLAIMS;
DROP VIEW IF EXISTS COMMENT_REPLIES;
""")
conn.commit()
conn.close()
def testNamedComments(self):
comment = self.db.create_comment(
claim_id=self.claimId,
comment='This is a named comment',
2019-05-19 09:00:18 +02:00
channel_name='@username',
2019-05-19 08:23:20 +02:00
channel_id='529357c3422c6046d3fec76be2358004ba22abcd',
)
self.assertIsNotNone(comment)
self.assertIn('comment', comment)
self.assertIn('comment_id', comment)
self.assertIn('parent_id', comment)
self.assertIsNone(comment['parent_id'])
previous_id = comment['comment_id']
reply = self.db.create_comment(
claim_id=self.claimId,
comment='This is a named response',
2019-05-19 09:00:18 +02:00
channel_name='@another_username',
2019-05-19 08:23:20 +02:00
channel_id='529357c3422c6046d3fec76be2358004ba224bcd',
parent_id=previous_id
)
self.assertIsNotNone(reply)
self.assertIn('comment', reply)
self.assertIn('comment_id', reply)
self.assertIn('parent_id', reply)
self.assertEqual(reply['parent_id'], comment['comment_id'])
self.assertEqual(reply['claim_id'], comment['claim_id'])
def testAnonymousComments(self):
comment = self.db.create_comment(
claim_id=self.claimId,
comment='This is an anonymous comment'
)
self.assertIsNotNone(comment)
self.assertIn('comment', comment)
self.assertIn('comment_id', comment)
self.assertIn('parent_id', comment)
self.assertIsNone(comment['parent_id'])
previous_id = comment['comment_id']
reply = self.db.create_comment(
claim_id=self.claimId,
comment='This is an unnamed response',
parent_id=previous_id
)
self.assertIsNotNone(reply)
self.assertIn('comment', reply)
self.assertIn('comment_id', reply)
self.assertIn('parent_id', reply)
self.assertEqual(reply['parent_id'], comment['comment_id'])
self.assertEqual(reply['claim_id'], comment['claim_id'])
def testSignedComments(self):
comment = self.db.create_comment(
claim_id=self.claimId,
comment='I like big butts and i cannot lie',
2019-05-19 09:00:18 +02:00
channel_name='@sirmixalot',
2019-05-19 08:23:20 +02:00
channel_id='529357c3422c6046d3fec76be2358005ba22abcd',
sig='siggy'
)
self.assertIsNotNone(comment)
self.assertIn('comment', comment)
self.assertIn('comment_id', comment)
self.assertIn('parent_id', comment)
self.assertIsNone(comment['parent_id'])
previous_id = comment['comment_id']
reply = self.db.create_comment(
claim_id=self.claimId,
comment='This is a LBRY verified response',
2019-05-19 09:00:18 +02:00
channel_name='@LBRY',
2019-05-19 08:23:20 +02:00
channel_id='529357c3422c6046d3fec76be2358001ba224bcd',
parent_id=previous_id,
sig='Cursive Font Goes Here'
)
self.assertIsNotNone(reply)
self.assertIn('comment', reply)
self.assertIn('comment_id', reply)
self.assertIn('parent_id', reply)
self.assertEqual(reply['parent_id'], comment['comment_id'])
self.assertEqual(reply['claim_id'], comment['claim_id'])
2019-05-19 09:00:18 +02:00
def testInvalidUsername(self):
self.assertRaises(
AssertionError,
self.db.create_comment,
claim_id=self.claimId,
channel_name='$#(@#$@#$',
channel_id='529357c3422c6046d3fec76be2358001ba224b23',
comment='this is an invalid username'
)
comment = self.db.create_comment(
claim_id=self.claimId,
channel_name='@' + 'a'*255,
channel_id='529357c3422c6046d3fec76be2358001ba224b23',
comment='this is a valid username'
)
self.assertIsNotNone(comment)
self.assertRaises(
AssertionError,
self.db.create_comment,
claim_id=self.claimId,
channel_name='@' + 'a'*256,
channel_id='529357c3422c6046d3fec76be2358001ba224b23',
comment='this username is too long'
)
comment = self.db.create_comment(
claim_id=self.claimId,
channel_name='',
channel_id='529357c3422c6046d3fec76be2358001ba224b23',
comment='this username will default to anonymous'
)
self.assertIsNotNone(comment)
self.assertEqual(comment['channel_name'], server.conf.anonymous['channel_name'])
self.assertEqual(comment['channel_id'], server.conf.anonymous['channel_id'])
self.assertRaises(
AssertionError,
self.db.create_comment,
claim_id=self.claimId,
channel_name='@',
channel_id='529357c3422c6046d3fec76be2358001ba224b23',
comment='this username is too short'
)