def test_all(self): with self.subTest('Exception raised'): with self.assertRaisesRegex( UnauthorizedAction, 'Missing authorization by abraham@aaa.'): process_event(self.event) with self.subTest('Post not created'): with self.assertRaises(Post.DoesNotExist): Post.select().join(Server).where(Server.name == 'aaa', Post.path == '/post1').get() with self.subTest('Unverified signature saved'): signatures: List[UnverifiedSignature] = list( UnverifiedSignature.select().where( UnverifiedSignature.event == self.event)) self.assertEqual(len(signatures), 1) self.assertEqual(signatures[0].user, 'abraham@aaa') self.assertIsNone(signatures[0].post) self.assertEqual(self.event.signatures['abraham@aaa'], signatures[0].data.hex()) with self.subTest('Verified signature saved'): signatures: List[Signature] = list( Signature.select().where(Signature.event == self.event)) self.assertEqual(len(signatures), 1) self.assertEqual(signatures[0].keypair, self.bernard_keypair) self.assertIsNone(signatures[0].post) self.assertEqual(self.event.signatures['bernard@aaa'], signatures[0].data.hex())
def setUpSafe(self): super().setUpSafe() self.post = Post() self.post.server = self.server self.post.path = '/post1' self.post.data = { 'body': 'How are you?', } self.post.save() UserPostRelation.create(source=self.abraham, type='wrote', target=self.post) event = Event() event.server = 'aaa' event.authors = ['bernard@aaa'] event.parent = 'aaa/post1' event.path = '/post1#c1' event.data = {'body': 'Good!'} event.signatures = { 'bernard@aaa': sign_post(event, self.bernard_keypair).hex(), } event.save() process_event(event)
def setUpSafe(self): super().setUpSafe() self.event = Event() self.event.server = 'aaa' self.event.authors = ['abraham@aaa'] self.event.path = '/post1' self.event.diff = { 'body': 'Hello, World!', 'tags': ['Aaa', 'Bbb', 'Ccc'], } self.event.signatures = { 'abraham@aaa': sign_post(self.event, self.abraham_keypair).hex(), } self.event.save() process_event(self.event)
def test_all(self): with self.subTest('Event is not valid yet'): with self.assertRaises(UnauthorizedAction): process_event(self.event) with self.subTest('Post not created'): with self.assertRaises(Post.DoesNotExist): Post.select().join(Server).where(Server.name == 'aaa', Post.path == '/post1').get() with self.subTest('Unverified signature saved'): signatures: List[UnverifiedSignature] = list( UnverifiedSignature.select().where( UnverifiedSignature.event == self.event)) self.assertEqual(len(signatures), 1) self.assertEqual(signatures[0].user, 'abraham@aaa') self.assertIsNone(signatures[0].post) self.assertEqual(self.event.signatures['abraham@aaa'], signatures[0].data.hex()) # And now event becomes valid with self.subTest(): self.load_abraham2() process_event(self.event) with self.subTest('Post created'): post: Post = Post.select().join(Server).where( Server.name == 'aaa', Post.path == '/post1').get() self.assertEqual(self.event.diff, post.data) with self.subTest('Unverified signature deleted'): with self.assertRaises(UnverifiedSignature.DoesNotExist): UnverifiedSignature.select().where( UnverifiedSignature.event == self.event).get() with self.subTest('Verified signature saved'): signatures: List[Signature] = list( Signature.select().where(Signature.event == self.event)) self.assertEqual(len(signatures), 1) self.assertEqual(signatures[0].keypair, self.abraham_keypair) self.assertEqual(signatures[0].post, post) self.assertEqual(self.event.signatures['abraham@aaa'], signatures[0].data.hex())
def setUpSafe(self): super().setUpSafe() self.event = Event() self.event.server = 'aaa' self.event.authors = ['abraham@aaa'] self.event.path = '/post1' self.event.diff = { 'body': 'A normal post.', } self.event.signatures = { 'abraham@aaa': sign_post(self.event, self.abraham_keypair).hex(), 'bernard@aaa': sign_post_incorrectly(self.event, self.bernard_keypair).hex(), } self.event.save() process_event(self.event)
def setUpSafe(self): super().setUpSafe() self.post = Post() self.post.server = self.server self.post.authors = [self.abraham] self.post.path = '/post1' self.post.data = { 'title': 'Hello', 'subtitle': 'A hello world post', 'body': 'Hello, World!', } self.post.save() event = Event() event.server = 'aaa' event.authors = ['abraham@aaa'] event.path = '/post1' event.diff = { 'title': 'Hello (updated)', 'subtitle': None, 'tags': ['Aaa', 'Bbb', 'Ccc'], } event.signatures = { 'abraham@aaa': sign_post(event, self.abraham_keypair, data={ 'title': 'Hello (updated)', 'body': 'Hello, World!', 'tags': ['Aaa', 'Bbb', 'Ccc'], }).hex(), } event.save() process_event(event) self.post.reload()
def test_all(self): with self.assertRaisesRegex(UnauthorizedAction, 'Missing authorization by abraham@aaa.'): process_event(self.event)