Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,7 @@ Follow the steps to install the python packages required for both building and r
"user_id": "user_id",
"tdei_project_group_id": "tdei_project_group_id",
"success": true/false,
"message": "message", // if false the error string else empty string
"warning": "warning" // non-blocking validation warning else empty string
"message": "message" // if false the error string else empty string
},
"publishedDate": "published date"
}
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ python-ms-core==0.0.25
uvicorn==0.20.0
html_testRunner==1.2.1
geopandas==0.14.4
python-osw-validation==0.4.5
python-osw-validation==0.5.0
3 changes: 1 addition & 2 deletions src/assets/osw-validation.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
"user_id": "c59d29b6-a063-4249-943f-d320d15ac9ab",
"tdei_project_group_id": "0b41ebc5-350c-42d3-90af-3af4ad3628fb",
"success": true,
"message": "",
"warning": ""
"message": ""
}
}
3 changes: 1 addition & 2 deletions src/models/queue_message_content.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@


class ValidationResult:
def __init__(self, is_valid: bool = False, validation_message: str = '', warning: str = ''):
def __init__(self, is_valid: bool = False, validation_message: str = ''):
self.is_valid = is_valid
self.validation_message = validation_message
self.warning = warning or ''


class Upload:
Expand Down
2 changes: 0 additions & 2 deletions src/osw_validator.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@ def validate(self, received_message: Upload):
result = ValidationResult()
result.is_valid = False
result.validation_message = f'Error occurred while validating OSW request {e}'
result.warning = ''
self.send_status(result=result, upload_message=received_message)
status_sent = True
finally:
Expand All @@ -98,7 +97,6 @@ def send_status(self, result: ValidationResult, upload_message: Upload):
upload_message.data.success = result.is_valid
upload_message.data.message = result.validation_message
resp_data = upload_message.data.to_json()
resp_data['warning'] = result.warning
resp_data['package'] = {
'python-ms-core': Core.__version__,
'python-osw-validation': python_osw_validation.__version__
Expand Down
1 change: 0 additions & 1 deletion src/validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ def is_osw_valid(self, max_errors) -> ValidationResult:
validator = OSWValidation(zipfile_path=downloaded_file_path, config=self.validation_config)
validation_result = validator.validate(max_errors)
result.is_valid = validation_result.is_valid
result.warning = validation_result.warnings
if not result.is_valid:
result.validation_message = json.dumps(validation_result.issues)
logger.error(f' Error While Validating File: {json.dumps(validation_result.issues)}')
Expand Down
2 changes: 1 addition & 1 deletion tests/unit_tests/models/test_queue_message_content.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def test_validation_result_init(self):
result.validation_message = 'Validated'
self.assertTrue(result.is_valid)
self.assertEqual(result.validation_message, 'Validated')
self.assertEqual(result.warning, '')
self.assertFalse(hasattr(result, 'warning'))


if __name__ == '__main__':
Expand Down
11 changes: 3 additions & 8 deletions tests/unit_tests/test_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,6 @@ def test_send_status_success(self):
validation_result = ValidationResult()
validation_result.is_valid = True
validation_result.validation_message = ''
validation_result.warning = 'Coordinate precision exceeds 7 decimal places.'

mock_message = Upload(data={
'data': {
Expand All @@ -283,12 +282,8 @@ def test_send_status_success(self):
mock_publish.assert_called_once()

@patch('src.osw_validator.QueueMessage')
def test_send_status_includes_warning_in_response(self, mock_queue_message):
validation_result = ValidationResult(
is_valid=True,
validation_message='',
warning='Coordinate precision exceeds 7 decimal places.'
)
def test_send_status_excludes_warning_from_response(self, mock_queue_message):
validation_result = ValidationResult(is_valid=True, validation_message='')
mock_message = Upload(data={
'data': {
'user_id': '1233',
Expand All @@ -302,7 +297,7 @@ def test_send_status_includes_warning_in_response(self, mock_queue_message):
self.service.send_status(result=validation_result, upload_message=mock_message)

response_payload = mock_queue_message.data_from.call_args[0][0]
self.assertEqual(response_payload['data']['warning'], validation_result.warning)
self.assertNotIn('warning', response_payload['data'])

def test_send_status_failure(self):
validation_result = ValidationResult()
Expand Down
8 changes: 2 additions & 6 deletions tests/unit_tests/test_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,26 +71,22 @@ def test_validate_valid_zip(self, mock_download_file, mock_clean_up):
@patch('src.validation.OSWValidation')
@patch('src.validation.Validation.clean_up')
@patch('src.validation.Validation.download_single_file')
def test_validate_includes_warning(self, mock_download_file, mock_clean_up, mock_osw_validation):
"""Test the validate method includes warnings from the OSW validator."""
expected_warning = 'Coordinate precision exceeds 7 decimal places.'
def test_validate_passes_validation_config(self, mock_download_file, mock_clean_up, mock_osw_validation):
"""Test that configured validation limits are passed to the OSW validator."""
mock_download_file.return_value = f'{SAVED_FILE_PATH}/{SUCCESS_FILE_NAME}'
mock_validation_result = MagicMock()
mock_validation_result.is_valid = True
mock_validation_result.warnings = expected_warning
mock_osw_validation.return_value.validate.return_value = mock_validation_result

result = self.validation.validate(max_errors=10)

self.assertTrue(result.is_valid)
self.assertEqual(result.warning, expected_warning)
config = mock_osw_validation.call_args[1]['config']
self.assertEqual(config.max_geometry_vertices, 2000)
self.assertEqual(config.coordinate_precision, 7)
self.assertFalse(config.allow_zero_length_lines)
self.assertEqual(mock_clean_up.call_count, 2)


@patch('src.validation.Validation.clean_up')
@patch('src.validation.Validation.download_single_file')
def test_validate_invalid_file(self, mock_download_file, mock_clean_up):
Expand Down
Loading