##// END OF EJS Templates
Merged with default
Merged with default

File last commit:

r829:5301b1d8 decentral
r834:cfa74d10 merge decentral
Show More
test_keys.py
97 lines | 3.7 KiB | text/x-python | PythonLexer
import logging
from django.test import TestCase
from boards.models import KeyPair, GlobalId, Post
logger = logging.getLogger(__name__)
class KeyTest(TestCase):
def test_create_key(self):
key = KeyPair.objects.generate_key('ecdsa')
self.assertIsNotNone(key, 'The key was not created.')
def test_validation(self):
key = KeyPair.objects.generate_key(key_type='ecdsa')
message = 'msg'
signature = key.sign(message)
valid = KeyPair.objects.verify(key.public_key, message, signature,
key_type='ecdsa')
self.assertTrue(valid, 'Message verification failed.')
def test_primary_constraint(self):
KeyPair.objects.generate_key(key_type='ecdsa', primary=True)
try:
KeyPair.objects.generate_key(key_type='ecdsa', primary=True)
self.fail('Exception should be thrown indicating there can be only'
' one primary key.')
except Exception:
pass
def test_model_id_save(self):
model_id = GlobalId(key_type='test', key='test key', local_id='1')
model_id.save()
def test_request_get(self):
post = self._create_post_with_key()
request = Post.objects.generate_request_get([post])
logger.debug(request)
self.assertTrue('<request type="get" version="1.0">'
'<model name="post" version="1.0">'
'<id key="pubkey" local-id="1" type="test_key_type" />'
'</model>'
'</request>' in request,
'Wrong XML generated for the GET request.')
def test_response_get(self):
post = self._create_post_with_key()
reply_post = Post.objects.create_post(title='test_title',
text='[post]%d[/post]' % post.id, thread=post.get_thread())
reply_reply_post = Post.objects.create_post(title='',
text='[post]%d[/post]' % reply_post.id,
thread=post.get_thread())
response = Post.objects.generate_response_get([reply_post])
logger.debug(response)
self.assertTrue('<response>'
'<status>success</status>'
'<models>'
'<model name="post" ref-id="1">'
'<id key="pubkey" local-id="%d" type="test_key_type" />'
'<title>test_title</title>'
'<text>[post]%d[/post]</text>'
'<thread>%d</thread>'
'<pub-time>%s</pub-time>'
'<edit-time>%s</edit-time>'
'<previous>'
'<id key="pubkey" local-id="%d" type="test_key_type" />'
'</previous>'
'<next>'
'<id key="pubkey" local-id="%d" type="test_key_type" />'
'</next>'
'</model>'
'</models>'
'</response>' % (
reply_post.id,
post.id,
post.id,
str(reply_post.get_edit_time_epoch()),
str(reply_post.get_pub_time_epoch()),
post.id,
reply_reply_post.id,
) in response,
'Wrong XML generated for the GET response.')
def _create_post_with_key(self):
key = KeyPair(public_key='pubkey', private_key='privkey',
key_type='test_key_type', primary=True)
key.save()
return Post.objects.create_post(title='test_title', text='test_text')