예제 #1
0
    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'])
예제 #2
0
    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']
        }
예제 #3
0
    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'])
예제 #4
0
    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'])
예제 #5
0
    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)
예제 #6
0
    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'])
예제 #7
0
    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)
예제 #8
0
    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'])
예제 #9
0
    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'])
예제 #10
0
    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'])
예제 #11
0
    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'])
예제 #12
0
    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)
예제 #13
0
    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'])
예제 #14
0
    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'])
예제 #15
0
 def __add_restaurant(self, data):
     with flask_app.app_context():
         return Restaurant.insert(data)