Exemplo n.º 1
0
    def setUp(self):
        logger.warning('Testing API started...')
        os.environ['espa_api_testing'] = 'True'
        # create a user
        self.mock_user = MockUser()
        self.mock_order = MockOrder()
        user_id = self.mock_user.add_testing_user()
        order_id = self.mock_order.generate_testing_order(user_id)
        self.order = Order.find(order_id)
        self.user = User.find(user_id)
        self.product_id = 'LT05_L1TP_032028_20120425_20160830_01_T1'
        self.sensor_id = 'tm5_collection'
        self.staff_product_id = 'LE07_L1TP_010028_20050420_20160925_01_T1'
        self.staff_sensor = 'etm7_collection'
        self.global_product_id = 'LE70450302003206EDC01'

        staff_user_id = self.mock_user.add_testing_user()
        self.staff_user = User.find(staff_user_id)
        self.staff_user.update('is_staff', True)
        staff_order_id = self.mock_order.generate_testing_order(staff_user_id)
        staff_order = Order.find(staff_order_id)
        staff_scene = staff_order.scenes()[0]
        staff_scene.update('name', self.staff_product_id)
        user_scene = self.order.scenes()[0]
        user_scene.update('name', self.staff_product_id)

        with open(os.path.join(__location__, 'domain/restricted.yaml')) as f:
            self.restricted = yaml.load(f.read())
            self.restricted['all']['role'].remove('restricted_prod')
Exemplo n.º 2
0
    def setUp(self):
        os.environ['espa_api_testing'] = 'True'
        # create a user
        self.mock_user = MockUser()
        self.mock_order = MockOrder()
        user_id = self.mock_user.add_testing_user()
        order_id = self.mock_order.generate_testing_order(user_id)
        self.order = Order.find(order_id)
        self.user = User.find(user_id)
        self.product_id = 'LT50150401987120XXX02'
        self.staff_product_id = 'LE70450302003206EDC01'

        staff_user_id = self.mock_user.add_testing_user()
        self.staff_user = User.find(staff_user_id)
        self.staff_user.update('is_staff', True)
        staff_order_id = self.mock_order.generate_testing_order(staff_user_id)
        staff_order = Order.find(staff_order_id)
        staff_scene = staff_order.scenes()[0]
        staff_scene.update('name', self.staff_product_id)
        user_scene = self.order.scenes()[0]
        user_scene.update('name', self.staff_product_id)

        with open('api/domain/restricted.yaml') as f:
            self.restricted = yaml.load(f.read())
            self.restricted['all']['role'].remove('restricted_prod')
Exemplo n.º 3
0
    def setUp(self):
        os.environ['espa_api_testing'] = 'True'
        # create a user
        self.mock_user = MockUser()
        self.mock_order = MockOrder()
        user_id = self.mock_user.add_testing_user()
        order_id = self.mock_order.generate_testing_order(user_id)
        self.order = Order.find(order_id)
        self.user = User.find(user_id)
        self.product_id = 'LT50150401987120XXX02'
        self.staff_product_id = 'LE70450302003206EDC01'

        staff_user_id = self.mock_user.add_testing_user()
        self.staff_user = User.find(staff_user_id)
        self.staff_user.update('is_staff', True)
        staff_order_id = self.mock_order.generate_testing_order(staff_user_id)
        staff_order = Order.find(staff_order_id)
        staff_scene = staff_order.scenes()[0]
        staff_scene.update('name', self.staff_product_id)
        user_scene = self.order.scenes()[0]
        user_scene.update('name', self.staff_product_id)

        with open('api/domain/restricted.yaml') as f:
            self.restricted = yaml.load(f.read())
            self.restricted['all']['role'].remove('restricted_prod')
Exemplo n.º 4
0
 def test_production_update_landsat_product_status(self):
     order = Order.find(self.mock_order.generate_testing_order(self.user_id))
     for scene in order.scenes():
         scene.status = 'submitted'
         scene.sensor_type = 'landsat'
         scene.save()
     self.assertTrue(production_provider.update_landsat_product_status(User.find(self.user_id).contactid))
Exemplo n.º 5
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())
Exemplo n.º 6
0
    def generate_ee_testing_order(self, user_id, partial=False):
        ee_order = mock_lta.get_available_orders_partial(partial)

        # Have to emulate a bunch of load_ee_orders

        for eeorder, email_addr, contactid in ee_order:
            order_id = Order.generate_ee_order_id(email_addr, eeorder)
            scene_info = ee_order[eeorder, email_addr, contactid]

            user = User.find(user_id)
            ts = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')

            order_dict = {'orderid': order_id,
                          'user_id': user.id,
                          'order_type': 'level2_ondemand',
                          'status': 'ordered',
                          'note': 'EarthExplorer order id: {}'.format(eeorder),
                          'ee_order_id': eeorder,
                          'order_source': 'ee',
                          'order_date': ts,
                          'priority': 'normal',
                          'email': user.email,
                          'product_options': 'include_sr: true',
                          'product_opts': Order.get_default_ee_options(scene_info)}

            order = Order.create(order_dict)
            self.production_provider.load_ee_scenes(scene_info, order.id)

        return order.id
Exemplo n.º 7
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())
Exemplo n.º 8
0
 def test_production_update_landsat_product_status(self):
     order = Order.find(self.mock_order.generate_testing_order(self.user_id))
     for scene in order.scenes():
         scene.status = 'submitted'
         scene.sensor_type = 'landsat'
         scene.save()
     self.assertTrue(production_provider.update_landsat_product_status(User.find(self.user_id).contactid))
Exemplo n.º 9
0
    def generate_ee_testing_order(self, user_id, partial=False):
        ee_order = mock_lta.get_available_orders_partial(partial)

        # Have to emulate a bunch of load_ee_orders

        for eeorder, email_addr, contactid in ee_order:
            order_id = Order.generate_ee_order_id(email_addr, eeorder)
            scene_info = ee_order[eeorder, email_addr, contactid]

            user = User.find(user_id)
            ts = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')

            order_dict = {
                'orderid': order_id,
                'user_id': user.id,
                'order_type': 'level2_ondemand',
                'status': 'ordered',
                'note': 'EarthExplorer order id: {}'.format(eeorder),
                'ee_order_id': eeorder,
                'order_source': 'ee',
                'order_date': ts,
                'priority': 'normal',
                'email': user.email,
                'product_options': 'include_sr: true',
                'product_opts': Order.get_default_ee_options(scene_info)
            }

            order = Order.create(order_dict)
            self.production_provider.load_ee_scenes(scene_info, order.id)

        return order.id
Exemplo n.º 10
0
 def generate_testing_order(self, user_id):
     user = User.find(user_id)
     # need to monkey with the email, otherwise we get collisions with each
     # test creating a new scratch order with the same user
     rand = str(random.randint(1, 99))
     user.email = rand + user.email
     order = self.ordering_provider.place_order(self.base_order, user)
     return order.id
Exemplo n.º 11
0
 def test_fetch_production_products_landsat(self):
     order_id = self.mock_order.generate_testing_order(self.user_id)
     # need scenes with statuses of 'processing' and 'ordered'
     self.mock_order.update_scenes(order_id, 'status', ['processing','oncache','ordered'])
     user = User.find(self.user_id)
     params = {'for_user': user.username, 'product_types': ['landsat']}
     response = api.fetch_production_products(params)
     self.assertTrue('bilbo' in response[0]['orderid'])
Exemplo n.º 12
0
 def test_fetch_production_products_landsat(self):
     order_id = self.mock_order.generate_testing_order(self.user_id)
     # need scenes with statuses of 'processing' and 'ordered'
     self.mock_order.update_scenes(order_id, 'status', ['processing','oncache','ordered'])
     user = User.find(self.user_id)
     params = {'for_user': user.username, 'product_types': ['landsat']}
     response = api.fetch_production_products(params)
     self.assertTrue('bilbo' in response[0]['orderid'])
Exemplo n.º 13
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
Exemplo n.º 14
0
 def generate_testing_order(self, user_id):
     user = User.find(user_id)
     # need to monkey with the email, otherwise we get collisions with each
     # test creating a new scratch order with the same user
     rand = str(random.randint(1, 99))
     user.email = rand + user.email
     orderid = self.ordering_provider.place_order(self.base_order, user)
     order = Order.find(orderid)
     return order.id
Exemplo n.º 15
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
Exemplo n.º 16
0
 def test_fetch_production_products_sentinel(self):
     order_id = self.mock_order.generate_testing_order(self.user_id)
     # need scenes with statuses of 'processing'
     scenes = Scene.where({'order_id': order_id, 'sensor_type': 'sentinel'})
     self.mock_order.update_scenes(order_id, 'sentinel', 'status',
                                   ['processing', 'oncache'])
     user = User.find(self.user_id)
     params = {'for_user': user.username, 'product_types': ['sentinel']}
     response = api.fetch_production_products(params)
     self.assertTrue('bilbo' in response[0]['orderid'])
Exemplo n.º 17
0
 def test_fetch_production_products_landsat(self):
     os.environ['ESPA_M2M_MODE'] = 'LANDSAT,MODIS,URLS'
     order_id = self.mock_order.generate_testing_order(self.user_id)
     # need scenes with statuses of 'processing'
     self.mock_order.update_scenes(order_id, 'landsat', 'status', ['processing', 'oncache'])
     user = User.find(self.user_id)
     params = {'for_user': user.username, 'product_types': ['landsat']}
     response = api.fetch_production_products(params)
     self.assertTrue('bilbo' in response[0]['orderid'])
     os.environ['ESPA_M2M_MODE'] = ''
Exemplo n.º 18
0
 def test_fetch_production_products_landsat(self):
     cfg.put('system.m2m_url_enabled', 'True')
     cfg.put('system.m2m_val_enabled', 'True')
     order_id = self.mock_order.generate_testing_order(self.user_id)
     # need scenes with statuses of 'processing'
     self.mock_order.update_scenes(order_id, 'landsat', 'status',
                                   ['processing', 'oncache'])
     user = User.find(self.user_id)
     params = {'for_user': user.username, 'product_types': ['landsat']}
     response = api.fetch_production_products(params)
     self.assertTrue('bilbo' in response[0]['orderid'])
     cfg.put('system.m2m_url_enabled', 'False')
     cfg.put('system.m2m_val_enabled', 'False')
Exemplo n.º 19
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
        ])
Exemplo n.º 20
0
 def test_handle_orders_success(self):
     _ = self.mock_order.generate_testing_order(self.user_id)
     self.assertTrue(
         api.handle_orders({'username': User.find(self.user_id)}))