Skip to content

Commit 63f666f

Browse files
authored
Fix tests (#50)
1 parent 95c727c commit 63f666f

File tree

8 files changed

+105
-12
lines changed

8 files changed

+105
-12
lines changed

docker-compose-test.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ services:
1515
FJ_ADMIN_TOKEN: "12345"
1616
FJ_PORT: 5002
1717
FJ_SECRET_KEY_BASE: "super-secret-key"
18-
FJ_SIP_IP: "127.0.0.1"
19-
FJ_COMPONENTS_USED: "rtsp file hls recording sip"
2018
FJ_BROADCASTING_ENABLED: "true"
2119
FJ_BROADCASTER_URL: "http://broadcaster:4000"
2220
FJ_BROADCASTER_TOKEN: "broadcaster_token"
@@ -25,8 +23,6 @@ services:
2523
- "5002:5002"
2624
- "49999:49999"
2725
- "50000-50050:50000-50050/udp"
28-
volumes:
29-
- ./tests/fixtures:/app/fishjam_resources/file_component_sources
3026

3127
fishjam-prep:
3228
image: curlimages/curl:8.12.1

fishjam/_openapi_client/api/room/add_peer.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ def _parse_response(
5252
response_404 = Error.from_dict(response.json())
5353

5454
return response_404
55+
if response.status_code == 409:
56+
response_409 = Error.from_dict(response.json())
57+
58+
return response_409
5559
if response.status_code == 503:
5660
response_503 = Error.from_dict(response.json())
5761

fishjam/_openapi_client/models/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
from .streams_listing_response import StreamsListingResponse
3737
from .subscribe_mode import SubscribeMode
3838
from .subscribe_tracks_body import SubscribeTracksBody
39+
from .subscriptions import Subscriptions
3940
from .track import Track
4041
from .track_metadata_type_0 import TrackMetadataType0
4142
from .track_type import TrackType
@@ -78,6 +79,7 @@
7879
"StreamsListingResponse",
7980
"SubscribeMode",
8081
"SubscribeTracksBody",
82+
"Subscriptions",
8183
"Track",
8284
"TrackMetadataType0",
8385
"TrackType",

fishjam/_openapi_client/models/peer.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
if TYPE_CHECKING:
1818
from ..models.peer_metadata import PeerMetadata
19+
from ..models.subscriptions import Subscriptions
1920
from ..models.track import Track
2021

2122

@@ -31,7 +32,7 @@ class Peer:
3132
metadata (Union['PeerMetadata', None]): Custom metadata set by the peer Example: {'name': 'FishjamUser'}.
3233
status (PeerStatus): Informs about the peer status Example: disconnected.
3334
subscribe_mode (SubscribeMode): Configuration of peer's subscribing policy
34-
subscriptions (list[str]): Describes peer's subscriptions in manual mode
35+
subscriptions (Subscriptions): Describes peer's subscriptions in manual mode
3536
tracks (list['Track']): List of all peer's tracks
3637
type_ (PeerType): Peer type Example: webrtc.
3738
"""
@@ -40,7 +41,7 @@ class Peer:
4041
metadata: Union["PeerMetadata", None]
4142
status: PeerStatus
4243
subscribe_mode: SubscribeMode
43-
subscriptions: list[str]
44+
subscriptions: "Subscriptions"
4445
tracks: list["Track"]
4546
type_: PeerType
4647
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
@@ -60,7 +61,7 @@ def to_dict(self) -> dict[str, Any]:
6061

6162
subscribe_mode = self.subscribe_mode.value
6263

63-
subscriptions = self.subscriptions
64+
subscriptions = self.subscriptions.to_dict()
6465

6566
tracks = []
6667
for tracks_item_data in self.tracks:
@@ -88,6 +89,7 @@ def to_dict(self) -> dict[str, Any]:
8889
@classmethod
8990
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
9091
from ..models.peer_metadata import PeerMetadata
92+
from ..models.subscriptions import Subscriptions
9193
from ..models.track import Track
9294

9395
d = dict(src_dict)
@@ -112,7 +114,7 @@ def _parse_metadata(data: object) -> Union["PeerMetadata", None]:
112114

113115
subscribe_mode = SubscribeMode(d.pop("subscribeMode"))
114116

115-
subscriptions = cast(list[str], d.pop("subscriptions"))
117+
subscriptions = Subscriptions.from_dict(d.pop("subscriptions"))
116118

117119
tracks = []
118120
_tracks = d.pop("tracks")

fishjam/_openapi_client/models/stream.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@ class Stream:
2424
"""Describes stream status
2525
2626
Attributes:
27+
connected_viewers (int): Number of connected viewers
2728
id (str): Assigned stream id
2829
public (bool):
2930
streamers (list['Streamer']): List of all streamers
3031
viewers (list['Viewer']): List of all viewers
3132
audio_only (Union[Unset, bool]): True if stream is restricted to audio only
3233
"""
3334

35+
connected_viewers: int
3436
id: str
3537
public: bool
3638
streamers: list["Streamer"]
@@ -39,6 +41,8 @@ class Stream:
3941
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
4042

4143
def to_dict(self) -> dict[str, Any]:
44+
connected_viewers = self.connected_viewers
45+
4246
id = self.id
4347

4448
public = self.public
@@ -59,6 +63,7 @@ def to_dict(self) -> dict[str, Any]:
5963
field_dict.update(self.additional_properties)
6064
field_dict.update(
6165
{
66+
"connectedViewers": connected_viewers,
6267
"id": id,
6368
"public": public,
6469
"streamers": streamers,
@@ -76,6 +81,8 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
7681
from ..models.viewer import Viewer
7782

7883
d = dict(src_dict)
84+
connected_viewers = d.pop("connectedViewers")
85+
7986
id = d.pop("id")
8087

8188
public = d.pop("public")
@@ -97,6 +104,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
97104
audio_only = d.pop("audioOnly", UNSET)
98105

99106
stream = cls(
107+
connected_viewers=connected_viewers,
100108
id=id,
101109
public=public,
102110
streamers=streamers,
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
from collections.abc import Mapping
2+
from typing import (
3+
Any,
4+
TypeVar,
5+
cast,
6+
)
7+
8+
from attrs import define as _attrs_define
9+
from attrs import field as _attrs_field
10+
11+
T = TypeVar("T", bound="Subscriptions")
12+
13+
14+
@_attrs_define
15+
class Subscriptions:
16+
"""Describes peer's subscriptions in manual mode
17+
18+
Attributes:
19+
peers (list[str]): List of peer IDs this peer subscribes to
20+
tracks (list[str]): List of track IDs this peer subscribes to
21+
"""
22+
23+
peers: list[str]
24+
tracks: list[str]
25+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
26+
27+
def to_dict(self) -> dict[str, Any]:
28+
peers = self.peers
29+
30+
tracks = self.tracks
31+
32+
field_dict: dict[str, Any] = {}
33+
field_dict.update(self.additional_properties)
34+
field_dict.update(
35+
{
36+
"peers": peers,
37+
"tracks": tracks,
38+
}
39+
)
40+
41+
return field_dict
42+
43+
@classmethod
44+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
45+
d = dict(src_dict)
46+
peers = cast(list[str], d.pop("peers"))
47+
48+
tracks = cast(list[str], d.pop("tracks"))
49+
50+
subscriptions = cls(
51+
peers=peers,
52+
tracks=tracks,
53+
)
54+
55+
subscriptions.additional_properties = d
56+
return subscriptions
57+
58+
@property
59+
def additional_keys(self) -> list[str]:
60+
return list(self.additional_properties.keys())
61+
62+
def __getitem__(self, key: str) -> Any:
63+
return self.additional_properties[key]
64+
65+
def __setitem__(self, key: str, value: Any) -> None:
66+
self.additional_properties[key] = value
67+
68+
def __delitem__(self, key: str) -> None:
69+
del self.additional_properties[key]
70+
71+
def __contains__(self, key: str) -> bool:
72+
return key in self.additional_properties

fishjam/errors.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ def from_response(response: Response[Error]):
2929
case HTTPStatus.SERVICE_UNAVAILABLE:
3030
return ServiceUnavailableError(errors)
3131

32+
case HTTPStatus.CONFLICT:
33+
return ConflictError(errors)
34+
3235
case _:
3336
return InternalServerError(errors)
3437

@@ -61,3 +64,9 @@ class InternalServerError(HTTPError):
6164
def __init__(self, errors):
6265
"""@private"""
6366
super().__init__(errors)
67+
68+
69+
class ConflictError(HTTPError):
70+
def __init__(self, errors):
71+
"""@private"""
72+
super().__init__(errors)

tests/test_room_api.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
Room,
1010
RoomOptions,
1111
)
12-
from fishjam._openapi_client.models import SubscribeMode
12+
from fishjam._openapi_client.models import SubscribeMode, Subscriptions
1313
from fishjam.errors import (
1414
BadRequestError,
15+
ConflictError,
1516
NotFoundError,
16-
ServiceUnavailableError,
1717
UnauthorizedError,
1818
)
1919
from fishjam.peer import (
@@ -179,7 +179,7 @@ def _assert_peer_created(
179179
tracks=[],
180180
metadata=PeerMetadata.from_dict({"peer": {}, "server": server_metadata}),
181181
subscribe_mode=SubscribeMode.AUTO,
182-
subscriptions=[],
182+
subscriptions=Subscriptions(peers=[], tracks=[]),
183183
)
184184

185185
room = room_api.get_room(room_id)
@@ -213,7 +213,7 @@ def test_peer_limit_reached(self, room_api: FishjamClient):
213213

214214
self._assert_peer_created(room_api, peer, room.id)
215215

216-
with pytest.raises(ServiceUnavailableError):
216+
with pytest.raises(ConflictError):
217217
room_api.create_peer(room.id)
218218

219219

0 commit comments

Comments
 (0)