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
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)
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")