Esempio n. 1
0
 def test_model_delete_from_db(self):
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     acc = AccountModel.find_by_email('*****@*****.**')
     acc.delete_from_db()
     self.assertEqual(None, AccountModel.find_by_email('*****@*****.**'))
Esempio n. 2
0
    def test_delete_address_order(self):
        acc = AccountModel.find_by_email("*****@*****.**")
        acc.type = 2
        acc.save_to_db()
        resp_account_admin = self.login('*****@*****.**', 'sm22')
        self.create_account(self.account_info)
        self.add_card(self.card_info)
        self.add_order(self.order_info)
        self.add_address_order(self.address_order_info)
        response = self.app.delete(
            'api/address-order/1/1',
            headers={
                'Authorization':
                'Basic ' + base64.b64encode(
                    bytes(
                        str(acc.id) + ":" +
                        json.loads(resp_account_admin.data)['token'],
                        'ascii')).decode('ascii')
            },
            follow_redirects=True)
        resp = self.app.delete(
            'api/address-order/1000/1',
            headers={
                'Authorization':
                'Basic ' + base64.b64encode(
                    bytes(
                        str(acc.id) + ":" +
                        json.loads(resp_account_admin.data)['token'],
                        'ascii')).decode('ascii')
            },
            follow_redirects=True)

        self.assertEqual(response.status_code, 201)
        self.assertEqual(resp.status_code, 409)
Esempio n. 3
0
    def post(self):
        parser = reqparse.RequestParser()

        # define the input parameters need and its type
        parser.add_argument('name',
                            type=str,
                            required=True,
                            help="This field cannot be left blank")
        parser.add_argument('lastname',
                            type=str,
                            required=True,
                            help="This field cannot be left blank")
        parser.add_argument('email',
                            type=str,
                            required=True,
                            help="This field cannot be left blank")
        parser.add_argument('password',
                            required=True,
                            type=str,
                            help="This field cannot be left blank")

        data = parser.parse_args()
        if AccountModel.find_by_email(data['email']):
            return {
                "message": "Account already registered for that email address"
            }, 409
        account = AccountModel(data['email'], data['name'], data['lastname'],
                               data['password'])
        account.save_to_db()
        return {"message": "Account saved correctly"}, 200
Esempio n. 4
0
 def test_put_order(self):
     acc = AccountModel.find_by_email("*****@*****.**")
     acc.type = 2
     acc.save_to_db()
     resp_account_admin = self.login('*****@*****.**', 'sm22')
     self.add_order(self.order_info)
     info_put = {"state": 1}
     response = self.app.put(
         'api/order/1',
         data=info_put,
         headers={
             'Authorization':
             'Basic ' + base64.b64encode(
                 bytes(
                     str(acc.id) + ":" +
                     json.loads(resp_account_admin.data)['token'],
                     'ascii')).decode('ascii')
         },
         follow_redirects=True)
     resp = self.app.put(
         'api/order/1000',
         data=info_put,
         headers={
             'Authorization':
             'Basic ' + base64.b64encode(
                 bytes(
                     str(acc.id) + ":" +
                     json.loads(resp_account_admin.data)['token'],
                     'ascii')).decode('ascii')
         },
         follow_redirects=True)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(resp.status_code, 400)
Esempio n. 5
0
 def test_invalid_token_validity(self):
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     response = self.login('*****@*****.**', 'america16')
     acc = AccountModel.find_by_email('*****@*****.**')
     self.assertEqual(None, AccountModel.verify_auth_token('askldjaofhsah'))
Esempio n. 6
0
    def test_create_article_order(self):
        acc = AccountModel.find_by_email("*****@*****.**")
        acc.type = 2
        acc.save_to_db()
        resp_account_admin = self.login('*****@*****.**', 'sm22')
        response = self.add_article_order(self.article_order_info)
        resp = self.add_article_order(self.article_order_2_info)
        resp_order = self.app.post(
            'api/article-order/1000',
            data=self.article_order_info,
            headers={
                'Authorization':
                'Basic ' + base64.b64encode(
                    bytes(
                        str(acc.id) + ":" +
                        json.loads(resp_account_admin.data)['token'],
                        'ascii')).decode('ascii')
            },
            follow_redirects=True)

        resp_book = self.add_article_order(self.article_order_3_info)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(resp.status_code, 404)
        self.assertEqual(resp_order.status_code, 404)
        self.assertEqual(resp_book.status_code, 404)
Esempio n. 7
0
 def test_verify_account(self):
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     acc = AccountModel.find_by_email('*****@*****.**')
     self.assertEqual(acc.id,
                      verify_account(acc.id, acc.generate_auth_token()).id)
Esempio n. 8
0
    def post(self):

        parser = reqparse.RequestParser(
        )  # create parameters parser from request

        # define the input parameters need and its type
        parser.add_argument('email',
                            type=str,
                            required=True,
                            help="This field cannot be left blanck")
        parser.add_argument('password',
                            required=True,
                            type=str,
                            help="This field cannot be left blanck")

        data = parser.parse_args()

        account = AccountModel.find_by_email(data["email"])

        if account:
            if account.verify_password(data["password"]):
                token = account.generate_auth_token()
                log = LogModel(account.id).save_to_db()
                return {
                    'token': token.decode('ascii'),
                    'type': account.type,
                    'id': account.id
                }, 200
            return {'message': "Password is invalid"}, 400
        return {
            'message':
            "Account with email [{}] Not found".format(data["email"])
        }, 404
Esempio n. 9
0
 def test_put_change_email_already_registered_email(self):
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     acc = AccountModel.find_by_email('*****@*****.**')
     response = self.login('*****@*****.**', 'america16')
     response = self.app.put(
         'api/account/2',
         follow_redirects=True,
         data={
             "name": "CEp",
             "lastname": "asdas",
             "email": "*****@*****.**"
         },
         headers={
             'Authorization':
             'Basic ' + base64.b64encode(
                 bytes(
                     str(acc.id) + ":" + json.loads(response.data)['token'],
                     'ascii')).decode('ascii')
         })
     self.assertEqual(409, response.status_code)
Esempio n. 10
0
    def test_get_article(self):
        self.register(self.account_admin_info)
        acc = AccountModel.find_by_email("*****@*****.**")
        acc.type = 2
        acc.save_to_db()
        resp_account_admin = self.login('*****@*****.**', 'sm22')
        self.add_article(self.article_info)
        response = self.app.get(
            'api/article/1',
            headers={
                'Authorization':
                'Basic ' + base64.b64encode(
                    bytes(
                        str(acc.id) + ":" +
                        json.loads(resp_account_admin.data)['token'],
                        'ascii')).decode('ascii')
            },
            follow_redirects=True)
        resp = self.app.get(
            'api/article/1000',
            headers={
                'Authorization':
                'Basic ' + base64.b64encode(
                    bytes(
                        str(acc.id) + ":" +
                        json.loads(resp_account_admin.data)['token'],
                        'ascii')).decode('ascii')
            },
            follow_redirects=True)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(resp.status_code, 404)
Esempio n. 11
0
 def test_model_find_non_existent_address_id(self):
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     self.assertEqual(
         None,
         AccountModel.find_by_email('*****@*****.**').find_address_by_id(
             1))
Esempio n. 12
0
 def test_expired_token_validity(self):
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     acc = AccountModel.find_by_email('*****@*****.**')
     self.assertEqual(
         None,
         AccountModel.verify_auth_token(
             acc.generate_auth_token(expiration=-1)))
Esempio n. 13
0
 def setUp(self):
     self.app = setupApp(True).test_client()
     db.drop_all()
     db.create_all()
     self.register(self.account_dev_info)
     self.acc = AccountModel.find_by_email("*****@*****.**")
     self.acc.type = 1
     self.acc.save_to_db()
     self.resp_account_dev = self.login('*****@*****.**', 'sm22')
Esempio n. 14
0
 def test_model_rollback_function(self):
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     acc = AccountModel.find_by_email('*****@*****.**')
     accMod = acc
     accMod.email = '*****@*****.**'
     accMod.db_rollback()
     self.assertEqual(accMod.email, acc.email)
Esempio n. 15
0
 def test_valid_token_validity(self):
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     response = self.login('*****@*****.**', 'america16')
     acc = AccountModel.find_by_email('*****@*****.**')
     self.assertEqual(
         acc.id,
         AccountModel.verify_auth_token(json.loads(
             response.data)['token']).id)
Esempio n. 16
0
 def test_model_account_json(self):
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     acc = AccountModel.find_by_email('*****@*****.**')
     self.assertEqual(
         acc.json(), {
             'id': 1,
             'name': 'Cristobal',
             'lastname': 'Colon',
             'email': '*****@*****.**',
             'available_money': 0,
             'type': 0
         })
Esempio n. 17
0
 def add_card(self, info):
     acc = AccountModel.find_by_email("*****@*****.**")
     acc.type = 2
     acc.save_to_db()
     resp_account_admin = self.login('*****@*****.**', 'sm22')
     return self.app.post(
         'api/account/1/card',
         data=info,
         headers={
             'Authorization':
             'Basic ' + base64.b64encode(
                 bytes(
                     str(acc.id) + ":" +
                     json.loads(resp_account_admin.data)['token'],
                     'ascii')).decode('ascii')
         },
         follow_redirects=True)
Esempio n. 18
0
 def setUp(self):
     self.app = setupApp(True).test_client()
     db.drop_all()
     db.create_all()
     self.register(self.account_admin_info)
     self.acc = AccountModel.find_by_email("*****@*****.**")
     self.acc.type = 2
     self.acc.save_to_db()
     self.resp_account_admin = self.login('*****@*****.**', 'sm22')
     self.authorization = {
         'Authorization':
         'Basic ' + base64.b64encode(
             bytes(
                 str(self.acc.id) + ":" +
                 json.loads(self.resp_account_admin.data)['token'],
                 'ascii')).decode('ascii')
     }
Esempio n. 19
0
 def test_get_orders_received_list(self):
     acc = AccountModel.find_by_email("*****@*****.**")
     acc.type = 2
     acc.save_to_db()
     resp_account_admin = self.login('*****@*****.**', 'sm22')
     self.add_order(self.order_info)
     response = self.app.get(
         'api/orders-list-state-2',
         headers={
             'Authorization':
             'Basic ' + base64.b64encode(
                 bytes(
                     str(acc.id) + ":" +
                     json.loads(resp_account_admin.data)['token'],
                     'ascii')).decode('ascii')
         },
         follow_redirects=True)
     self.assertEqual(response.status_code, 200)
Esempio n. 20
0
    def test_model_find_address_id(self):
        response = self.register('Cristobal', 'Colon', '*****@*****.**',
                                 'america16')
        self.assertEqual(response.status_code, 200)

        response = self.app.post('api/login',
                                 data=dict(email='*****@*****.**',
                                           password='******'),
                                 follow_redirects=True)
        my_id = json.loads(response.data)['id']
        token = json.loads(response.data)['token']
        auth = get_auth(my_id, token)

        response = self.add_address(self.address_info, auth)
        self.assertEqual(
            self.address_info['city'],
            AccountModel.find_by_email('*****@*****.**').find_address_by_id(
                1).city)
Esempio n. 21
0
 def test_put_change_password_mismatching_password(self):
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     acc = AccountModel.find_by_email('*****@*****.**')
     response = self.login('*****@*****.**', 'america16')
     response = self.app.put(
         'api/account/' + str(acc.id) + '/change_password',
         follow_redirects=True,
         data={
             "old_password": "******",
             "new_password": "******"
         },
         headers={
             'Authorization':
             'Basic ' + base64.b64encode(
                 bytes(
                     str(acc.id) + ":" + json.loads(response.data)['token'],
                     'ascii')).decode('ascii')
         })
     self.assertEqual(406, response.status_code)
Esempio n. 22
0
 def setUp(self):
     self.app = setupApp(True).test_client()
     db.drop_all()
     db.create_all()
     self.register_info(self.account_admin_info)
     self.acc = AccountModel.find_by_email("*****@*****.**")
     self.acc.type = 2
     self.acc.save_to_db()
     self.resp_account_admin = self.login('*****@*****.**', 'sm22')
     self.app.post(
         'api/book',
         data=self.book_info,
         headers={
             'Authorization':
             'Basic ' + base64.b64encode(
                 bytes(
                     str(self.acc.id) + ":" +
                     json.loads(self.resp_account_admin.data)['token'],
                     'ascii')).decode('ascii')
         },
         follow_redirects=True)
     self.register('Cristobal', 'Colon', '*****@*****.**', 'america16')
Esempio n. 23
0
    def put(self, idd):
        account = AccountModel.find_by_id(idd)
        if account:
            if g.user != account:
                return {
                    "error: ":
                    "You cannot modify an account which you are not log with"
                }, 401
        else:
            return {"error: ": "Account not found"}, 404

        parser = reqparse.RequestParser()

        # define the input parameters need and its type
        parser.add_argument('name',
                            type=str,
                            required=True,
                            help="This field cannot be left blank")
        parser.add_argument('lastname',
                            type=str,
                            required=True,
                            help="This field cannot be left blank")
        parser.add_argument('email',
                            type=str,
                            required=True,
                            help="This field cannot be left blank")
        data = parser.parse_args()
        if AccountModel.find_by_email(
                data['email']) and account.email != data['email']:
            return {
                "message": "Account already registered for that email address"
            }, 409

        account.name, account.lastname, account.email = data['name'], data[
            'lastname'], data['email']

        account.save_to_db()
        return {"token": account.generate_auth_token().decode('ascii')}, 200
Esempio n. 24
0
 def test_model_get_user_role(self):
     response = self.register('Cristobal', 'Colon', '*****@*****.**',
                              'america16')
     self.assertEqual(response.status_code, 200)
     acc = AccountModel.find_by_email('*****@*****.**')
     self.assertEqual('client', get_user_roles(acc))