def test_encrypted_lookup_hyperlinked_related_field(self):

        dummy_object = dummy_queryset.get(pk=1)

        field = EncryptedLookupHyperlinkedRelatedField("viewname",
                                                       queryset=dummy_queryset)

        serializer = DummySerializer()
        serializer._context = {"request": "a request"}
        field.bind("field_name", serializer)

        field.reverse = lambda view_name, kwargs, request, format: json.dumps(
            kwargs)

        # Assert that get_url encodes the object pk
        self.assertIn(id_cipher.encode(1),
                      field.get_url(dummy_object, "viewname", {}, ""))

        # Assert that DRF's to_representation makes use of our encryption methods
        self.assertIn(id_cipher.encode(1),
                      field.to_representation(dummy_object))

        # field.resolve = lambda data: Namespace(view_name="viewname", args=(), kwargs={"pk": data})

        # Assert that get_object decodes an encoded lookup to return the correct object
        self.assertEqual(dummy_object,
                         field.get_object("", (), {"pk": id_cipher.encode(1)}))

        # Assert that DRF's to_internal_value makes use of our decryption methods
        self.assertEqual(
            dummy_object,
            field.to_internal_value("https://test/" + id_cipher.encode(1) +
                                    '/'))
    def test_encrypted_lookup_hyperlinked_related_field(self):

        dummy_object = dummy_queryset.get(pk=1)

        field = EncryptedLookupHyperlinkedRelatedField("viewname", queryset=dummy_queryset)

        serializer = DummySerializer()
        serializer._context = {"request": "a request"}
        field.bind("field_name", serializer)

        field.reverse = lambda view_name, kwargs, request, format: json.dumps(kwargs)

        # Assert that get_url encodes the object pk
        self.assertIn(id_cipher.encode(1), field.get_url(dummy_object, "viewname", {}, ""))

        # Assert that DRF's to_representation makes use of our encryption methods
        self.assertIn(id_cipher.encode(1), field.to_representation(dummy_object))

        # field.resolve = lambda data: Namespace(view_name="viewname", args=(), kwargs={"pk": data})

        # Assert that get_object decodes an encoded lookup to return the correct object
        self.assertEqual(dummy_object, field.get_object("", (), {"pk": id_cipher.encode(1)}))

        # Assert that DRF's to_internal_value makes use of our decryption methods
        self.assertEqual(dummy_object, field.to_internal_value("https://test/" + id_cipher.encode(1) + '/'))
    def test_decryption(self):

        # Assert successful encryption and decryption for several numbers within
        # the IntegerField range.
        for i in range(1, 10000):
            self.assertEqual(i, id_cipher.decode(id_cipher.encode(i)))

        for i in range(-2147483648, -2147453648):
            self.assertEqual(i, id_cipher.decode(id_cipher.encode(i)))

        for i in range(2147453647, 2147483647):
            self.assertEqual(i, id_cipher.decode(id_cipher.encode(i)))
    def test_decryption(self):

        # Assert successful encryption and decryption for several numbers within
        # the IntegerField range.
        for i in range(1, 10000):
            self.assertEqual(i, id_cipher.decode(id_cipher.encode(i)))

        for i in range(-2147483648, -2147453648):
            self.assertEqual(i, id_cipher.decode(id_cipher.encode(i)))

        for i in range(2147453647, 2147483647):
            self.assertEqual(i, id_cipher.decode(id_cipher.encode(i)))
    def test_encrypted_lookup_field(self):

        field = EncryptedLookupField()

        serializer = DummySerializer()
        field.bind("field_name", serializer)

        # Assert that EncryptedLookupField.to_representation gives an encrypted
        # representation of an integer value.
        self.assertEqual(id_cipher.encode(1), field.to_representation(1))
    def test_encrypted_lookup_field(self):

        field = EncryptedLookupField()

        serializer = DummySerializer()
        field.bind("field_name", serializer)

        # Assert that EncryptedLookupField.to_representation gives an encrypted
        # representation of an integer value.
        self.assertEqual(id_cipher.encode(1), field.to_representation(1))