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())
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
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())
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
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()
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
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 ])
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