diff --git a/test/functional/api/cas/casadm.py b/test/functional/api/cas/casadm.py index 858d10e..b328e38 100644 --- a/test/functional/api/cas/casadm.py +++ b/test/functional/api/cas/casadm.py @@ -153,9 +153,9 @@ def print_version(output_format: OutputFormat = None, shortcut: bool = False): return output -def zero_metadata(cache_dev: Device, shortcut: bool = False): +def zero_metadata(cache_dev: Device, force: bool = False, shortcut: bool = False): output = TestRun.executor.run( - zero_metadata_cmd(cache_dev=cache_dev.path, shortcut=shortcut)) + zero_metadata_cmd(cache_dev=cache_dev.path, force=force, shortcut=shortcut)) if output.exit_code != 0: raise CmdException("Failed to wipe metadata.", output) return output diff --git a/test/functional/api/cas/cli.py b/test/functional/api/cas/cli.py index 4262955..3cc5d28 100644 --- a/test/functional/api/cas/cli.py +++ b/test/functional/api/cas/cli.py @@ -115,9 +115,11 @@ def print_statistics_cmd(cache_id: str, core_id: str = None, per_io_class: bool return casadm_bin + command -def zero_metadata_cmd(cache_dev: str, shortcut: bool): +def zero_metadata_cmd(cache_dev: str, force: bool = False, shortcut: bool = False): command = " --zero-metadata" command += (" -d " if shortcut else " --device ") + cache_dev + if force: + command += (" -f" if shortcut else " --force") return casadm_bin + command diff --git a/test/functional/api/cas/cli_help_messages.py b/test/functional/api/cas/cli_help_messages.py index 28d97f0..47b031c 100644 --- a/test/functional/api/cas/cli_help_messages.py +++ b/test/functional/api/cas/cli_help_messages.py @@ -254,6 +254,7 @@ zero_metadata_help = [ r"Clear metadata from caching device", r"Options that are valid with --zero-metadata are:", r"-d --device \ Path to device on which metadata would be cleared" + r"-f --force Ignore potential dirty data on cache device" ] unrecognized_stderr = [ diff --git a/test/functional/tests/security/test_security_user.py b/test/functional/tests/security/test_security_user.py index bb65e9b..93c5cc1 100644 --- a/test/functional/tests/security/test_security_user.py +++ b/test/functional/tests/security/test_security_user.py @@ -120,6 +120,14 @@ def test_user_cli(): except CmdException: TestRun.LOGGER.info("Non-root user cannot remove core.") + with TestRun.step("Try to zero metadata."): + try: + output = run_as_other_user(cli.zero_metadata_cmd(str(cache_dev)), user_name) + if output.exit_code == 0: + TestRun.LOGGER.error("Zeroing metadata should fail!") + except CmdException: + TestRun.LOGGER.info("Non-root user cannot zero metadata.") + with TestRun.step("Try to list caches."): try: output = run_as_other_user(cli.list_cmd(), user_name) @@ -344,6 +352,13 @@ def test_user_cli(): except CmdException: TestRun.LOGGER.error("Non-root sudoer user should be able to remove core from cache.") + with TestRun.step("Try to zero metadata with 'sudo'."): + try: + run_as_other_user(cli.zero_metadata_cmd(str(cache_dev)), + user_name, True) + except CmdException: + TestRun.LOGGER.error("Non-root sudoer user should be able to zero metadata.") + with TestRun.step("Try to print help for casadm with 'sudo'."): try: run_as_other_user(cli.help_cmd(), user_name, True)