Skip to content

Commit 1e508af

Browse files
committed
refactor: move the CLI in its own file
1 parent b628852 commit 1e508af

File tree

3 files changed

+73
-67
lines changed

3 files changed

+73
-67
lines changed

scim2_tester/__init__.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
from .checker import check_server
2-
from .discovery import get_all_available_tags
3-
from .discovery import get_standard_resource_types
4-
from .utils import CheckConfig
5-
from .utils import CheckResult
6-
from .utils import SCIMTesterError
7-
from .utils import Status
1+
from scim2_tester.checker import check_server
2+
from scim2_tester.discovery import get_all_available_tags
3+
from scim2_tester.discovery import get_standard_resource_types
4+
from scim2_tester.utils import CheckConfig
5+
from scim2_tester.utils import CheckResult
6+
from scim2_tester.utils import SCIMTesterError
7+
from scim2_tester.utils import Status
88

99
__all__ = [
1010
"check_server",
@@ -15,3 +15,8 @@
1515
"get_all_available_tags",
1616
"get_standard_resource_types",
1717
]
18+
19+
if __name__ == "__main__": # pragma: no cover
20+
from scim2_tester.cli import cli
21+
22+
cli()

scim2_tester/checker.py

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import argparse
2-
31
from scim2_client.engines.httpx import SyncSCIMClient
42

53
from scim2_tester.checkers import random_url
@@ -117,61 +115,3 @@ def check_server(
117115
results.extend(resource_results)
118116

119117
return results
120-
121-
122-
if __name__ == "__main__":
123-
from httpx import Client
124-
from scim2_client.engines.httpx import SyncSCIMClient
125-
126-
parser = argparse.ArgumentParser(description="SCIM server compliance checker.")
127-
parser.add_argument("host")
128-
parser.add_argument("--token", required=False)
129-
parser.add_argument("--verbose", required=False, action="store_true")
130-
parser.add_argument(
131-
"--include-tags",
132-
nargs="+",
133-
help="Run only checks with these tags",
134-
required=False,
135-
)
136-
parser.add_argument(
137-
"--exclude-tags",
138-
nargs="+",
139-
help="Skip checks with these tags",
140-
required=False,
141-
)
142-
parser.add_argument(
143-
"--resource-types",
144-
nargs="+",
145-
help="Filter by resource type names",
146-
required=False,
147-
)
148-
args = parser.parse_args()
149-
150-
client = Client(
151-
base_url=args.host,
152-
headers={"Authorization": f"Bearer {args.token}"} if args.token else None,
153-
)
154-
scim = SyncSCIMClient(client)
155-
scim.discover() # type: ignore[no-untyped-call]
156-
157-
include_tags: set[str] | None = (
158-
set(args.include_tags) if args.include_tags else None
159-
)
160-
exclude_tags: set[str] | None = (
161-
set(args.exclude_tags) if args.exclude_tags else None
162-
)
163-
164-
results = check_server(
165-
scim,
166-
include_tags=include_tags,
167-
exclude_tags=exclude_tags,
168-
resource_types=args.resource_types,
169-
)
170-
171-
for result in results:
172-
resource_info = f" [{result.resource_type}]" if result.resource_type else ""
173-
print(f"{result.status.name} {result.title}{resource_info}")
174-
if result.reason:
175-
print(" ", result.reason)
176-
if args.verbose and result.data:
177-
print(" ", result.data)

scim2_tester/cli.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import argparse
2+
3+
from httpx import Client
4+
from scim2_client.engines.httpx import SyncSCIMClient
5+
6+
from scim2_tester.checker import check_server
7+
8+
9+
def cli():
10+
parser = argparse.ArgumentParser(description="SCIM server compliance checker.")
11+
parser.add_argument("host")
12+
parser.add_argument("--token", required=False)
13+
parser.add_argument("--verbose", required=False, action="store_true")
14+
parser.add_argument(
15+
"--include-tags",
16+
nargs="+",
17+
help="Run only checks with these tags",
18+
required=False,
19+
)
20+
parser.add_argument(
21+
"--exclude-tags",
22+
nargs="+",
23+
help="Skip checks with these tags",
24+
required=False,
25+
)
26+
parser.add_argument(
27+
"--resource-types",
28+
nargs="+",
29+
help="Filter by resource type names",
30+
required=False,
31+
)
32+
args = parser.parse_args()
33+
34+
client = Client(
35+
base_url=args.host,
36+
headers={"Authorization": f"Bearer {args.token}"} if args.token else None,
37+
)
38+
scim = SyncSCIMClient(client)
39+
scim.discover() # type: ignore[no-untyped-call]
40+
41+
include_tags: set[str] | None = (
42+
set(args.include_tags) if args.include_tags else None
43+
)
44+
exclude_tags: set[str] | None = (
45+
set(args.exclude_tags) if args.exclude_tags else None
46+
)
47+
48+
results = check_server(
49+
scim,
50+
include_tags=include_tags,
51+
exclude_tags=exclude_tags,
52+
resource_types=args.resource_types,
53+
)
54+
55+
for result in results:
56+
resource_info = f" [{result.resource_type}]" if result.resource_type else ""
57+
print(f"{result.status.name} {result.title}{resource_info}")
58+
if result.reason:
59+
print(" ", result.reason)
60+
if args.verbose and result.data:
61+
print(" ", result.data)

0 commit comments

Comments
 (0)