def get_pk(self, obj): """ Get hashed pk value :param obj: instance to hash pk for :return: string """ return get_hasher().encode(obj.pk)
def test_hasher_bad_hashid(self): """ Test that we get none if hashid is bad :return: None """ h = hasher.get_hasher() self.assertIsNone(h.decode_single('eeses'))
def get_by_hashid(self, hashid): """ Get an object by a hashed pk :param hashid: hashed pk value :return: None """ hasher = get_hasher() return self.get(pk=hasher.decode_single(hashid))
def test_not_found(self): """ Test that we get default error if model not found :return: None """ hasher = get_hasher() hashed_pk = hasher.encode(9999) with self.assertRaises(self.TestUser.DoesNotExist): self.TestUser.objects.get_by_hashid(hashed_pk)
def test_successful(self): """ Test that we can get an instance by hashid :return: None """ hasher = get_hasher() user = self.TestUser.objects.create(email='*****@*****.**') hashed_pk = hasher.encode(user.pk) retrieved_user = self.TestUser.objects.get_by_hashid(hashed_pk) self.assertEquals(retrieved_user, user)
def test_hasher_successful(self): """ Test that we can encode and decode an integer value :return: None """ h = hasher.get_hasher() pk_value = 29303 hashed = h.encode(pk_value) self.assertIsInstance(hashed, str) self.assertEquals(h.decode_single(hashed), pk_value)
def test_hashid_model_serializer_successful(self): """ Test that we can serialize with the hashid serializer :return: None """ hasher = get_hasher() user = User.objects.create_user(email='*****@*****.**') hashed_pk = hasher.encode(user.pk) serialized_user_data = TestUserSerializer(user).data self.assertEquals(len(serialized_user_data.values()), 2) # only pk and email self.assertEquals(serialized_user_data['email'], user.email) self.assertEquals(serialized_user_data['pk'], hashed_pk)