Esempio n. 1
0
class DatabaseTest(unittest.TestCase):
    def setUp(self):
        self.app = app
        self.db = DB()
        self.db.create_db_tables()
        self.dbusers = Users()
        self.client = self.app.test_client()
        self.user = {
            'username': '******',
            'password': '******',
            'confirm': 'deedeo'
        }
        self.invalid_confirm_password = {
            'username': '******',
            'password': '******',
            'confirm': 'deeooo'
        }
        self.invalid_username = {
            'username': '******',
            'password': '******',
            'confirm': 'deedee'
        }
        self.invalid_password = {'username': '******', 'password': '******'}

    def test_create_user(self):
        res = self.client.post('/api/v2/auth/signup',
                               data=json.dumps(self.user),
                               content_type='application/json')
        self.assertEqual(res.status_code, 200)
        self.assertIn("user created", str(res.data))

    def test_user_login(self):
        res = self.client.post('/api/v2/auth/signup',
                               data=json.dumps(self.user),
                               content_type='application/json')
        self.assertIn("user created", str(res.data))
        res_login = self.client.post('/api/v2/auth/login',
                                     data=json.dumps(self.user),
                                     content_type='application/json')
        self.assertIn('You have been Verified', str(res_login.data))

    def test_invalid_username_login(self):
        res = self.client.post('/api/v2/auth/signup',
                               data=json.dumps(self.user),
                               content_type='application/json')
        self.assertIn("user created", str(res.data))
        res_login = self.client.post('/api/v2/auth/login',
                                     data=json.dumps(self.invalid_username),
                                     content_type='application/json')
        self.assertIn('username deodee deosnt exist', str(res_login.data))

    def test_invalid_confirm_password(self):
        res = self.client.post('/api/v2/auth/signup',
                               data=json.dumps(self.invalid_confirm_password),
                               content_type='application/json')
        self.assertIn('passwords must match', str(res.data))

    def tearDown(self):
        print('dropping')
        self.db.drop_all_tables('orders', 'users', 'fastfoods')
Esempio n. 2
0
 def setUp(self):
     self.app = app
     self.db = DB()
     self.db.create_db_tables()
     self.dbusers = Users()
     self.client = self.app.test_client()
     self.user = {
         'username': '******',
         'password': '******',
         'confirm': 'deedeo'
     }
     self.invalid_confirm_password = {
         'username': '******',
         'password': '******',
         'confirm': 'deeooo'
     }
     self.invalid_username = {
         'username': '******',
         'password': '******',
         'confirm': 'deedee'
     }
     self.invalid_password = {'username': '******', 'password': '******'}
Esempio n. 3
0
  def setUp(self):
    self.app = app
    self.db = DB()
    self.db.create_db_tables()
    self.dbmenu = Menu()
    self.dbuser = Users()
    self.dbuser.register_admin('super', 'super')
    self.client = self.app.test_client()

    self.admin = {
        'username': '******',
        'password': '******'
    }

    self.meal = {
        "meal_name": 'pizza',
        'price': 4000
    }
    self.meal_update = {
        'meal_status': "Accepted",
        "price": 800
    }
Esempio n. 4
0
  def setUp(self):
    self.app = app
    self.db = DB()
    self.db.create_db_tables()
    self.dbmenu = Menu()
    self.dbuser = Users()
    self.dbuser.register_admin('super', 'super')
    self.dbuser.register_user('deee', 'deee')
    self.dbmenu.add_meal('pizza', 4000)
    self.client = self.app.test_client()

    self.admin = {
        'username': '******',
        'password': '******'
    }
    self.user = {
        'username': '******',
        'password': '******'
    }

    self.meal = {
        "meal_name": 'pizza',
        'price': 4000
    }
    self.meal_update = {
        'meal_status': "Accepted",
        "price": 800
    }
    self.order = {
        "location": "bunga",
        "quantity": 4,
        "meal": "pizza"
    }
    self.order_status = {
        "status": "Accepted"
    }
Esempio n. 5
0
class DatabaseTest(unittest.TestCase):

  def setUp(self):
    self.app = app
    self.db = DB()
    self.db.create_db_tables()
    self.dbmenu = Menu()
    self.dbuser = Users()
    self.dbuser.register_admin('super', 'super')
    self.client = self.app.test_client()

    self.admin = {
        'username': '******',
        'password': '******'
    }

    self.meal = {
        "meal_name": 'pizza',
        'price': 4000
    }
    self.meal_update = {
        'meal_status': "Accepted",
        "price": 800
    }

  def test_add_meal_option(self):
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.admin),
                                 content_type='application/json')
    login_data = res_login.json
    self.token = login_data['token']

    res = self.client.post('/api/v2/menu',
                           data=json.dumps(self.meal),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token)})
    self.assertIn('meal pizza added', str(res.data))

  def test_get_menu(self):
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.admin),
                                 content_type='application/json')
    login_data = res_login.json
    self.token = login_data['token']

    res = self.client.post('/api/v2/menu',
                           data=json.dumps(self.meal),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token)})

    res = self.client.get('/api/v2/menu')

    self.assertIn("menu", str(res.data))

  def test_update_meal(self):
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.admin),
                                 content_type='application/json')
    login_data = res_login.json
    self.token = login_data['token']

    res = self.client.post('/api/v2/menu',
                           data=json.dumps(self.meal),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token)})
    res = self.client.put('/api/v2/meal/1',
                          data=json.dumps(self.meal_update),
                          content_type="application/json",
                          headers={'Authorization':
                                   'Bearer {}'.format(self.token)}
                          )
    self.assertIn("meal updated", str(res.data))

  def test_update_non_existing_meal(self):
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.admin),
                                 content_type='application/json')
    login_data = res_login.json
    self.token = login_data['token']

    res = self.client.post('/api/v2/menu',
                           data=json.dumps(self.meal),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token)})
    res = self.client.put('/api/v2/meal/111',
                          data=json.dumps(self.meal_update),
                          content_type="application/json",
                          headers={'Authorization':
                                   'Bearer {}'.format(self.token)}
                          )
    self.assertIn(
        "You are trying to update a meal that doesnt exist", str(res.data))

  def test_delete_meal(self):
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.admin),
                                 content_type='application/json')
    login_data = res_login.json
    self.token = login_data['token']

    res = self.client.post('/api/v2/menu',
                           data=json.dumps(self.meal),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token)})
    res = self.client.delete('/api/v2/meal/1',
                             data=json.dumps(self.meal_update),
                             content_type="application/json",
                             headers={'Authorization':
                                      'Bearer {}'.format(self.token)}
                             )

    self.assertIn("meal deleted", str(res.data))

  def tearDown(self):
    print('dropping')
    self.db.drop_all_tables('orders', 'users', 'fastfoods')
Esempio n. 6
0
 def __init__(self):
     DB.__init__(self)
Esempio n. 7
0
 def setUp(self):
     self.db = DB()
     self.dbusers = Users()
     self.dbmenu = Menu()
     self.dborders = Orders()
     self.db.create_db_tables()
Esempio n. 8
0
class DBTestCase(unittest.TestCase):
    def setUp(self):
        self.db = DB()
        self.dbusers = Users()
        self.dbmenu = Menu()
        self.dborders = Orders()
        self.db.create_db_tables()

    def test_create_user(self):
        query = self.dbusers.register_user('dee', 'dee')
        self.assertIn('user created', str(query))

    def test_find_user_by_username(self):
        query = self.dbusers.register_user('dee', 'dee')
        self.assertIn('user created', str(query))
        query = self.dbusers.find_by_username('dee')
        self.assertIn('dee', str(query))

    def test_create_meal_option(self):
        query = self.dbmenu.add_meal('pizza', 4000)
        self.assertIn('meal pizza added', str(query))

    def test_get_menu(self):
        query = self.dbmenu.get_menu()
        self.assertIn('Menu', str(query))

    def test_create_order(self):
        query = self.dbusers.register_user('dee', 'dee')
        query = self.dbmenu.add_meal('pizza', 4000)
        query = self.dborders.create_order("location", 4, 1, 'pizza')
        self.assertIn("order placed successfully", str(query))

    def test_get_order_history_for_a_user(self):
        query = self.dbusers.register_user('dee', 'dee')
        query = self.dbmenu.add_meal('pizza', 4000)
        query = self.dborders.create_order("location", 4, 1, 'pizza')
        query = self.dborders.get_order_history_for_a_user(1)
        self.assertIn('orders for user with id 1', str(query))

    def test_get_all_orders(self):
        query = self.dbusers.register_user('dee', 'dee')
        query = self.dbmenu.add_meal('pizza', 4000)
        query = self.dborders.create_order("location", 4, 1, 'pizza')
        query = self.dborders.get_all_orders()
        self.assertIn('All Orders', str(query))

    def test_get_order(self):
        query = self.dbusers.register_user('dee', 'dee')
        query = self.dbmenu.add_meal('pizza', 4000)
        query = self.dborders.create_order("location", 4, 1, 'pizza')
        query = self.dborders.get_order(1)
        self.assertIn('1', str(query))
        self.assertIn('pizza', str(query))

    def test_update_order_status(self):
        query = self.dbusers.register_user('dee', 'dee')
        query = self.dbmenu.add_meal('pizza', 4000)
        query = self.dborders.create_order("location", 4, 1, 'pizza')
        query = self.dborders.update_order_status(1, "Accepted")
        self.assertIn("order status updated", str(query))

    def test_update_meal_option(self):
        query = self.dbmenu.add_meal('pizza', 4000)
        query = self.dbmenu.update_meal(1, 2000, "burger")
        self.assertIn("meal updated", str(query))

    def test_delete_meal_option(self):
        query = self.dbmenu.add_meal('pizza', 4000)
        query = self.dbmenu.delete_meal(1)
        self.assertIn("meal deleted", str(query))

    def tearDown(self):
        print('dropping')
        self.db.drop_all_tables('orders', 'users', 'fastfoods')
Esempio n. 9
0
class DatabaseTest(unittest.TestCase):
  def setUp(self):
    self.app = app
    self.db = DB()
    self.db.create_db_tables()
    self.dbmenu = Menu()
    self.dbuser = Users()
    self.dbuser.register_admin('super', 'super')
    self.dbuser.register_user('deee', 'deee')
    self.dbmenu.add_meal('pizza', 4000)
    self.client = self.app.test_client()

    self.admin = {
        'username': '******',
        'password': '******'
    }
    self.user = {
        'username': '******',
        'password': '******'
    }

    self.meal = {
        "meal_name": 'pizza',
        'price': 4000
    }
    self.meal_update = {
        'meal_status': "Accepted",
        "price": 800
    }
    self.order = {
        "location": "bunga",
        "quantity": 4,
        "meal": "pizza"
    }
    self.order_status = {
        "status": "Accepted"
    }

  def test_create_order(self):
    '''login  user'''
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.user),
                                 content_type='application/json')
    login_data = res_login.json
    '''get authentication token'''
    self.token = login_data['token']
    '''create order'''
    res = self.client.post('/api/v2/users/orders',
                           data=json.dumps(self.order),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token)}
                           )
    self.assertIn("order placed successfully", str(res.data))

  def test_get_orders_for_a_user(self):
    '''login admin user'''
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.admin),
                                 content_type='application/json')
    login_data = res_login.json
    self.token = login_data['token']
    '''add meal using admin token'''
    res = self.client.post('/api/v2/menu',
                           data=json.dumps(self.meal),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token)})
    '''login user'''
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.user),
                                 content_type='application/json')
    login_data = res_login.json
    '''get user token'''
    self.token = login_data['token']
    '''create order using admin token'''
    res = self.client.post('/api/v2/users/orders',
                           data=json.dumps(self.order),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token)}
                           )
    '''get orders of user with Id 2'''
    res = self.client.get('/api/v2/users/orders',
                          headers={'Authorization':
                                   'Bearer {}'.format(self.token)}
                          )
    self.assertIn('orders for user with id 2', str(res.data))

  def test_get_all_orders(self):
    '''login admin user'''
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.admin),
                                 content_type='application/json')
    login_data = res_login.json
    '''get admin token'''
    self.token_admin = login_data['token']
    '''create meal using admin token'''
    res = self.client.post('/api/v2/menu',
                           data=json.dumps(self.meal),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token_admin)})
    '''login normal user to post order'''
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.user),
                                 content_type='application/json')
    login_data = res_login.json
    self.token = login_data['token']
    '''create order using user token'''
    res = self.client.post('/api/v2/users/orders',
                           data=json.dumps(self.order),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token)}
                           )
    '''get all orders using admin token'''
    res = self.client.get('/api/v2/orders',
                          headers={'Authorization':
                                   'Bearer {}'.format(self.token_admin)})

    self.assertIn("All Orders", str(res.data))

  def test_get_order(self):
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.admin),
                                 content_type='application/json')
    login_data = res_login.json
    self.token_admin = login_data['token']

    res = self.client.post('/api/v2/menu',
                           data=json.dumps(self.meal),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token_admin)})
    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.user),
                                 content_type='application/json')
    login_data = res_login.json
    self.token = login_data['token']

    res = self.client.post('/api/v2/users/orders',
                           data=json.dumps(self.order),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token)}
                           )
    res_order = self.client.get('/api/v2/orders/1', headers={'Authorization':
                                                             'Bearer {}'.format(self.token_admin)})

    self.assertIn("pizza", str(res_order.data))

  def test_update_order_status(self):

    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.admin),
                                 content_type='application/json')
    login_data = res_login.json
    self.token_admin = login_data['token']

    res = self.client.post('/api/v2/menu',
                           data=json.dumps(self.meal),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token_admin)})

    res_login = self.client.post('/api/v2/auth/login',
                                 data=json.dumps(self.user),
                                 content_type='application/json')
    login_data = res_login.json
    self.token = login_data['token']

    res = self.client.post('/api/v2/users/orders',
                           data=json.dumps(self.order),
                           content_type="application/json",
                           headers={'Authorization':
                                    'Bearer {}'.format(self.token)}
                           )

    res_order = self.client.put('/api/v2/orders/1',
                                data=json.dumps(self.order_status),
                                content_type="application/json",
                                headers={'Authorization':
                                         'Bearer {}'.format(self.token_admin)}
                                )
    self.assertIn("order status updated", str(res_order.data))

  def tearDown(self):
    print('dropping')
    self.db.drop_all_tables('orders', 'users', 'fastfoods')
Esempio n. 10
0
from flask import jsonify
from flask_restplus import Api, Resource, fields
from flask_jwt_extended import jwt_required, JWTManager, create_access_token, get_jwt_identity, verify_jwt_in_request
from api.app import app
from api.models.db import DB
from api.models.users import Users
from api.models.menu import Menu
from api.models.orders import Orders
from functools import wraps
import os

db = DB()
dbusers = Users()
dbmenu = Menu()
dborder = Orders()

api = Api(app, prefix='/api/v2', version='2.0', title='Fast-Foods-Api')
jwt = JWTManager(app)
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY')
app.config['JWT_SECRET_KEY'] = os.getenv('JWT_SECRET_KEY')

db.create_db_tables()


def register_super_admin(username, password):
    if dbusers.find_by_username(username) == None:
        dbusers.register_admin(username, password)
    return False


register_super_admin('super', 'super')