def test_add_new_user(self): new_user = { 'username': '******', 'password': '******', 'displayName': { 'firstName': 'Aaron', 'lastName': 'Smith' }, 'email': '*****@*****.**', 'adminRights': False, 'paymentInfo': { 'name': 'Aaron Smith', 'cardType': 'VISA', 'num': 451535486, 'expiry': datetime.datetime(2017, 1, 1) }, 'address': { 'number': 123, 'name': 'Main', 'streetType': 'Boulevard', 'postalCode': 'M3E5R1' } } with flask_app.app_context(): User.save(new_user) found_user = User.get_by_email(new_user['email']) self.assertEqual(new_user['email'], found_user['email'], "User emails not equal") User.remove(new_user['email'])
def test_admin_add_restaurant(self): json_response_reg = self.__register_user(self.__admin_user_data) admin_token = self.__login_user(json.loads(self.__admin_user_data)) # add restaurant as admin result = self.app.post('/admin/restaurant/add', headers={ 'Content-Type': 'application/json', 'token': admin_token }, data=json.dumps(self.__test_restaurant_data_1)) json_data = json.loads(result.data) self.assertTrue(json_data['data']['restaurant'] is not None, 'restaurant not added') with flask_app.app_context(): Restaurant.remove(json_data['data']['restaurantId']) User.remove(json_response_reg['data']['user']['email']) return { 'id': json_data['data']['restaurantId'], 'token': admin_token, 'restaurant': json_data['data']['restaurant'] }
def test_get_customer_info(self): json_response_reg = self.__register_user() token = self.__login() result = self.app.get('/customer/profile', headers={'token': token}) self.assertIsNotNone(result, 'No user info') with flask_app.app_context(): User.remove(json_response_reg['data']['user']['email'])
def test_get_customer_payment_info(self): json_response_reg = self.__register_user() token = self.__login() result = self.app.get('/customer/payment', headers={'token': token}) json_data = json.loads(result.data) self.assertTrue(json_data['data']['paymentInfo'] is not None, 'no payment info') with flask_app.app_context(): User.remove(json_response_reg['data']['user']['email'])
def test_get_all_restaurants(self): restaurant_1_id = self.__add_restaurant(self.__test_restaurant_data_1) restaurant_2_id = self.__add_restaurant(self.__test_restaurant_data_2) result = self.app.get('/restaurant') json_data = json.loads(result.data) self.assertTrue( len(json_data['data']['restaurants']) >= 2, 'no items in db') with flask_app.app_context(): Restaurant.remove(restaurant_1_id) Restaurant.remove(restaurant_2_id)
def test_register_new_users(self): data = '{"address": {"name": "Main", "number": 123, "postalCode": "M3E5R1", "streetType": "Street"}, ' \ '"adminRights": false, "displayName": {"firstName": "Aaron", "lastName": "Smith"}, ' \ '"email": "*****@*****.**", "password": "******", "paymentInfo": {"cardType": "VISA", ' \ '"expiry": "1/1/17 12:00:00 AM UTC", "name": "steve Smith", "num": 451535486}, "username": "******"}' json_response = self.__register_user(data) self.assertEqual(json.dumps(json_response['data']['user']), data, 'data returned is not the same') with flask_app.app_context(): User.remove(json_response['data']['user']['email'])
def test_get_restaurant_by_id(self): restaurant_id = self.__add_restaurant(self.__test_restaurant_data_1) result = self.app.get('/restaurant/id/' + str(restaurant_id)) json_data = json.loads(result.data) self.assertTrue( json_data['data']['restaurant'] is not None and json_data['data']['restaurant']['address']['streetName'] == self.__test_restaurant_data_1['address']['streetName'], 'no proper restaurant by id found') with flask_app.app_context(): Restaurant.remove(restaurant_id)
def test_admin_register(self): data = '{"username": "******","password": "******","displayName": {"firstName": "Aaron",' \ '"lastName": "Fernandes"},"email": "*****@*****.**","adminRights": true, ' \ '"paymentInfo": {"name": "Aaron Fernandes","cardType": "VISA","num": 451535486,' \ '"expiry": "1/1/17 12:00:00 AM UTC"},"address":{"number": 345,"name": "Fake","streetType": ' \ '"Street","postalCode": "M3H5R1"}}' json_response = self.__register_user(data) self.assertTrue( json.dumps(json_response['data']['user']['adminRights']), 'admin register failed') with flask_app.app_context(): User.remove(json_response['data']['user']['email'])
def test_add_new_item(self): new_item = { 'name': 'Test Item', 'description': 'This is just a test description', 'imageURL': "http://i.imgur.com/1vLLI3A.png", 'price': 9.99, 'calories': 500, 'category': 'Entrees', 'tags': ['bread', 'healthy'] } with flask_app.app_context(): Item.save(new_item) found_item = Item.get_by_name(new_item['name']) self.assertEqual(new_item['name'], found_item['name'], "Items not equal") Item.remove(found_item['_id'])
def test_login_token(self): data = '{"address": {"name": "Main", "number": 123, "postalCode": "M3E5R1", "streetType": "Street"}, ' \ '"adminRights": false, "displayName": {"firstName": "Aaron", "lastName": "Smith"}, ' \ '"email": "*****@*****.**", "password": "******", "paymentInfo": {"cardType": "VISA", ' \ '"expiry": "1/1/17 12:00:00 AM UTC", "name": "steve Smith", "num": 451535486}, "username": "******"}' json_response_reg = self.__register_user(data) result = self.app.post('/login', headers={ 'username': '******', 'password': '******' }) json_response = json.loads(result.data) self.assertTrue(json_response['data']['token'] is not None, 'error with json: (' + json.dumps(json_response) + ')') with flask_app.app_context(): User.remove(json_response_reg['data']['user']['email'])
def test_admin_login(self): data = '{"username": "******","password": "******","displayName": {"firstName": "Aaron",' \ '"lastName": "Fernandes"},"email": "*****@*****.**","adminRights": true, ' \ '"paymentInfo": {"name": "Aaron Fernandes","cardType": "VISA","num": 451535486,' \ '"expiry": "1/1/17 12:00:00 AM UTC"},"address":{"number": 345,"name": "Fake","streetType": ' \ '"Street","postalCode": "M3H5R1"}}' json_response_reg = self.__register_user(data) result = self.app.post('/login', headers={ 'username': '******', 'password': '******' }) json_response = json.loads(result.data) self.assertTrue(json_response['data']['adminRights'], 'error with json: (' + json.dumps(json_response) + ')') with flask_app.app_context(): User.remove(json_response_reg['data']['user']['email'])
def test_get_closest_restaurants(self): restaurant_id_1 = self.__add_restaurant(self.__test_restaurant_data_1) restaurant_id_2 = self.__add_restaurant(self.__test_restaurant_data_2) restaurant_id_3 = self.__add_restaurant(self.__test_restaurant_data_3) restaurant_id_4 = self.__add_restaurant(self.__test_restaurant_data_4) result = self.app.post('/restaurant/closest', headers={'Content-Type': 'application/json'}, data=json.dumps( self.__test_restaurant_data_1['location'])) closest_restaurants = json.loads(result.data) self.assertTrue( closest_restaurants['data']['restaurants'] is not None and len(closest_restaurants['data']['restaurants']) >= 3, 'failed to get the closest restaurants') self.assertTrue( closest_restaurants['data']['restaurants'][0]['location'] ['longitude'] == self.__test_restaurant_data_1['location']['longitude'] and closest_restaurants['data']['restaurants'][0]['location'] ['latitude'] == self.__test_restaurant_data_1['location']['latitude'] and closest_restaurants['data']['restaurants'][1]['location'] ['longitude'] == self.__test_restaurant_data_2['location']['longitude'] and closest_restaurants['data']['restaurants'][1]['location'] ['latitude'] == self.__test_restaurant_data_2['location']['latitude'] and closest_restaurants['data']['restaurants'][2]['location'] ['longitude'] == self.__test_restaurant_data_3['location']['longitude'] and closest_restaurants['data']['restaurants'][2]['location'] ['latitude'] == self.__test_restaurant_data_3['location']['latitude'], 'failed to get the closest restaurants in proper order') with flask_app.app_context(): Restaurant.remove(restaurant_id_1) Restaurant.remove(restaurant_id_2) Restaurant.remove(restaurant_id_3) Restaurant.remove(restaurant_id_4)
def test_admin_del_restaurant(self): json_response_reg = self.__register_user(self.__admin_user_data) admin_token = self.__login_user(json.loads(self.__admin_user_data)) # add an restaurant to delete restaurant_id = self.__add_restaurant(self.__test_restaurant_data_1) result = self.app.post( '/admin/restaurant/delete/' + str(restaurant_id), headers={ 'Content-Type': 'application/json', 'token': admin_token }, ) json_data = json.loads(result.data) # self.assertTrue(json_data['data']['success'] is not None, 'fail delete restaurant') self.assertDictEqual(json_data, {'data': { 'success': True }}, 'fail delete restaurant') with flask_app.app_context(): Restaurant.remove(restaurant_id) User.remove(json_response_reg['data']['user']['email'])
def test_customer_profile_update(self): from hopkin.models.users import User # creating new user data = '{"address": {"name": "Queen", "number": 155, "postalCode": "M3E5R1", "streetType": "Street"}, ' \ '"adminRights": false, "displayName": {"firstName": "Jane", "lastName": "Doe"}, ' \ '"email": "*****@*****.**", "password": "******", "paymentInfo": {"cardType": "VISA", ' \ '"expiry": "1/1/17 12:00:00 AM UTC", "name": "Jane Doe", "num": 451535486}, "username": "******"}' self.app.post('/login/register', data=data, content_type='application/json') # login to get token login_result = self.app.post('/login', headers={ 'username': '******', 'password': '******' }) json_response = json.loads(login_result.data)['data']['token'] self.assertIsNotNone(json_response) # update user info updated_data = '{"address": {"name": "Baker", "number": 221, "postalCode": "M3E5R1", "streetType": "Street"}, ' \ '"adminRights": false, "displayName": {"firstName": "Jane", "lastName": "Doe"}, ' \ '"email": "*****@*****.**", "paymentInfo": {"cardType": "VISA", ' \ '"expiry": "1/1/17 12:00:00 AM UTC", "name": "Jane Doe", "num": 451535486}, "username": "******"}' result = self.app.post('/customer/profile/edit', data=updated_data, headers={'token': json_response}) json_data = json.loads(result.data) self.assertIsNotNone(len(json_data)) with flask_app.app_context(): user = User.get_by_token(json_response) User.remove(user['email'])
def __add_restaurant(self, data): with flask_app.app_context(): return Restaurant.insert(data)