Skip to content

Commit 709b99e

Browse files
committed
refactor: URL is an option and not an argument anymore
1 parent da08dd2 commit 709b99e

File tree

8 files changed

+43
-20
lines changed

8 files changed

+43
-20
lines changed

scim2_cli/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ def _is_pydantic_model(model: Any) -> TypeGuard[type[BaseModel]]:
3838

3939

4040
@click.group(cls=make_rst_to_ansi_formatter(DOC_URL, group=True))
41-
@click.argument("url")
41+
@click.option("--url", help="The SCIM server endpoint.")
4242
@click.pass_context
43-
def cli(ctx, url):
43+
def cli(ctx, url: str):
4444
"""SCIM application development CLI."""
4545
ctx.ensure_object(dict)
4646
ctx.obj["URL"] = url

tests/test_cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def test_stdin_bad_json(runner, httpserver):
1111
"""Test that invalid JSON stdin raise an error."""
1212
result = runner.invoke(
1313
cli,
14-
[httpserver.url_for("/"), "query", "user"],
14+
["--url", httpserver.url_for("/"), "query", "user"],
1515
input="invalid",
1616
)
1717
assert result.exit_code == 1

tests/test_create.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def test_no_command_stdin(runner, httpserver, simple_user_payload):
2121

2222
result = runner.invoke(
2323
cli,
24-
[httpserver.url_for("/"), "create"],
24+
["--url", httpserver.url_for("/"), "create"],
2525
input=json.dumps(payload),
2626
catch_exceptions=False,
2727
)
@@ -35,11 +35,11 @@ def test_no_command_no_stdin(runner, httpserver, simple_user_payload):
3535
"""Test missing stdin."""
3636
result = runner.invoke(
3737
cli,
38-
[httpserver.url_for("/"), "create"],
38+
["--url", httpserver.url_for("/"), "create"],
3939
catch_exceptions=False,
4040
)
4141
assert result.exit_code == 1, result.stdout
42-
assert "Usage: cli URL create" in result.stdout
42+
assert "Usage: cli create" in result.stdout
4343

4444

4545
def test_no_command_scimclient_error(runner, httpserver, simple_user_payload):
@@ -63,6 +63,7 @@ def test_no_command_scimclient_error(runner, httpserver, simple_user_payload):
6363
result = runner.invoke(
6464
cli,
6565
[
66+
"--url",
6667
httpserver.url_for("/"),
6768
"create",
6869
],
@@ -94,6 +95,7 @@ def test_no_command_validation_error(runner, httpserver, simple_user_payload):
9495
result = runner.invoke(
9596
cli,
9697
[
98+
"--url",
9799
httpserver.url_for("/"),
98100
"create",
99101
],
@@ -122,7 +124,7 @@ def test_command_stdin(runner, httpserver, simple_user_payload):
122124

123125
result = runner.invoke(
124126
cli,
125-
[httpserver.url_for("/"), "create", "user"],
127+
["--url", httpserver.url_for("/"), "create", "user"],
126128
input=json.dumps(payload),
127129
catch_exceptions=False,
128130
)
@@ -144,6 +146,7 @@ def test_command_parameters(runner, httpserver, simple_user_payload):
144146
result = runner.invoke(
145147
cli,
146148
[
149+
"--url",
147150
httpserver.url_for("/"),
148151
"create",
149152
"user",
@@ -162,11 +165,11 @@ def test_command_no_stdin_no_parameters(runner, httpserver, simple_user_payload)
162165
"""No parameter nor stdin should display the help."""
163166
result = runner.invoke(
164167
cli,
165-
[httpserver.url_for("/"), "create", "user"],
168+
["--url", httpserver.url_for("/"), "create", "user"],
166169
catch_exceptions=False,
167170
)
168171
assert result.exit_code == 1, result.stdout
169-
assert "Usage: cli URL create" in result.stdout
172+
assert "Usage: cli create" in result.stdout
170173

171174

172175
def test_command_validation_error(runner, httpserver, simple_user_payload):
@@ -183,6 +186,7 @@ def test_command_validation_error(runner, httpserver, simple_user_payload):
183186
result = runner.invoke(
184187
cli,
185188
[
189+
"--url",
186190
httpserver.url_for("/"),
187191
"create",
188192
"user",

tests/test_delete.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ def test_nominal_case(runner, httpserver):
1717
result = runner.invoke(
1818
cli,
1919
[
20+
"--url",
2021
httpserver.url_for("/"),
2122
"delete",
2223
"user",
@@ -41,6 +42,7 @@ def test_scimclient_error(runner, httpserver):
4142
result = runner.invoke(
4243
cli,
4344
[
45+
"--url",
4446
httpserver.url_for("/"),
4547
"delete",
4648
"user",
@@ -57,6 +59,7 @@ def test_bad_resource_type(runner, httpserver):
5759
result = runner.invoke(
5860
cli,
5961
[
62+
"--url",
6063
httpserver.url_for("/"),
6164
"delete",
6265
"invalid",
@@ -86,6 +89,7 @@ def test_not_found(runner, httpserver):
8689
result = runner.invoke(
8790
cli,
8891
[
92+
"--url",
8993
httpserver.url_for("/"),
9094
"delete",
9195
"user",

tests/test_query.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ def test_all(runner, httpserver, simple_user_payload):
9191
result = runner.invoke(
9292
cli,
9393
[
94+
"--url",
9495
httpserver.url_for("/"),
9596
"query",
9697
],
@@ -130,6 +131,7 @@ def test_get_by_id(runner, httpserver, simple_user_payload):
130131
result = runner.invoke(
131132
cli,
132133
[
134+
"--url",
133135
httpserver.url_for("/"),
134136
"query",
135137
"user",
@@ -148,6 +150,7 @@ def test_get_resources_without_id(runner, httpserver, simple_user_payload):
148150
result = runner.invoke(
149151
cli,
150152
[
153+
"--url",
151154
httpserver.url_for("/"),
152155
"query",
153156
"user",
@@ -171,7 +174,7 @@ def test_stdin(runner, httpserver, simple_user_payload):
171174
payload = {"attributes": "userName"}
172175
result = runner.invoke(
173176
cli,
174-
[httpserver.url_for("/"), "query", "user", "user-name-qs"],
177+
["--url", httpserver.url_for("/"), "query", "user", "user-name-qs"],
175178
input=json.dumps(payload),
176179
catch_exceptions=False,
177180
)
@@ -186,6 +189,7 @@ def test_search_request_payload(runner, httpserver, simple_user_payload):
186189
result = runner.invoke(
187190
cli,
188191
[
192+
"--url",
189193
httpserver.url_for("/"),
190194
"query",
191195
"user",
@@ -221,6 +225,7 @@ def test_unknown_resource_type(
221225
result = runner.invoke(
222226
cli,
223227
[
228+
"--url",
224229
httpserver.url_for("/"),
225230
"query",
226231
"invalid",
@@ -237,6 +242,7 @@ def test_scimclient_error(runner, httpserver, simple_user_payload):
237242
result = runner.invoke(
238243
cli,
239244
[
245+
"--url",
240246
httpserver.url_for("/"),
241247
"query",
242248
"user",
@@ -253,6 +259,7 @@ def test_validation_error(runner, httpserver, simple_user_payload):
253259
result = runner.invoke(
254260
cli,
255261
[
262+
"--url",
256263
httpserver.url_for("/"),
257264
"query",
258265
"user",

tests/test_replace.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def test_no_command_stdin(runner, httpserver, simple_user_payload):
2525

2626
result = runner.invoke(
2727
cli,
28-
[httpserver.url_for("/"), "replace"],
28+
["--url", httpserver.url_for("/"), "replace"],
2929
input=json.dumps(payload),
3030
catch_exceptions=False,
3131
)
@@ -46,7 +46,7 @@ def test_no_command_payload_without_an_id(runner, httpserver, simple_user_payloa
4646

4747
result = runner.invoke(
4848
cli,
49-
[httpserver.url_for("/"), "replace"],
49+
["--url", httpserver.url_for("/"), "replace"],
5050
input=json.dumps(payload),
5151
catch_exceptions=False,
5252
)
@@ -58,11 +58,11 @@ def test_no_command_no_stdin(runner, httpserver, simple_user_payload):
5858
"""Test missing stdin."""
5959
result = runner.invoke(
6060
cli,
61-
[httpserver.url_for("/"), "replace"],
61+
["--url", httpserver.url_for("/"), "replace"],
6262
catch_exceptions=False,
6363
)
6464
assert result.exit_code == 1, result.stdout
65-
assert "Usage: cli URL replace" in result.stdout
65+
assert "Usage: cli replace" in result.stdout
6666

6767

6868
def test_no_command_scimclient_error(runner, httpserver, simple_user_payload):
@@ -87,6 +87,7 @@ def test_no_command_scimclient_error(runner, httpserver, simple_user_payload):
8787
result = runner.invoke(
8888
cli,
8989
[
90+
"--url",
9091
httpserver.url_for("/"),
9192
"replace",
9293
],
@@ -119,6 +120,7 @@ def test_no_command_validation_error(runner, httpserver, simple_user_payload):
119120
result = runner.invoke(
120121
cli,
121122
[
123+
"--url",
122124
httpserver.url_for("/"),
123125
"replace",
124126
],
@@ -151,7 +153,7 @@ def test_command_stdin(runner, httpserver, simple_user_payload):
151153

152154
result = runner.invoke(
153155
cli,
154-
[httpserver.url_for("/"), "replace", "user"],
156+
["--url", httpserver.url_for("/"), "replace", "user"],
155157
input=json.dumps(payload),
156158
catch_exceptions=False,
157159
)
@@ -176,6 +178,7 @@ def test_command_parameters(runner, httpserver, simple_user_payload):
176178
result = runner.invoke(
177179
cli,
178180
[
181+
"--url",
179182
httpserver.url_for("/"),
180183
"replace",
181184
"user",
@@ -197,6 +200,7 @@ def test_command_payload_without_an_id(runner, httpserver, simple_user_payload):
197200
result = runner.invoke(
198201
cli,
199202
[
203+
"--url",
200204
httpserver.url_for("/"),
201205
"replace",
202206
"user",
@@ -213,11 +217,11 @@ def test_command_no_stdin_no_parameter(runner, httpserver, simple_user_payload):
213217
"""No parameter and no stdin should display the help."""
214218
result = runner.invoke(
215219
cli,
216-
[httpserver.url_for("/"), "replace", "user"],
220+
["--url", httpserver.url_for("/"), "replace", "user"],
217221
catch_exceptions=False,
218222
)
219223
assert result.exit_code == 1, result.stdout
220-
assert "Usage: cli URL replace user" in result.stdout
224+
assert "Usage: cli replace user" in result.stdout
221225

222226

223227
def test_command_scimclient_error(runner, httpserver, simple_user_payload):
@@ -234,6 +238,7 @@ def test_command_scimclient_error(runner, httpserver, simple_user_payload):
234238
result = runner.invoke(
235239
cli,
236240
[
241+
"--url",
237242
httpserver.url_for("/"),
238243
"replace",
239244
"user",
@@ -262,6 +267,7 @@ def test_command_validation_error(runner, httpserver, simple_user_payload):
262267
result = runner.invoke(
263268
cli,
264269
[
270+
"--url",
265271
httpserver.url_for("/"),
266272
"replace",
267273
"user",

tests/test_search.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def test_stdin(runner, httpserver, simple_user_payload):
3838
payload = {"count": 99, "startIndex": 99}
3939
result = runner.invoke(
4040
cli,
41-
[httpserver.url_for("/"), "search"],
41+
["--url", httpserver.url_for("/"), "search"],
4242
input=json.dumps(payload),
4343
catch_exceptions=False,
4444
)
@@ -59,6 +59,7 @@ def test_search_request_payload(runner, httpserver, simple_user_payload):
5959
result = runner.invoke(
6060
cli,
6161
[
62+
"--url",
6263
httpserver.url_for("/"),
6364
"search",
6465
"--attribute",
@@ -95,6 +96,7 @@ def test_scimclient_error(runner, httpserver, simple_user_payload):
9596
result = runner.invoke(
9697
cli,
9798
[
99+
"--url",
98100
httpserver.url_for("/"),
99101
"search",
100102
"--count",

tests/test_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def test_nominal(runner, httpserver):
2929
with patch("scim2_cli.test.check_server", side_effect=[results]):
3030
result = runner.invoke(
3131
cli,
32-
[httpserver.url_for("/"), "test"],
32+
["--url", httpserver.url_for("/"), "test"],
3333
catch_exceptions=False,
3434
)
3535
assert result.exit_code == 0, result.stdout
@@ -65,7 +65,7 @@ def test_verbose(runner, httpserver):
6565
with patch("scim2_cli.test.check_server", side_effect=[results]):
6666
result = runner.invoke(
6767
cli,
68-
[httpserver.url_for("/"), "test", "--verbose"],
68+
["--url", httpserver.url_for("/"), "test", "--verbose"],
6969
catch_exceptions=False,
7070
)
7171
assert result.exit_code == 0, result.stdout

0 commit comments

Comments
 (0)