Esempio n. 1
0
    def create_object(self, data=None, save=True, parent_resources=None):
        """Overriding Resource class method to encrypt password before creating User

        :param data: Dictionary {"password":"******", "email": "mail"}
        :param save: Boolean
        :param parent_resources: Resource
        :return: UserResource -- user resource object
        """
        kwargs = {}
        data = data or self.data
        data['password'] = bcrypt.generate_password_hash(data['password'])
        for field in super(UserResource, self).get_fields():
            if field in self.document._fields.keys() and field not in self.readonly_fields and (type(data) is list or (type(data) is dict and (field in data))):
                kwargs[field] = self._get('create_object', data, field, parent_resources=parent_resources)
        obj = self.document(**kwargs)
        if save:
            self._save(obj)
        return obj
Esempio n. 2
0
 def test_list_scores(self):
     """
     Test routine for getting a list of all scores
     """
     for i in range(10):
         User(email=str(i) + "@dot.net", password=bcrypt.generate_password_hash("toor")).save()
         Item(name=str(i), description="bla").save()
     users = User.objects().all()
     self.items = Item.objects().all()
     for i in range(50):
         try:
             Score(score=np.random.randint(1, 6), user=users[np.random.randint(0, 10)].id,
                   item=self.items[np.random.randint(0, 10)].id).save()
         except:
             continue
     resp = self.c.get('/scores/')
     self.assertEqual(resp.status_code, 200)
     self.assertTrue(len(json.loads(resp.data)['data']) > 0)
Esempio n. 3
0
    def test_recommendations(self):
        """
        Test routine for user creation, login, logout and getting recommendations
        """
        for i in range(100):
            User(email=str(i) + "@dot.net", password=bcrypt.generate_password_hash("toor")).save()
            Item(name=str(i), description="bla").save()
        users = User.objects().all()
        self.items = Item.objects().all()
        for i in range(1000):
            try:
                Score(score=np.random.randint(1, 6), user=users[np.random.randint(0, 100)].id,
                      item=self.items[np.random.randint(0, 100)].id).save()
            except:
                continue

        user1 = self.c.post('/users/', data=json.dumps({
            "email": "*****@*****.**",
            "password": "******"
        }))
        self.assertEqual(user1.status_code, 200)
        self.assertEqual(json.loads(user1.data)["email"], "*****@*****.**")

        headers = {'Content-type': 'application/x-www-form-urlencoded'}
        login = self.c.post('/login', data={
            "email": "*****@*****.**",
            "password": "******"
        }, headers=headers)
        self.assertEqual(json.loads(login.data)["status"][1]["result"], "logged in")

        for i in range(30):
            try:
                Score(score=np.random.randint(1, 6), user=json.loads(user1.data)['id'],
                      item=self.items[np.random.randint(0, 50)].id).save()
            except:
                continue

        resp = self.c.get('/recommend')
        self.assertEqual(resp.status_code, 200)
        self.assertTrue(len(json.loads(resp.data)) > 0)

        logout = self.c.get('/logout')
        self.assertEqual(json.loads(logout.data)["status"], "logged out")