Merge remote-tracking branch 'origin/master'

This commit is contained in:
Oleg Silkin 2019-06-11 10:54:36 -04:00
commit d1930c082e
4 changed files with 11 additions and 7 deletions

View file

@ -14,6 +14,7 @@ CREATE TABLE IF NOT EXISTS COMMENT (
ParentId TEXT DEFAULT NULL, ParentId TEXT DEFAULT NULL,
Signature TEXT DEFAULT NULL, Signature TEXT DEFAULT NULL,
Timestamp INTEGER NOT NULL, Timestamp INTEGER NOT NULL,
SigningTs TEXT DEFAULT NULL,
CONSTRAINT COMMENT_PRIMARY_KEY PRIMARY KEY (CommentId) ON CONFLICT IGNORE, CONSTRAINT COMMENT_PRIMARY_KEY PRIMARY KEY (CommentId) ON CONFLICT IGNORE,
CONSTRAINT COMMENT_SIGNATURE_SK UNIQUE (Signature) ON CONFLICT ABORT, CONSTRAINT COMMENT_SIGNATURE_SK UNIQUE (Signature) ON CONFLICT ABORT,
CONSTRAINT COMMENT_CHANNEL_FK FOREIGN KEY (ChannelId) REFERENCES CHANNEL(ClaimId) CONSTRAINT COMMENT_CHANNEL_FK FOREIGN KEY (ChannelId) REFERENCES CHANNEL(ClaimId)
@ -22,7 +23,7 @@ CREATE TABLE IF NOT EXISTS COMMENT (
ON UPDATE CASCADE ON DELETE NO ACTION -- setting null implies comment is top level ON UPDATE CASCADE ON DELETE NO ACTION -- setting null implies comment is top level
); );
ALTER TABLE COMMENT ADD COLUMN SigningTs TEXT DEFAULT NULL; -- ALTER TABLE COMMENT ADD COLUMN SigningTs TEXT DEFAULT NULL;
-- DROP TABLE IF EXISTS CHANNEL; -- DROP TABLE IF EXISTS CHANNEL;
CREATE TABLE IF NOT EXISTS CHANNEL( CREATE TABLE IF NOT EXISTS CHANNEL(

View file

@ -94,9 +94,8 @@ def insert_comment(conn: sqlite3.Connection, claim_id: str = None, comment: str
channel_id: str = None, signature: str = None, signing_ts: str = None, channel_id: str = None, signature: str = None, signing_ts: str = None,
parent_id: str = None) -> str: parent_id: str = None) -> str:
timestamp = int(time.time()) timestamp = int(time.time())
prehash = ':'.join((claim_id, comment, str(timestamp),)) prehash = b':'.join((claim_id.encode(), comment.encode(), str(timestamp).encode(),))
prehash = bytes(prehash.encode('utf-8')) comment_id = nacl.hash.sha256(prehash).decode()
comment_id = nacl.hash.sha256(prehash).decode('utf-8')
with conn: with conn:
conn.execute( conn.execute(
""" """

View file

@ -2,8 +2,10 @@ import logging
import sqlite3 import sqlite3
from src.database import get_comment_or_none from src.database import get_comment_or_none
from src.database import insert_comment, insert_channel from src.database import insert_comment
from src.misc import validate_channel, validate_signature from src.database import insert_channel
from src.misc import validate_channel
from src.misc import validate_signature
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -16,7 +18,7 @@ def create_comment(conn: sqlite3.Connection, comment: str, claim_id: str, channe
try: try:
comment_id = insert_comment( comment_id = insert_comment(
conn=conn, comment=comment, claim_id=claim_id, channel_id=channel_id, conn=conn, comment=comment, claim_id=claim_id, channel_id=channel_id,
signature=signature, parent_id=parent_id signature=signature, parent_id=parent_id, signing_ts=signing_ts
) )
return get_comment_or_none(conn, comment_id) return get_comment_or_none(conn, comment_id)
except sqlite3.IntegrityError as ie: except sqlite3.IntegrityError as ie:

View file

@ -75,6 +75,7 @@ class TestCommentCreation(DatabaseTestCase):
signing_ts='asdasd' signing_ts='asdasd'
) )
self.assertIsNotNone(comment) self.assertIsNotNone(comment)
self.assertIn('signing_ts', comment)
previous_id = comment['comment_id'] previous_id = comment['comment_id']
reply = create_comment( reply = create_comment(
conn=self.conn, conn=self.conn,
@ -88,6 +89,7 @@ class TestCommentCreation(DatabaseTestCase):
) )
self.assertIsNotNone(reply) self.assertIsNotNone(reply)
self.assertEqual(reply['parent_id'], comment['comment_id']) self.assertEqual(reply['parent_id'], comment['comment_id'])
self.assertIn('signing_ts', reply)
def test04UsernameVariations(self): def test04UsernameVariations(self):
self.assertRaises( self.assertRaises(