Пример #1
0
    def setUp(self):
        os.environ['espa_api_testing'] = 'True'
        # create a user
        self.mock_user = MockUser()
        self.mock_order = MockOrder()
        self.user = User.find(self.mock_user.add_testing_user())
        self.order_id = self.mock_order.generate_testing_order(self.user.id)

        self.app = http.app.test_client()
        self.app.testing = True

        self.sceneids = self.mock_order.scene_names_list(self.order_id)[0:2]

        token = ''.format(self.user.username, 'foo')
        auth_string = "Basic {}".format(base64.b64encode(token))
        self.headers = {"Authorization": auth_string}

        with db_instance() as db:
            uidsql = "select user_id, orderid from ordering_order limit 1;"
            db.select(uidsql)
            self.userid = db[0]['user_id']
            self.orderid = db[0]['orderid']

            itemsql = "select name, order_id from ordering_scene limit 1;"
            db.select(itemsql)
            self.itemid = db[0][0]
            itemorderid = db[0][1]

            ordersql = "select orderid from ordering_order where id = {};".format(
                itemorderid)
            db.select(ordersql)
            self.itemorderid = db[0][0]

        self.base_order = lowercase_all(testorders.build_base_order())
Пример #2
0
    def post(version):
        try:
            user = flask.g.user
            order = request.get_json(force=True)
            if not order:
                message = {"status": 400, "msg": "Unable to parse json data. Please ensure your order follows json "
                                                 "conventions and your http call is correct. If you believe this "
                                                 "message is in error please email customer service"}
            else:
                try:
                    order = lowercase_all(order)
                    orderid = espa.place_order(order, user)
                    if isinstance(orderid, str) and "@" in orderid:
                        # if order submission was successful, orderid is returned as a string
                        # which includes the submitters email address
                        message = {"status": 200, "orderid": orderid}
                    else:
                        # there was a problem, and orderid is a dict with the problem details
                        logger.info("problem with user submitted order. user: {0}\n details: {1}".format(user.username, orderid))
                        message = {"status": 400, "message": orderid}
                except Exception as e:
                    logger.debug("exception posting order: {0}\nuser: {1}\n msg: {2}".format(order, user.username, e.message))
                    message = {"status": 500, "msg": "the system experienced an exception. the admins have been notified"}
        except BadRequest as e:
            # request.get_json throws a BadRequest
            logger.debug("BadRequest, could not parse request into json {}\nuser: {}\nform data {}\n".format(e.description, user.username, request.form))
            message = {"status": 400, "msg": "Could not parse the request into json"}
        except Exception as e:
            logger.debug("ERR posting order. user: {0}\n error: {1}".format(user.username, e))
            message = {"status": 500, "msg": "the system has experienced an exception. the admins have been notified."}

        response = jsonify(message)
        response.status_code = message['status']
        return response
Пример #3
0
    def setUp(self):
        os.environ['espa_api_testing'] = 'True'
        # create a user
        self.mock_user = MockUser()
        self.mock_order = MockOrder()
        self.user = User.find(self.mock_user.add_testing_user())
        self.order_id = self.mock_order.generate_testing_order(self.user.id)

        self.app = http.app.test_client()
        self.app.testing = True

        self.sceneids = self.mock_order.scene_names_list(self.order_id)[0:2]

        token = ''.format(self.user.username, 'foo')
        auth_string = "Basic {}".format(base64.b64encode(token))
        self.headers = {"Authorization": auth_string}

        with db_instance() as db:
            uidsql = "select user_id, orderid from ordering_order limit 1;"
            db.select(uidsql)
            self.userid = db[0]['user_id']
            self.orderid = db[0]['orderid']

            itemsql = "select name, order_id from ordering_scene limit 1;"
            db.select(itemsql)
            self.itemid = db[0][0]
            itemorderid = db[0][1]

            ordersql = "select orderid from ordering_order where id = {};".format(itemorderid)
            db.select(ordersql)
            self.itemorderid = db[0][0]

        self.base_order = lowercase_all(testorders.build_base_order())
Пример #4
0
def place_user_order():
    order = {}
    try:
        if request.headers['Content-Type'] == u'application/json':
            order = request.get_json()
        elif request.headers[
                'Content-Type'] == u'application/x-www-form-urlencoded':
            order = json.loads(request.form.keys()[0])
        else:
            order = json.loads(request.data)
    except Exception as e:
        # LOG ME
        pass

    if not order:
        response = {
            "errmsg":
            "Unable to parse json data."
            "Please ensure your order follows json conventions and your http call is correct."
            " If you believe this message is in error please email customer service"
        }
    else:
        order = lowercase_all(order)
        response = api.place_order(order, current_user.username)

    return_code = 202 if response.keys()[0] != "errmsg" else 406
    return jsonify(response), return_code
Пример #5
0
 def post(version, ordernum=None):
     user = flask.g.user
     message = None
     order = request.get_json(force=True, silent=True)
     if order is None:
         return BadRequestResponse()
     if order:
         order = lowercase_all(order)
         try:
             order = espa.place_order(order, user)
         except ValidationException as e:
             message = MessagesResponse(errors=[e.response],
                                        code=400)
         except InventoryException as e:
             message = MessagesResponse(errors=[e.response],
                                        code=400)
         except InventoryConnectionException as e:
             message = MessagesResponse(warnings=['Could not connect to data source'],
                                        code=400)
         except OpenSceneLimitException as e:
             message = MessagesResponse(errors=[e.response],
                                        code=400)
         else:
             message = OrderResponse(**order.as_dict())
             message.limit = ('orderid', 'status')
             message.code = 201
         return message()
     else:
         message = MessagesResponse(errors=['Must supply order JSON'],
                                    code=400)
         return message()
Пример #6
0
    def setUp(self):
        os.environ['espa_api_testing'] = 'True'

        self.mock_user = MockUser()
        self.staffuser = User.find(self.mock_user.add_testing_user())
        self.staffuser.update('is_staff', True)

        self.base_order = lowercase_all(testorders.build_base_order())
        self.base_schema = BaseValidationSchema.request_schema
Пример #7
0
    def setUp(self):
        os.environ['espa_api_testing'] = 'True'

        self.mock_user = MockUser()
        self.staffuser = User.find(self.mock_user.add_testing_user())
        self.staffuser.update('is_staff', True)

        self.base_order = lowercase_all(testorders.build_base_order())
        self.base_schema = BaseValidationSchema.request_schema
Пример #8
0
    def setUp(self):
        os.environ['espa_api_testing'] = 'True'
        # create a user
        self.mock_user = MockUser()
        self.mock_order = MockOrder()
        self.user = User.find(self.mock_user.add_testing_user())
        self.order_id = self.mock_order.generate_testing_order(self.user.id)

        self.app = http.app.test_client()
        self.app.testing = True

        self.sceneids = self.mock_order.scene_names_list(self.order_id)[0:2]

        token = ':'.join((self.user.username, 'foo'))
        auth_string = "Basic {}".format(base64.b64encode(token))
        self.headers = {"Authorization": auth_string}

        with db_instance() as db:
            uidsql = "select user_id, orderid from ordering_order limit 1;"
            db.select(uidsql)
            self.userid = db[0]['user_id']
            self.orderid = db[0]['orderid']

            itemsql = "select name, order_id from ordering_scene limit 1;"
            db.select(itemsql)
            self.itemid = db[0][0]
            itemorderid = db[0][1]

            ordersql = "select orderid from ordering_order where id = {};".format(
                itemorderid)
            db.select(ordersql)
            self.itemorderid = db[0][0]

        self.base_order = lowercase_all(testorders.build_base_order())
        self.sensors = [
            k for k in self.base_order.keys()
            if isinstance(self.base_order[k], dict)
            and 'inputs' in self.base_order[k]
        ]
        self.inputs = {s: self.base_order[s]['inputs'] for s in self.sensors}
        self.input_names_all = set([
            i for sublist in [s for k, s in self.inputs.items()]
            for i in sublist
        ])
Пример #9
0
def place_user_order():
    order = {}
    try:
        if request.headers['Content-Type'] == u'application/json':
            order = request.get_json()
        elif request.headers['Content-Type'] == u'application/x-www-form-urlencoded':
            order = json.loads(request.form.keys()[0])
        else:
            order = json.loads(request.data)
    except Exception as e:
        # LOG ME
        pass

    if not order:
        response = {"errmsg": "Unable to parse json data."
                              "Please ensure your order follows json conventions and your http call is correct."
                              " If you believe this message is in error please email customer service"}
    else:
        order = lowercase_all(order)
        response = api.place_order(order, current_user.username)

    return_code = 202 if response.keys()[0] != "errmsg" else 406
    return jsonify(response), return_code