Skip to content

Commit 801d8f0

Browse files
authored
fix: add validation for system caches delete flags (#629)
* fix: add validation for system caches delete flags Signed-off-by: Lucas Rodriguez <[email protected]> * remove optional typing for language and version args Signed-off-by: Lucas Rodriguez <[email protected]> --------- Signed-off-by: Lucas Rodriguez <[email protected]>
1 parent a4fb69f commit 801d8f0

File tree

4 files changed

+35
-3
lines changed

4 files changed

+35
-3
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## Unreleased
88

9+
### Added
10+
11+
- Added validation for required flags for the `rsconnect system caches delete` command.
12+
913
## [1.25.0] - 2024-12-18
1014

1115
### Added

rsconnect/api.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1186,7 +1186,7 @@ def runtime_caches(self) -> list[ListEntryOutputDTO]:
11861186
raise RSConnectException("To delete a runtime cache, client must be a RSConnectClient.")
11871187
return self.client.system_caches_runtime_list()
11881188

1189-
def delete_runtime_cache(self, language: Optional[str], version: Optional[str], image_name: str, dry_run: bool):
1189+
def delete_runtime_cache(self, language: str, version: str, image_name: str, dry_run: bool):
11901190
if not isinstance(self.client, RSConnectClient):
11911191
raise RSConnectException("To delete a runtime cache, client must be a RSConnectClient.")
11921192
target: DeleteInputDTO = {

rsconnect/main.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -2825,11 +2825,13 @@ def system_caches_list(
28252825
"--language",
28262826
"-l",
28272827
help="The language of the target cache.",
2828+
required=True,
28282829
)
28292830
@click.option(
28302831
"--version",
28312832
"-V",
28322833
help="The version of the target cache.",
2834+
required=True,
28332835
)
28342836
@click.option(
28352837
"--image-name",
@@ -2852,8 +2854,8 @@ def system_caches_delete(
28522854
insecure: bool,
28532855
cacert: Optional[str],
28542856
verbose: int,
2855-
language: Optional[str],
2856-
version: Optional[str],
2857+
language: str,
2858+
version: str,
28572859
image_name: str,
28582860
dry_run: bool,
28592861
):

tests/test_main_system_caches.py

+26
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,29 @@ def test_system_caches_delete_admin_nonexistent(self):
143143
self.assertEqual(result.exit_code, 1)
144144

145145
self.assertRegex(result.output, "Cache does not exist")
146+
147+
# --version and --language flags are required
148+
def test_system_caches_delete_required_flags(self):
149+
api_key = get_key("admin")
150+
runner = CliRunner()
151+
152+
# neither flag provided should fail
153+
args = ["system", "caches", "delete"]
154+
apply_common_args(args, server=CONNECT_SERVER, key=api_key)
155+
result = runner.invoke(cli, args)
156+
self.assertEqual(result.exit_code, 2)
157+
self.assertRegex(result.output, "Error: Missing option '--language' / '-l'")
158+
159+
# only --language flag provided should fail
160+
args = ["system", "caches", "delete", "--language", "Python"]
161+
apply_common_args(args, server=CONNECT_SERVER, key=api_key)
162+
result = runner.invoke(cli, args)
163+
self.assertEqual(result.exit_code, 2)
164+
self.assertRegex(result.output, "Error: Missing option '--version' / '-V'")
165+
166+
# only --version flag provided should fail
167+
args = ["system", "caches", "delete", "--version", "1.2.3"]
168+
apply_common_args(args, server=CONNECT_SERVER, key=api_key)
169+
result = runner.invoke(cli, args)
170+
self.assertEqual(result.exit_code, 2)
171+
self.assertRegex(result.output, "Error: Missing option '--language' / '-l'")

0 commit comments

Comments
 (0)