class TrustTest(TestCase): ROOT_PK = getattr(settings, 'TRUSTS_ROOT_PK', 1) SETTLOR_PK = getattr(settings, 'TRUSTS_ROOT_SETTLOR', None) def setUp(self): super(TrustTest, self).setUp() call_command('create_trust_root') get_or_create_root_user(self) create_test_users(self) def get_perm_code(self, perm): return '%s.%s' % ( perm.content_type.app_label, perm.codename ) def test_root(self): root = Trust.objects.get_root() self.assertEqual(root.pk, self.ROOT_PK) self.assertEqual(root.pk, root.trust.pk) self.assertEqual(Trust.objects.filter(trust=F('id')).count(), 1) def test_trust_unique_together_title_settlor(self): # Create `Title A` for user self.trust = Trust(settlor=self.user, title='Title A', trust=Trust.objects.get_root()) self.trust.save() # Create `Title A` for user1 self.trust1 = Trust(settlor=self.user1, title='Title A', trust=Trust.objects.get_root()) self.trust1.save() # Empty string title should be allowed (reserved for settlor_default) self.trust = Trust(settlor=self.user, title='', trust=Trust.objects.get_root()) self.trust.save() # Create `Title A` for user, again (should fail) try: self.trust2 = Trust(settlor=self.user, title='Title A', trust=Trust.objects.get_root()) self.trust2.save() self.fail('Expected IntegrityError not raised.') except IntegrityError as ie: pass def test_read_permissions_added(self): ct = ContentType.objects.get_for_model(Trust) self.assertIsNotNone(Permission.objects.get( content_type=ct, codename='%s_%s' % ('read', ct.model) )) def test_filter_by_user_perm(self): self.trust1, created = Trust.objects.get_or_create_settlor_default(self.user) self.trust2 = Trust(settlor=self.user, title='Title 0A', trust=Trust.objects.get_root()) self.trust2.save() tup = TrustUserPermission(trust=self.trust2, entity=self.user, permission=Permission.objects.first()) tup.save() self.trust3 = Trust(settlor=self.user, title='Title 0B', trust=Trust.objects.get_root()) self.trust3.save() self.trust4 = Trust(settlor=self.user1, title='Title 1A', trust=Trust.objects.get_root()) self.trust4.save() tup = TrustUserPermission(trust=self.trust4, entity=self.user, permission=Permission.objects.first()) tup.save() self.trust5 = Trust(settlor=self.user1, title='Title 1B', trust=Trust.objects.get_root()) self.trust5.save() self.group = Group(name='Group A') self.group.save() self.user.groups.add(self.group) self.trust5.groups.add(self.group) self.trust6 = Trust(settlor=self.user1, title='Title 1C', trust=Trust.objects.get_root()) self.trust6.save() trusts = Trust.objects.filter_by_user_perm(self.user) trust_pks = [t.pk for t in trusts] self.assertEqual(trusts.count(), 3) self.assertTrue(self.trust2.id in trust_pks) self.assertTrue(self.trust4.id in trust_pks) self.assertTrue(self.trust5.id in trust_pks) def test_change_trust(self): self.trust1 = Trust(settlor=self.user, title='Title 0A', trust=Trust.objects.get_root()) self.trust1.save() self.trust2 = Trust(settlor=self.user1, title='Title 1A', trust=Trust.objects.get_root()) self.trust2.save() try: self.trust2.trust = self.trust1 self.trust2.full_clean() self.fail('Expected ValidationError not raised.') except ValidationError as ve: pass