def test_get_jobs_by_request_group_id(self):
     """
     Tests reading a job by request_group_id
     """
     mock_ssm_get_parameter(2)
     exp_request_ids = [REQUEST_ID5, REQUEST_ID6]
     _, exp_result = create_select_requests(exp_request_ids)
     database.single_query = Mock(side_effect=[exp_result])
     expected = result_to_json(exp_result)
     try:
         result = requests_db.get_jobs_by_request_group_id(None)
         self.fail("expected BadRequestError")
     except requests_db.BadRequestError as err:
         self.assertEqual("A request_group_id must be provided", str(err))
     try:
         result = requests_db.get_jobs_by_request_group_id(REQUEST_GROUP_ID_EXP_3)
     except requests_db.BadRequestError as err:
         self.fail(str(err))
     self.assertEqual(expected, result)
     database.single_query.assert_called_once()
     database.single_query = Mock(side_effect=[DbError("database error")])
     try:
         result = requests_db.get_jobs_by_request_group_id(REQUEST_GROUP_ID_EXP_3)
         self.fail("expected DatabaseError")
     except requests_db.DatabaseError as err:
         self.assertEqual("database error", str(err))
    def test_submit_request_error_status(self):
        """
        Tests that an error job is written to the db
        """
        utc_now_exp = UTC_NOW_EXP_4
        requests_db.get_utc_now_iso = Mock(return_value=utc_now_exp)
        requests_db.request_id_generator = Mock(side_effect=[REQUEST_ID4])
        data = {}
        data["request_id"] = REQUEST_ID4
        data["err_msg"] = "Error message goes here"
        data["request_group_id"] = REQUEST_GROUP_ID_EXP_2
        data["granule_id"] = "granule_4"
        data["object_key"] = "objectkey_4"
        data["job_type"] = "restore"
        data["job_status"] = "error"
        data["request_time"] = utc_now_exp
        qresult, exp_result = create_insert_request(
            REQUEST_ID4, data["request_group_id"],
            data["granule_id"], data["object_key"], data["job_type"],
            None, None, data["job_status"], data["request_time"],
            None, data["err_msg"])
        database.single_query = Mock(side_effect=[qresult, exp_result, None, None])
        mock_ssm_get_parameter(4)
        try:
            requests_db.submit_request(data)
            database.single_query.assert_called_once()
        except requests_db.DatabaseError as err:
            self.fail(f"submit_request. {str(err)}")

        try:
            result = requests_db.get_job_by_request_id(REQUEST_ID4)
            expected = result_to_json(exp_result)
            self.assertEqual(expected, result)
        except requests_db.DatabaseError as err:
            self.fail(f"get_job_by_request_id. {str(err)}")
    def test_get_all_requests(self):
        """
        Tests reading all requests
        """
        exp_request_ids = [REQUEST_ID1, REQUEST_ID2, REQUEST_ID3, REQUEST_ID4, REQUEST_ID5,
                           REQUEST_ID6, REQUEST_ID7, REQUEST_ID8, REQUEST_ID9, REQUEST_ID10,
                           REQUEST_ID11]
        qresult, exp_result = create_select_requests(exp_request_ids)
        mock_ssm_get_parameter(1)
        database.single_query = Mock(side_effect=[qresult])
        expected = result_to_json(exp_result)
        result = requests_db.get_all_requests()
        database.single_query.assert_called_once()
        self.assertEqual(expected, result)

        mock_ssm_get_parameter(1)
        err_msg = 'Database Error. could not connect to server'
        database.single_query = Mock(side_effect=[DbError(
            err_msg)])
        try:
            requests_db.get_all_requests()
            self.fail("expected DatabaseError")
        except requests_db.DatabaseError as err:
            database.single_query.assert_called_once()
            self.assertEqual(err_msg, str(err))
Ejemplo n.º 4
0
 def test_get_all_requests(self):
     """
     Tests reading all requests
     """
     qresult = self.create_test_requests()
     boto3.client = Mock()
     mock_ssm_get_parameter(1)
     expected = result_to_json(qresult)
     result = requests_db.get_all_requests()
     self.assertEqual(expected, result)
 def test_get_jobs_by_object_key(self):
     """
     Tests reading by object_key
     """
     mock_ssm_get_parameter(1)
     exp_request_ids = [REQUEST_ID1, REQUEST_ID2, REQUEST_ID3]
     _, exp_result_1 = create_select_requests(exp_request_ids)
     object_key = " "
     expected = result_to_json(exp_result_1)
     database.single_query = Mock(side_effect=[exp_result_1])
     result = requests_db.get_jobs_by_object_key(object_key)
     self.assertEqual(expected, result)
     database.single_query.assert_called_once()
    def test_get_jobs_by_status_max_days(self):
        """
        Tests reading by status for limited days
        """
        exp_request_ids = [REQUEST_ID1, REQUEST_ID2, REQUEST_ID3]
        _, exp_result = create_select_requests(exp_request_ids)
        status = "noexist"
        mock_ssm_get_parameter(2)
        database.single_query = Mock(side_effect=[[], exp_result])
        result = requests_db.get_jobs_by_status(status)
        self.assertEqual([], result)
        database.single_query.assert_called_once()

        status = "complete"
        expected = result_to_json(exp_result)
        result = requests_db.get_jobs_by_status(status, 5)
        self.assertEqual(expected, result)
        database.single_query.assert_called()
 def test_task_query_object_key(self):
     """
     Test query by object_key.
     """
     handler_input_event = {}
     object_key = "objectkey_2"
     handler_input_event["object_key"] = object_key
     handler_input_event["function"] = "query"
     exp_request_ids = [REQUEST_ID4, REQUEST_ID7]
     _, exp_result = create_select_requests(exp_request_ids)
     expected = result_to_json(exp_result)
     database.single_query = Mock(side_effect=[exp_result])
     self.mock_ssm_get_parameter(1)
     try:
         result = request_status.task(handler_input_event, None)
         self.assertEqual(expected, result)
     except requests_db.NotFound as err:
         self.assertEqual(f"Unknown object_key: {object_key}", str(err))
 def test_task_query_request_id(self):
     """
     Test query by request_id.
     """
     handler_input_event = {}
     request_id = 1
     handler_input_event["request_id"] = request_id
     handler_input_event["function"] = "query"
     exp_request_ids = [REQUEST_ID1]
     _, exp_result = create_select_requests(exp_request_ids)
     expected = result_to_json(exp_result)
     database.single_query = Mock(side_effect=[exp_result])
     self.mock_ssm_get_parameter(1)
     try:
         result = request_status.task(handler_input_event, None)
         self.assertEqual(expected, result)
     except requests_db.NotFound as err:
         self.assertEqual(f"Unknown request_id: {request_id}", str(err))
Ejemplo n.º 9
0
 def test_task_query_all(self):
     """
     Test query all.
     """
     exp_request_ids = [REQUEST_ID1, REQUEST_ID2, REQUEST_ID3, REQUEST_ID4, REQUEST_ID5,
                        REQUEST_ID6, REQUEST_ID7, REQUEST_ID8, REQUEST_ID9, REQUEST_ID10,
                        REQUEST_ID11]
     qresult, exp_result = create_select_requests(exp_request_ids)
     handler_input_event = {}
     handler_input_event["function"] = "query"
     expected = result_to_json(exp_result)
     database.single_query = Mock(side_effect=[qresult])
     self.mock_secretsmanager_get_parameter(1)
     try:
         result = request_status.task(handler_input_event, None)
         self.assertEqual(expected, result)
         database.single_query.assert_called()
     except requests_db.NotFound as err:
         self.fail(str(err))
Ejemplo n.º 10
0
    def test_get_jobs_by_status(self):
        """
        Tests reading by status
        """
        exp_request_ids = [REQUEST_ID1, REQUEST_ID2, REQUEST_ID3]
        _, exp_result_2 = create_select_requests(exp_request_ids)
        status = "noexist"
        exp_result_1 = []
        mock_secretsmanager_get_parameter(2)
        database.single_query = Mock(side_effect=[exp_result_1, exp_result_2])
        result = requests_db.get_jobs_by_status(status)
        self.assertEqual(exp_result_1, result)
        database.single_query.assert_called_once()

        status = "complete"
        expected = result_to_json(exp_result_2)
        result = requests_db.get_jobs_by_status(status)
        self.assertEqual(expected, result)
        database.single_query.assert_called()
    def test_handler_add(self):
        """
        Test successful with four keys returned.
        """
        handler_input_event = {}
        utc_now_exp = UTC_NOW_EXP_1
        requests_db.get_utc_now_iso = Mock(return_value=utc_now_exp)
        requests_db.request_id_generator = Mock(return_value=REQUEST_ID1)
        granule_id = 'granule_1'
        status = "error"
        req_err = "error submitting restore request"
        handler_input_event["function"] = "add"
        handler_input_event["error"] = req_err

        qresult, ins_result = create_insert_request(
            REQUEST_ID1, REQUEST_GROUP_ID_EXP_1, granule_id, "object_key",
            "restore", "my_s3_bucket", status, utc_now_exp, None, req_err)
        database.single_query = Mock(side_effect=[qresult, ins_result])
        self.mock_ssm_get_parameter(2)
        try:
            result = request_status.handler(handler_input_event, None)
            self.fail("expected BadRequestError")
        except request_status.BadRequestError as err:
            self.assertEqual("Missing 'granule_id' in input data", str(err))
        handler_input_event["granule_id"] = granule_id
        try:
            result = request_status.handler(handler_input_event, None)
            self.fail("expected BadRequestError")
        except request_status.BadRequestError as err:
            self.assertEqual("Missing 'request_group_id' in input data",
                             str(err))
        handler_input_event["request_group_id"] = REQUEST_GROUP_ID_EXP_1
        try:
            result = request_status.handler(handler_input_event, None)
            expected = result_to_json(ins_result)
            self.assertEqual(expected, result)
            database.single_query.assert_called()
        except request_status.BadRequestError as err:
            self.fail(err)
        except requests_db.DbError as err:
            self.fail(err)
    def test_submit_request_inprogress_status(self):
        """
        Tests that an inprogress job is written to the db
        """
        utc_now_exp = UTC_NOW_EXP_1
        requests_db.get_utc_now_iso = Mock(return_value=utc_now_exp)
        requests_db.request_id_generator = Mock(side_effect=[REQUEST_ID1])
        data = {}
        data["request_id"] = REQUEST_ID1
        data["request_group_id"] = REQUEST_GROUP_ID_EXP_1
        data["granule_id"] = "granule_1"
        data["object_key"] = "thisisanobjectkey"
        data["job_type"] = "restore"
        data["restore_bucket_dest"] = "my_s3_bucket"
        data["archive_bucket_dest"] = "your_s3_bucket"
        data["job_status"] = "inprogress"
        data["request_time"] = utc_now_exp
        qresult, exp_result = create_insert_request(
            REQUEST_ID1, data["request_group_id"], data["granule_id"],
            data["object_key"], data["job_type"],
            data["restore_bucket_dest"], data["job_status"],
            data["archive_bucket_dest"],
            data["request_time"], None, None)
        database.single_query = Mock(side_effect=[qresult, exp_result, None, None])
        mock_ssm_get_parameter(4)
        try:
            requests_db.submit_request(data)
            database.single_query.assert_called_once()
        except requests_db.DatabaseError as err:
            self.fail(f"submit_request. {str(err)}")

        try:
            result = requests_db.get_job_by_request_id(REQUEST_ID1)
            expected = result_to_json(exp_result)
            self.assertEqual(expected, result)
        except requests_db.DatabaseError as err:
            self.fail(f"get_job_by_request_id. {str(err)}")