def test_delete_category_by_user_id(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'unlisted'} unlisted_category = Category(**categoryData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() packageData = { 'carrier': 'usps', 'tracking_number': '212323123', 'name': 'test', 'creation_date': '2021-02-01', 'category_id': category.category_id } package = Package(**packageData).create() response = self.client.delete( f'/users/{user.user_id}/categories/{category.category_id}') deleted_category = response.json['category'] moved_packages = Package.getPackagesByCategory( unlisted_category.category_id) assert response.json['message'] == 'Success!' assert deleted_category['name'] == 'test_category' assert moved_packages[0].carrier == 'usps' assert moved_packages[0].name == 'test'
def test_get_category_by_user_id(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() result_categories = Category.getCategoriesByUserId(user.user_id) assert result_categories[0] == category
def test_get_category_by_user_id_and_name(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() result_category = Category.getCategoryByUserIdAndName( user.user_id, category.name) assert result_category == category
def test_get_all_categories(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category1'} category1 = Category(**categoryData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category2'} category2 = Category(**categoryData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category3'} category3 = Category(**categoryData).create() categories = Category.getAllCategories() assert categories[0] == category1 assert categories[1] == category2 assert categories[2] == category3
def test_delete_package(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() packageData = { 'carrier': 'usps', 'tracking_number': '212323123', 'name': 'test', 'creation_date': '2021-02-01', 'category_id': category.category_id } package = Package(**packageData).create() response = self.client.delete('/packages', data=json.dumps( dict(package_id=package.package_id)), content_type='application/json') assert response.json['message'] == 'Success!' assert response.json['package']['carrier'] == package.carrier assert response.json['package']['name'] == package.name assert response.json['package'][ 'tracking_number'] == package.tracking_number
def test_create_category(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() assert category.name == 'test_category'
def test_get_all_packages(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() packageData = { 'carrier': 'ups', 'tracking_number': '122833234', 'name': 'test', 'creation_date': '21-04-2021', 'category_id': category.category_id } package = Package(**packageData).create() packageData = { 'carrier': 'ups', 'tracking_number': '128332353', 'name': 'test2', 'creation_date': '21-04-2021', 'category_id': category.category_id } package1 = Package(**packageData).create() packages = Package.getAllPackages() assert packages[0].package_id == package.package_id assert packages[1].package_id == package1.package_id
def test_get_package_by_tracking_number_and_userId(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() packageData = { 'carrier': 'ups', 'tracking_number': '122833234', 'name': 'test', 'creation_date': '21-04-2021', 'category_id': category.category_id } package = Package(**packageData).create() result_category = Category.getPackageByTrackingNumberAndUserId( '122833234', str(user.user_id)) assert result_category[0].category_id == category.category_id
def createCategory(json): valid_params = verify_parameters(json, Category.REQUIRED_PARAMETERS) if valid_params: try: category_exists = Category.getCategoryByUserIdAndName(json['user_id'], json['name']) if category_exists: return jsonify(message="The category you tried to create already exsists."), HttpStatus.BAD_REQUEST category = Category(**valid_params).create() category_dict = to_dict(category) result = { "message": "Success!", "category": category_dict, } return jsonify(result), HttpStatus.CREATED except Exception as err: return jsonify(message="Server error!", error=err.__str__()), HttpStatus.INTERNAL_SERVER_ERROR # pragma: no mutate else: return jsonify(message="Bad Request!"), HttpStatus.BAD_REQUEST
def deleteCategory(category_id, user_id): if category_id and user_id: deleted_categories = Category.delete(category_id, user_id) result = { "message": "Success!", "category": to_dict(deleted_categories) } return jsonify(result), HttpStatus.OK else: return jsonify(message="Bad Request!"), HttpStatus.BAD_REQUEST
def getCategoryById(cid): try: category = Category.getCategoryById(cid) category_dict = to_dict(category) result = { "message": "Success!", "category": category_dict } return jsonify(result), HttpStatus.OK except Exception as e: return jsonify(reason="Server error", error=e.__str__()), HttpStatus.INTERNAL_SERVER_ERROR
def test_get_category_by_user_id(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() response = self.client.get(f'/users/{user.user_id}/categories') category1 = response.json['categories'][0] assert response.json['message'] == 'Success!' assert category1['user_id'] == str(category.user_id) assert category1['name'] == category.name
def test_delete_category(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() response = self.client.delete( f'/users/{user.user_id}/categories/{category.category_id}') assert response.json['message'] == 'Success!' assert response.json['category']['name'] == category.name
def getAllCategories(): try: categories = Category.getAllCategories() result_list = [] for category in categories: result_list.append(to_dict(category)) result = { "message": "Success!", "categories": result_list } return jsonify(result), HttpStatus.OK except Exception as e: return jsonify(reason="Server error", error=e.__str__()), HttpStatus.INTERNAL_SERVER_ERROR # pragma: no mutate
def test_fail_create_category(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() response = self.client.post('/categories', data=json.dumps( dict(user_id=str(user.user_id), name='test_category')), content_type='application/json') assert response.json[ 'message'] == 'The category you tried to create already exsists.'
def createUser(json): valid_params = verify_parameters(json, User.REQUIRED_PARAMETERS) if valid_params: try: email_exists = User.getUserByEmail(json['email']) username_exists = User.getUserByUsername(json['username']) if username_exists and email_exists: return jsonify( message= "Username and email already taken. Please use another one." ), HttpStatus.BAD_REQUEST elif username_exists: return jsonify( message="Username already taken. Please use another one." ), HttpStatus.BAD_REQUEST elif email_exists: return jsonify( message="Email already taken. Please use another one." ), HttpStatus.BAD_REQUEST valid_params['password'] = sha256.hash( valid_params['password']) created_user = User(**valid_params).create() user_dict = to_dict(created_user) result = { "message": "Success!", "user": user_dict, } #sends an activation email to the user UserHandler.sendActivationEmail(json['email']) #Create unlisted category. Will serve as default category for unlisted packages Category(**{ 'user_id': created_user.user_id, 'name': 'unlisted' }).create() #returns created user, however, if send activation email fails, user must request another email return jsonify(result), HttpStatus.CREATED except Exception as err: return jsonify( message="Server error!", error=err.__str__()), HttpStatus.INTERNAL_SERVER_ERROR else: return jsonify(message="Bad Request!"), HttpStatus.BAD_REQUEST
def test_get_package_by_category(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() packageData = { 'carrier': 'ups', 'tracking_number': '122833234', 'name': 'test', 'creation_date': '21-04-2021', 'category_id': category.category_id } package = Package(**packageData).create() result_package = Package.getPackagesByCategory(category.category_id) assert result_package[0].package_id == package.package_id
def test_create_package(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() response = self.client.post('/packages', data=json.dumps( dict(carrier='usps', tracking_number='212323123', name='test', creation_date='2021-02-01', category_id=category.category_id, user_id=str(user.user_id))), content_type='application/json') assert response.json['message'] == 'Success!' assert response.json['package']['carrier'] == 'usps' assert response.json['package']['name'] == 'test' assert response.json['package']['tracking_number'] == '212323123'
def test_create_package(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() packageData = { 'carrier': 'ups', 'tracking_number': '122833234', 'name': 'test', 'creation_date': '21-04-2021', 'category_id': category.category_id } package = Package(**packageData).create() assert package.carrier == 'ups' assert package.tracking_number == '122833234' assert package.name == 'test' assert str(package.creation_date) == '2021-04-21' assert package.category_id == category.category_id
def test_get_all_packages(self): userData = {'email': 'test', 'password': '******', 'username': '******'} user = User(**userData).create() categoryData = {'user_id': user.user_id, 'name': 'test_category'} category = Category(**categoryData).create() packageData = { 'carrier': 'usps', 'tracking_number': '212323123', 'name': 'test', 'creation_date': '2021-02-01', 'category_id': category.category_id } package = Package(**packageData).create() response = self.client.get('/packages') package1 = response.json['packages'][0] assert response.json['message'] == 'Success!' assert package1['carrier'] == package.carrier assert package1['name'] == package.name assert package1['tracking_number'] == package.tracking_number
def createPackage(json): user_id = json.pop('user_id', None) valid_params = verify_parameters(json, Package.REQUIRED_PARAMETERS) if valid_params and user_id: try: package_exists = Category.getPackageByTrackingNumberAndUserId( json['tracking_number'], user_id) # does the user already has the package added in his account? if package_exists: return jsonify( message= "The package you tried to create already exists in your account." ), HttpStatus.BAD_REQUEST # user_category = Category.getCategoriesByUserId(user_id) # is the user trying to add the package to a category that doesn't belong to his account? # in theory, this should not happen but the condition is here just in case. # there might be better ways to implement the following verification # category_valid = False # for category in user_category: # curr_category = to_dict(category) # if curr_category['category_id'] == json['category_id']: # category_valid = True # if not category_valid or not user_category: # return jsonify(message="You are trying to add the package to a category that doesn't belong to your account."), HttpStatus.BAD_REQUEST res = requests.get( "https://onlinetools.ups.com/track/v1/details/" + str(json['tracking_number']), headers={ "Content-Type": "application/json", "transId": "1234", "transactionSrc": "TestTrack", "AccessLicenseNumber": "6D96561E525FE615", "Connection": "keep-alive", "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept" }) if (int(res.status_code) == HttpStatus.OK): package = Package(**valid_params).create() package_dict = to_dict(package) result = { "message": "Success!", "package": package_dict, "carrier_info": loads(res.text) } return jsonify(result), HttpStatus.CREATED else: return jsonify(message="Invalid or expired Tracking Number" ), HttpStatus.NOT_FOUND except Exception as err: return jsonify( message="Server error!", error=err.__str__()), HttpStatus.INTERNAL_SERVER_ERROR else: return jsonify(message="Bad Request!"), HttpStatus.BAD_REQUEST