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('*****@*****.**'))
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)
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
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)
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'))
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)
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)
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
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)
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)
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))
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)))
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')
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)
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)
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 })
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)
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') }
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)
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)
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)
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')
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
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))