|
@@ -1,5 +1,6 @@
|
|
from django.core import management
|
|
from django.core import management
|
|
|
|
|
|
|
|
+from api import settings
|
|
from desecapi import models
|
|
from desecapi import models
|
|
from desecapi.tests.base import DomainOwnerTestCase
|
|
from desecapi.tests.base import DomainOwnerTestCase
|
|
|
|
|
|
@@ -20,31 +21,68 @@ class StopAbuseCommandTest(DomainOwnerTestCase):
|
|
# test implicit by absence assertPdnsRequests
|
|
# test implicit by absence assertPdnsRequests
|
|
management.call_command('stop-abuse')
|
|
management.call_command('stop-abuse')
|
|
|
|
|
|
- def test_remove_rrsets(self):
|
|
|
|
|
|
+ def test_remove_rrsets_by_domain_name(self):
|
|
with self.assertPdnsRequests(self.requests_desec_rr_sets_update(name=self.my_domain.name)):
|
|
with self.assertPdnsRequests(self.requests_desec_rr_sets_update(name=self.my_domain.name)):
|
|
management.call_command('stop-abuse', self.my_domain)
|
|
management.call_command('stop-abuse', self.my_domain)
|
|
self.assertEqual(models.RRset.objects.filter(domain__name=self.my_domain.name).count(), 1) # only NS left
|
|
self.assertEqual(models.RRset.objects.filter(domain__name=self.my_domain.name).count(), 1) # only NS left
|
|
|
|
+ self.assertEqual(
|
|
|
|
+ set(models.RR.objects.filter(rrset__domain__name=self.my_domain.name).values_list('content', flat=True)),
|
|
|
|
+ set(settings.DEFAULT_NS),
|
|
|
|
+ )
|
|
|
|
|
|
- def test_disable_user(self):
|
|
|
|
|
|
+ def test_remove_rrsets_by_email(self):
|
|
|
|
+ with self.assertPdnsRequests(
|
|
|
|
+ *[self.requests_desec_rr_sets_update(name=d.name) for d in self.my_domains],
|
|
|
|
+ expect_order=False,
|
|
|
|
+ ):
|
|
|
|
+ management.call_command('stop-abuse', self.owner.email)
|
|
|
|
+ self.assertEqual(models.RRset.objects.filter(domain__name=self.my_domain.name).count(), 1) # only NS left
|
|
|
|
+ self.assertEqual(
|
|
|
|
+ set(models.RR.objects.filter(rrset__domain__name=self.my_domain.name).values_list('content', flat=True)),
|
|
|
|
+ set(settings.DEFAULT_NS),
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ def test_disable_user_by_domain_name(self):
|
|
with self.assertPdnsRequests(self.requests_desec_rr_sets_update(name=self.my_domain.name)):
|
|
with self.assertPdnsRequests(self.requests_desec_rr_sets_update(name=self.my_domain.name)):
|
|
management.call_command('stop-abuse', self.my_domain)
|
|
management.call_command('stop-abuse', self.my_domain)
|
|
self.owner.refresh_from_db()
|
|
self.owner.refresh_from_db()
|
|
self.assertEqual(self.owner.is_active, False)
|
|
self.assertEqual(self.owner.is_active, False)
|
|
|
|
|
|
- def test_keep_other_owned_domains(self):
|
|
|
|
|
|
+ def test_disable_user_by_email(self):
|
|
|
|
+ with self.assertPdnsRequests(
|
|
|
|
+ *[self.requests_desec_rr_sets_update(name=d.name) for d in self.my_domains],
|
|
|
|
+ expect_order=False,
|
|
|
|
+ ):
|
|
|
|
+ management.call_command('stop-abuse', self.owner.email)
|
|
|
|
+ self.owner.refresh_from_db()
|
|
|
|
+ self.assertEqual(self.owner.is_active, False)
|
|
|
|
+
|
|
|
|
+ def test_keep_other_owned_domains_name(self):
|
|
with self.assertPdnsRequests(self.requests_desec_rr_sets_update(name=self.my_domain.name)):
|
|
with self.assertPdnsRequests(self.requests_desec_rr_sets_update(name=self.my_domain.name)):
|
|
management.call_command('stop-abuse', self.my_domain)
|
|
management.call_command('stop-abuse', self.my_domain)
|
|
self.assertGreater(models.RRset.objects.filter(domain__name=self.my_domains[1].name).count(), 1)
|
|
self.assertGreater(models.RRset.objects.filter(domain__name=self.my_domains[1].name).count(), 1)
|
|
|
|
|
|
|
|
+ def test_dont_keep_other_owned_domains_email(self):
|
|
|
|
+ with self.assertPdnsRequests(
|
|
|
|
+ *[self.requests_desec_rr_sets_update(name=d.name) for d in self.my_domains],
|
|
|
|
+ expect_order=False,
|
|
|
|
+ ):
|
|
|
|
+ management.call_command('stop-abuse', self.owner.email)
|
|
|
|
+ self.assertEqual(models.RRset.objects.filter(domain__name=self.my_domains[1].name).count(), 1)
|
|
|
|
+
|
|
def test_only_disable_owner(self):
|
|
def test_only_disable_owner(self):
|
|
- with self.assertPdnsRequests(self.requests_desec_rr_sets_update(name=self.my_domain.name)):
|
|
|
|
- management.call_command('stop-abuse', self.my_domain)
|
|
|
|
|
|
+ with self.assertPdnsRequests(
|
|
|
|
+ self.requests_desec_rr_sets_update(name=self.my_domains[0].name),
|
|
|
|
+ self.requests_desec_rr_sets_update(name=self.my_domains[1].name),
|
|
|
|
+ expect_order=False,
|
|
|
|
+ ):
|
|
|
|
+ management.call_command('stop-abuse', self.my_domain, self.owner.email)
|
|
self.my_domain.owner.refresh_from_db()
|
|
self.my_domain.owner.refresh_from_db()
|
|
self.other_domain.owner.refresh_from_db()
|
|
self.other_domain.owner.refresh_from_db()
|
|
self.assertEqual(self.my_domain.owner.is_active, False)
|
|
self.assertEqual(self.my_domain.owner.is_active, False)
|
|
self.assertEqual(self.other_domain.owner.is_active, True)
|
|
self.assertEqual(self.other_domain.owner.is_active, True)
|
|
|
|
|
|
- def test_disable_owners(self):
|
|
|
|
|
|
+ def test_disable_owners_by_domain_name(self):
|
|
with self.assertPdnsRequests(
|
|
with self.assertPdnsRequests(
|
|
self.requests_desec_rr_sets_update(name=self.my_domain.name),
|
|
self.requests_desec_rr_sets_update(name=self.my_domain.name),
|
|
self.requests_desec_rr_sets_update(name=self.other_domain.name),
|
|
self.requests_desec_rr_sets_update(name=self.other_domain.name),
|
|
@@ -55,3 +93,15 @@ class StopAbuseCommandTest(DomainOwnerTestCase):
|
|
self.other_domain.owner.refresh_from_db()
|
|
self.other_domain.owner.refresh_from_db()
|
|
self.assertEqual(self.my_domain.owner.is_active, False)
|
|
self.assertEqual(self.my_domain.owner.is_active, False)
|
|
self.assertEqual(self.other_domain.owner.is_active, False)
|
|
self.assertEqual(self.other_domain.owner.is_active, False)
|
|
|
|
+
|
|
|
|
+ def test_disable_owners_by_email(self):
|
|
|
|
+ with self.assertPdnsRequests(
|
|
|
|
+ *[self.requests_desec_rr_sets_update(name=d.name) for d in self.my_domains + self.other_domains],
|
|
|
|
+ expect_order=False,
|
|
|
|
+ ):
|
|
|
|
+ management.call_command('stop-abuse', self.owner.email, *[d.owner.email for d in self.other_domains])
|
|
|
|
+ self.my_domain.owner.refresh_from_db()
|
|
|
|
+ self.other_domain.owner.refresh_from_db()
|
|
|
|
+ self.assertEqual(self.my_domain.owner.is_active, False)
|
|
|
|
+ self.assertEqual(self.other_domain.owner.is_active, False)
|
|
|
|
+
|