from base64 import b64encode import logging from django.test import TestCase from boards.models import KeyPair, GlobalId, Post, Signature from boards.models.post.sync import SyncManager 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_value = key.sign(message) signature = Signature(key_type='ecdsa', key=key.public_key, signature=signature_value) valid = KeyPair.objects.verify(signature, message) self.assertTrue(valid, 'Message verification failed.') def test_primary_constraint(self): KeyPair.objects.generate_key(key_type='ecdsa', primary=True) with self.assertRaises(Exception): KeyPair.objects.generate_key(key_type='ecdsa', primary=True) 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 = GlobalId.objects.generate_request_get([post.global_id]) logger.debug(request) key = KeyPair.objects.get(primary=True) self.assertTrue('' '' '' '' '' % ( key.public_key, key.key_type, ) 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()) response = SyncManager.generate_response_get([reply_post]) logger.debug(response) key = KeyPair.objects.get(primary=True) self.assertTrue('success' '' '' '' '' 'test_title' '[post]%s[/post]' '' '%s' '%s' '' % ( key.public_key, reply_post.id, key.key_type, str(post.global_id), key.public_key, post.id, key.key_type, str(reply_post.get_pub_time_str()), post.version, ) in response, 'Wrong XML generated for the GET response.') def _create_post_with_key(self): KeyPair.objects.generate_key(primary=True) return Post.objects.create_post(title='test_title', text='test_text')