Exemple #1
0
    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'
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
    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
Exemple #5
0
    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
Exemple #6
0
    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'
Exemple #7
0
    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
Exemple #8
0
    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
Exemple #12
0
    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
Exemple #13
0
    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
Exemple #15
0
    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
Exemple #17
0
    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
Exemple #18
0
    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'
Exemple #19
0
    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
Exemple #20
0
    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