diff --git a/coriolis/api/v1/utils.py b/coriolis/api/v1/utils.py index b3ffdfca0..6c77306d2 100644 --- a/coriolis/api/v1/utils.py +++ b/coriolis/api/v1/utils.py @@ -104,6 +104,10 @@ def _process_user_scripts( payload = user_scripts if sanitize_newlines: payload = _sanitize_newlines(payload) + if not payload.strip("\r\n "): + raise exception.InvalidInput( + "Empty script received. " + "Use 'None' if the script should be removed.") return [ { "phase": constants.PHASE_OSMORPHING_POST_OS_MOUNT, @@ -141,6 +145,10 @@ def _process_user_scripts( if sanitize_newlines: script_item["payload"] = _sanitize_newlines( script_item["payload"]) + if not script_item["payload"].strip("\r\n "): + raise exception.InvalidInput( + "Empty script received. " + "Use 'None' if the script should be removed.") return user_scripts else: diff --git a/coriolis/tests/api/v1/data/utils_validate_user_scripts_raises.yml b/coriolis/tests/api/v1/data/utils_validate_user_scripts_raises.yml index 677a4e1e7..4fe4c8e9c 100644 --- a/coriolis/tests/api/v1/data/utils_validate_user_scripts_raises.yml +++ b/coriolis/tests/api/v1/data/utils_validate_user_scripts_raises.yml @@ -13,4 +13,31 @@ global: linux: 'mock_scripts_linux' windows: 'mock_scripts_windows' - instances: "invalid" \ No newline at end of file + instances: "invalid" + +- user_scripts: + global: + linux: '' + +- user_scripts: + global: + instances: + some_instance: '' + +- user_scripts: + global: + linux: + - phase: osmorphing_post_os_mount + payload: '' + +- user_scripts: + global: + instances: + some_instance: '' + +- user_scripts: + global: + instances: + some_instance: + - phase: osmorphing_post_os_mount + payload: ''