from base64 import b64encode 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) 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 = Post.objects.generate_request_get([post]) 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 = Post.objects.generate_response_get([reply_post]) logger.debug(response) key = KeyPair.objects.get(primary=True) self.assertTrue('success' '' '' '' '' 'test_title' '[post]%d[/post]' '%d' '%s' '' % ( key.public_key, reply_post.id, key.key_type, post.id, post.id, str(reply_post.get_pub_time_epoch()), ) 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')