Esempio n. 1
0
 def test_add_existing_email_host_in_database(self):
     """
     Test that checking if correctly we cannot add an existing email host in our database.
     """
     new_email_host_entry = models.EmailHostEntry(
         entry_value=self.lower_case_blacklisted_host)
     self.assertRaises(IntegrityError, lambda: new_email_host_entry.save())
Esempio n. 2
0
 def post(self, request, format=None):
     serializer = BlacklistResourceSerializer(data=request.data, many=True)
     serializer.is_valid(raise_exception=True)
     for entry in serializer.validated_data:
         if entry["kind"] == "ip":
             try:
                 ip_entry = models.IPEntry(entry_value=entry["value"],
                                           reason=entry["reason"])
                 ip_entry.save()
             except IntegrityError:
                 return Response(status=409)
         elif entry["kind"] == "email":
             try:
                 email_entry = models.EmailEntry(entry_value=entry["value"],
                                                 reason=entry["reason"])
                 email_entry.save()
             except IntegrityError:
                 return Response(status=409)
         elif entry["kind"] == "email_host":
             try:
                 host_entry = models.EmailHostEntry(
                     entry_value=entry["value"], reason=entry["reason"])
                 host_entry.save()
             except IntegrityError:
                 return Response(status=409)
     return Response(serializer.validated_data, status=201)
Esempio n. 3
0
    def setUpClass(cls):
        super().setUpClass()
        cls.lower_case_blacklisted_ip = "2001:0:3238:dfe1:63::fefb"
        cls.not_blacklisted_ip = "255.254.253.251"
        cls.lower_case_blacklisted_email = "*****@*****.**"
        cls.not_blacklisted_email = "*****@*****.**"
        cls.lower_case_blacklisted_host = "spam.com"
        cls.not_blacklisted_host = "test.com"
        cls.upper_case_blacklisted_email = "*****@*****.**"

        ip_entry = models.IPEntry(entry_value=cls.lower_case_blacklisted_ip)
        ip_entry.save()
        email_entry = models.EmailEntry(
            entry_value=cls.lower_case_blacklisted_email)
        email_entry.save()
        host_entry = models.EmailHostEntry(
            entry_value=cls.lower_case_blacklisted_host)
        host_entry.save()
        upper_case_email_entry = models.EmailEntry(
            entry_value=cls.upper_case_blacklisted_email)
        upper_case_email_entry.save()
Esempio n. 4
0
    def setUpClass(cls):
        super().setUpClass()
        cls.lower_case_blacklisted_ip = "2001:0:3238:dfe1:63::fefb"
        cls.not_blacklisted_ip = "255.254.253.251"
        cls.lower_case_blacklisted_email = "*****@*****.**"
        cls.not_blacklisted_email = "*****@*****.**"
        cls.lower_case_blacklisted_host = "spam.com"
        cls.not_blacklisted_host = "test.com"
        cls.upper_case_blacklisted_email = "*****@*****.**"

        ip_entry = models.IPEntry(entry_value=cls.lower_case_blacklisted_ip)
        ip_entry.save()
        email_entry = models.EmailEntry(
            entry_value=cls.lower_case_blacklisted_email)
        email_entry.save()
        host_entry = models.EmailHostEntry(
            entry_value=cls.lower_case_blacklisted_host)
        host_entry.save()
        upper_case_email_entry = models.EmailEntry(
            entry_value=cls.upper_case_blacklisted_email)
        upper_case_email_entry.save()

        unauthorized_user = User(username="******")
        unauthorized_user.save()
        unauthorized_token = AuthToken(user=unauthorized_user)
        unauthorized_token.save()
        authorized_user = User(username="******")
        authorized_user.save()
        content_type = ContentType.objects.get_for_model(models.IPEntry)
        view_ip_permission = Permission.objects.get(content_type=content_type,
                                                    codename="view_ipentry")
        add_ip_permission = Permission.objects.get(content_type=content_type,
                                                   codename="add_ipentry")
        content_type = ContentType.objects.get_for_model(models.EmailEntry)
        view_email_permission = Permission.objects.get(
            content_type=content_type, codename="view_emailentry")
        add_email_permission = Permission.objects.get(
            content_type=content_type, codename="add_emailentry")
        content_type = ContentType.objects.get_for_model(models.EmailHostEntry)
        view_emailhost_permission = Permission.objects.get(
            content_type=content_type, codename="view_emailhostentry")
        add_emailhost_permission = Permission.objects.get(
            content_type=content_type, codename="add_emailhostentry")
        authorized_user.user_permissions.add(
            view_ip_permission,
            view_email_permission,
            view_emailhost_permission,
            add_ip_permission,
            add_email_permission,
            add_emailhost_permission,
        )
        authorized_token = AuthToken(user=authorized_user)
        authorized_token.save()
        one_permission_user = User(username="******")
        one_permission_user.save()
        one_permission_user.user_permissions.add(view_ip_permission)
        one_permission_token = AuthToken(user=one_permission_user)
        one_permission_token.save()
        cls.authenticated_client = APIClient()
        cls.authenticated_client.credentials(
            HTTP_AUTHORIZATION=f"Token {unauthorized_token.key}")
        cls.authorized_client = APIClient()
        cls.authorized_client.credentials(
            HTTP_AUTHORIZATION=f"Token {authorized_token.key}")
        cls.unauthenticated_client = APIClient()
        cls.one_permission_client = APIClient()
        cls.one_permission_client.credentials(
            HTTP_AUTHORIZATION=f"Token {one_permission_token}")