11import json
22from pathlib import Path
3- from apmodel .nodeinfo .nodeinfo import Nodeinfo , NodeinfoProtocol , NodeinfoOutbound
4- from apmodel .types import Undefined
3+
4+ from pydantic import ValidationError
5+ from pydantic_core import PydanticCustomError
6+
7+ from apmodel import nodeinfo as ni
8+ from apmodel .nodeinfo .nodeinfo import NodeinfoOutbound , NodeinfoProtocol
9+
10+ import pytest
511
612def test_nodeinfo_2_0 ():
713 path = Path (__file__ ).parent / "data" / "nodeinfo_sample_2.0.json"
814 with open (path ) as f :
915 data = json .load (f )
10-
11- nodeinfo = Nodeinfo . from_json (data )
16+
17+ nodeinfo = ni . load (data )
1218
1319 assert nodeinfo .version == "2.0"
1420 assert nodeinfo .software .name == "foofedi"
1521 assert nodeinfo .software .version == "2025.8.27"
16- assert isinstance ( nodeinfo .software .homepage , Undefined )
22+ assert not nodeinfo .software .homepage
1723 assert nodeinfo .protocols [0 ] == NodeinfoProtocol .ACTIVITYPUB
1824 assert NodeinfoOutbound .ATOM1_0 in nodeinfo .services .outbound
1925 assert nodeinfo .openRegistrations is False
2026 assert nodeinfo .usage .users .total == 4
2127 assert nodeinfo .metadata ["nodeName" ] == "FooFedi TEST"
2228
29+ def test_nodeinfo_2_0_incorrect ():
30+ path = Path (__file__ ).parent / "data" / "nodeinfo_sample_2.0_incorrect.json"
31+ with open (path ) as f :
32+ data = json .load (f )
33+
34+ with pytest .raises (ValidationError ) as e :
35+ ni .load (data )
36+
37+
2338def test_nodeinfo_2_1 ():
2439 path = Path (__file__ ).parent / "data" / "nodeinfo_sample_2.1.json"
2540 with open (path ) as f :
2641 data = json .load (f )
27-
28- nodeinfo = Nodeinfo . from_json (data )
42+
43+ nodeinfo = ni . load (data )
2944
3045 assert nodeinfo .version == "2.1"
3146 assert nodeinfo .software .name == "foofedi"
3247 assert nodeinfo .software .version == "2025.8.27"
3348 assert nodeinfo .software .homepage == "https://foofedi.example.com/"
34- assert nodeinfo .software .repository == "https://git.example.com/foofedi/foofedi"
49+ assert (
50+ nodeinfo .software .repository
51+ == "https://git.example.com/foofedi/foofedi"
52+ )
3553 assert nodeinfo .protocols [0 ] == NodeinfoProtocol .ACTIVITYPUB
3654 assert NodeinfoOutbound .ATOM1_0 in nodeinfo .services .outbound
3755 assert nodeinfo .openRegistrations is False
3856 assert nodeinfo .usage .users .total == 4
39- assert nodeinfo .metadata ["nodeName" ] == "FooFedi TEST"
57+ assert nodeinfo .metadata ["nodeName" ] == "FooFedi TEST"
0 commit comments