Skip to content

Commit 2d2d382

Browse files
committed
tests: basic unit tests
1 parent 101f98f commit 2d2d382

File tree

6 files changed

+264
-27
lines changed

6 files changed

+264
-27
lines changed

README.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,49 @@
11
# pytest-scim2-server
2+
23
SCIM2 server fixture pour Pytest
4+
5+
## Installation
6+
7+
```
8+
pip install pytest-scim2-server
9+
```
10+
11+
## Usage
12+
13+
pytest-scim2-server creates a ``scim2_server`` fixture that runs an instance of [scim2-server](https://github.com/python-scim/scim2-server) on a random port, in a dedicated thread.
14+
15+
```python
16+
import requests
17+
18+
def test_scim_foobar(scim2_server):
19+
host, port = scim2_server
20+
21+
res = request.get(f"http://{host}:{port}")
22+
...
23+
```
24+
25+
Note that you can use [scim2-client](https://scim2-client.readthedocs.io) to interact with the SCIM server.
26+
27+
```python
28+
import pytest
29+
from httpx import Client
30+
from scim2_client.engines.httpx import SyncSCIMClient
31+
32+
33+
@pytest.fixture(scope="session")
34+
def scim_client(scim2_server):
35+
host, port = scim2_server
36+
http_client = Client(base_url=f"http://{host}:{port}")
37+
scim_client = SyncSCIMClient(http_client)
38+
scim_client.discover()
39+
return scim_client
40+
41+
42+
def test_scim2_server(scim_client):
43+
User = scim_client.get_resource_model("User")
44+
user = User(user_name="[email protected]")
45+
response = scim_client.create(user)
46+
47+
users = scim_client.query(User)
48+
assert users.resources[0].id == response.id
49+
```

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ dependencies = [
1717
[dependency-groups]
1818
dev = [
1919
"pre-commit-uv>=4.1.4",
20+
"pytest-cov>=6.0.0",
21+
"scim2-client[httpx]>=0.5.1",
2022
"tox-uv>=1.16.0",
2123
]
2224

pytest_scim2_server/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
@pytest.fixture(scope="session")
1313
def scim2_server():
1414
"""SCIM2 server running in a thread."""
15-
1615
backend = InMemoryBackend()
1716
provider = SCIMProvider(backend)
1817

tests/__init__.py

Whitespace-only changes.

tests/test_scim2_server.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import pytest
2+
from httpx import Client
3+
from scim2_client.engines.httpx import SyncSCIMClient
4+
5+
6+
@pytest.fixture(scope="session")
7+
def scim_client(scim2_server):
8+
host, port = scim2_server
9+
http_client = Client(base_url=f"http://{host}:{port}")
10+
scim_client = SyncSCIMClient(http_client)
11+
scim_client.discover()
12+
return scim_client
13+
14+
15+
def test_scim2_server(scim_client):
16+
User = scim_client.get_resource_model("User")
17+
user = User(user_name="[email protected]")
18+
response = scim_client.create(user)
19+
20+
users = scim_client.query(User)
21+
assert users.resources[0].id == response.id

0 commit comments

Comments
 (0)