from boards.models import KeyPair, Post, Tag from boards.models.post.sync import SyncManager from boards.tests.mocks import MockRequest from boards.views.sync import response_get __author__ = 'neko259' from django.test import TestCase class SyncTest(TestCase): def test_get(self): """ Forms a GET request of a post and checks the response. """ key = KeyPair.objects.generate_key(primary=True) tag = Tag.objects.create(name='tag1') post = Post.objects.create_post(title='test_title', text='test_text\rline two', tags=[tag]) request = MockRequest() request.body = ( '' '' '' '' '' % (post.global_id.key, post.id, post.global_id.key_type) ) response = response_get(request).content.decode() self.assertTrue( 'success' '' '' '' '' '%s' '%s' '%s' '%s' '' % ( post.global_id.key, post.global_id.local_id, post.global_id.key_type, post.title, post.get_sync_text(), post.get_thread().get_tags().first().name, post.get_pub_time_str(), ) in response, 'Wrong response generated for the GET request.') post.delete() key.delete() KeyPair.objects.generate_key(primary=True) SyncManager.parse_response_get(response, None) self.assertEqual(1, Post.objects.count(), 'Post was not created from XML response.') parsed_post = Post.objects.first() self.assertEqual('tag1', parsed_post.get_thread().get_tags().first().name, 'Invalid tag was parsed.') SyncManager.parse_response_get(response, None) self.assertEqual(1, Post.objects.count(), 'The same post was imported twice.') self.assertEqual(1, parsed_post.global_id.signature_set.count(), 'Signature was not saved.') post = parsed_post # Trying to sync the same once more response = response_get(request).content.decode() self.assertTrue( 'success' '' '' '' '' '%s' '%s' '%s' '%s' '' % ( post.global_id.key, post.global_id.local_id, post.global_id.key_type, post.title, post.get_sync_text(), post.get_thread().get_tags().first().name, post.get_pub_time_str(), ) in response, 'Wrong response generated for the GET request.')