-
Notifications
You must be signed in to change notification settings - Fork 1
/
mocks.go
161 lines (140 loc) · 7.52 KB
/
mocks.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package media
import (
"context"
"github.com/google/uuid"
"github.com/pion/webrtc/v3"
"github.com/shigde/sfu/internal/auth"
"github.com/shigde/sfu/internal/lobby/resources"
"github.com/shigde/sfu/internal/rtp"
)
const (
bearer = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNTE2MjM5MDIyLCJ1dWlkIjoiYTY0MzY1ZGItMTc0ZC00ZDExLThjYjEtZWIyYTM2MzlmZmU2In0._xbasA_1ljeszeWdqYqp96EWvJIbCnYOTOFxKgcd7vM"
spaceId = "abc123"
resourceID = "152cca71-7156-455b-8b30-a90a4bf8f772"
rtpSessionId = "dac0039e-947a-4d22-8207-4e81a5cdcf19"
reqTokenHeaderName = "X-Req-Token"
csrfTokenHeaderName = "X-Csrf-Token"
)
var (
securityConfig = &auth.SecurityConfig{JWT: jwt, TrustedOrigins: []string{"*"}}
rtpConfig = &rtp.RtpConfig{ICEServer: []rtp.ICEServer{{Urls: []string{"stun:stun.l.google.com:19302"}}}}
jwt = &auth.JwtToken{Enabled: true, Key: "SecretValueReplaceThis", DefaultExpireTime: 604800}
)
type testLobbyManager struct {
}
func newTestLobbyManager() *testLobbyManager {
return &testLobbyManager{}
}
func (l *testLobbyManager) NewIngressResource(_ context.Context, _ uuid.UUID, _ uuid.UUID, _ *webrtc.SessionDescription, _ ...resources.Option) (*resources.WebRTC, error) {
return nil, nil
}
func (l *testLobbyManager) NewEgressResource(_ context.Context, _ uuid.UUID, _ uuid.UUID, _ *webrtc.SessionDescription, _ ...resources.Option) (*resources.WebRTC, error) {
return nil, nil
}
// old API
func (l *testLobbyManager) CreateLobbyIngressEndpoint(_ context.Context, _ uuid.UUID, _ uuid.UUID, _ *webrtc.SessionDescription) (struct {
Answer *webrtc.SessionDescription
Resource uuid.UUID
RtpSessionId uuid.UUID
}, error) {
var data struct {
Answer *webrtc.SessionDescription
Resource uuid.UUID
RtpSessionId uuid.UUID
}
data.Answer = &webrtc.SessionDescription{Type: webrtc.SDPTypeAnswer, SDP: testAnswer}
data.Resource, _ = uuid.Parse(resourceID)
data.RtpSessionId, _ = uuid.Parse(rtpSessionId)
return data, nil
}
func (l *testLobbyManager) InitLobbyEgressEndpoint(_ context.Context, _ uuid.UUID, _ uuid.UUID) (struct {
Offer *webrtc.SessionDescription
Active bool
RtpSessionId uuid.UUID
}, error) {
var data struct {
Offer *webrtc.SessionDescription
Active bool
RtpSessionId uuid.UUID
}
data.Offer = &webrtc.SessionDescription{Type: webrtc.SDPTypeOffer, SDP: testOffer}
data.Active = true
data.RtpSessionId, _ = uuid.Parse(rtpSessionId)
return data, nil
}
func (l *testLobbyManager) FinalCreateLobbyEgressEndpoint(_ context.Context, _ uuid.UUID, _ uuid.UUID, _ *webrtc.SessionDescription) (struct {
Answer *webrtc.SessionDescription
Active bool
RtpSessionId uuid.UUID
}, error) {
var data struct {
Answer *webrtc.SessionDescription
Active bool
RtpSessionId uuid.UUID
}
data.Answer = &webrtc.SessionDescription{Type: webrtc.SDPTypeAnswer, SDP: testAnswer}
data.Active = true
data.RtpSessionId, _ = uuid.Parse(rtpSessionId)
return data, nil
}
func (l *testLobbyManager) CreateMainStreamLobbyEgressEndpoint(_ context.Context, _ uuid.UUID, _ uuid.UUID, _ *webrtc.SessionDescription) (struct {
Answer *webrtc.SessionDescription
RtpSessionId uuid.UUID
}, error) {
var data struct {
Answer *webrtc.SessionDescription
RtpSessionId uuid.UUID
}
data.Answer = &webrtc.SessionDescription{Type: webrtc.SDPTypeAnswer, SDP: testAnswer}
data.RtpSessionId, _ = uuid.Parse(rtpSessionId)
return data, nil
}
func (l *testLobbyManager) LeaveLobby(ctx context.Context, liveStreamId uuid.UUID, userId uuid.UUID) (bool, error) {
return true, nil
}
func (l *testLobbyManager) StartLiveStream(
ctx context.Context,
liveStreamId uuid.UUID,
key string,
rtmpUrl string,
userId uuid.UUID,
) error {
return nil
}
func (m *testLobbyManager) StopLiveStream(
ctx context.Context,
liveStreamId uuid.UUID,
userId uuid.UUID,
) error {
return nil
}
func (m *testLobbyManager) CreateLobbyHostPipe(ctx context.Context, u uuid.UUID, offer *webrtc.SessionDescription, instanceId uuid.UUID) (struct {
Answer *webrtc.SessionDescription
Resource uuid.UUID
RtpSessionId uuid.UUID
}, error) {
var answerData struct {
Answer *webrtc.SessionDescription
Resource uuid.UUID
RtpSessionId uuid.UUID
}
return answerData, nil
}
func (m *testLobbyManager) CreateLobbyHostIngress(_ context.Context, _ uuid.UUID, _ *webrtc.SessionDescription, _ uuid.UUID) (struct {
Answer *webrtc.SessionDescription
Resource uuid.UUID
RtpSessionId uuid.UUID
}, error) {
var answerData struct {
Answer *webrtc.SessionDescription
Resource uuid.UUID
RtpSessionId uuid.UUID
}
return answerData, nil
}
func (m *testLobbyManager) CloseLobbyHostPipe(ctx context.Context, u uuid.UUID, id uuid.UUID) (bool, error) {
return true, nil
}
const testOffer = "v=0\no=- 5228595038118931041 2 IN IP4 127.0.0.1\ns=-\nt=0 0\na=group:BUNDLE 0 1\na=extmap-allow-mixed\na=msid-semantic: WMS\nm=audio 9 UDP/TLS/RTP/SAVPF 111\nc=IN IP4 0.0.0.0\na=rtcp:9 IN IP4 0.0.0.0\na=ice-ufrag:EsAw\na=ice-pwd:bP+XJMM09aR8AiX1jdukzR6Y\na=ice-options:trickle\na=fingerprint:sha-256 DA:7B:57:DC:28:CE:04:4F:31:79:85:C4:31:67:EB:27:58:29:ED:77:2A:0D:24:AE:ED:AD:30:BC:BD:F1:9C:02\na=setup:actpass\na=mid:0\na=bundle-only\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\na=sendonly\na=msid:- d46fb922-d52a-4e9c-aa87-444eadc1521b\na=rtcp-mux\na=rtpmap:111 opus/48000/2\na=fmtp:111 minptime=10;useinbandfec=1\nm=video 9 UDP/TLS/RTP/SAVPF 96 97\nc=IN IP4 0.0.0.0\na=rtcp:9 IN IP4 0.0.0.0\na=ice-ufrag:EsAw\na=ice-pwd:bP+XJMM09aR8AiX1jdukzR6Y\na=ice-options:trickle\na=fingerprint:sha-256 DA:7B:57:DC:28:CE:04:4F:31:79:85:C4:31:67:EB:27:58:29:ED:77:2A:0D:24:AE:ED:AD:30:BC:BD:F1:9C:02\na=setup:actpass\na=mid:1\na=bundle-only\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\na=sendonly\na=msid:- d46fb922-d52a-4e9c-aa87-444eadc1521b\na=rtcp-mux\na=rtcp-rsize\na=rtpmap:96 VP8/90000\na=rtcp-fb:96 ccm fir\na=rtcp-fb:96 nack\na=rtcp-fb:96 nack pli\na=rtpmap:97 rtx/90000\na=fmtp:97 apt=96"
const testAnswer = "v=0\no=- 1657793490019 1 IN IP4 127.0.0.1\ns=-\nt=0 0\na=group:BUNDLE 0 1\na=extmap-allow-mixed\na=ice-lite\na=msid-semantic: WMS *\nm=audio 9 UDP/TLS/RTP/SAVPF 111\nc=IN IP4 0.0.0.0\na=rtcp:9 IN IP4 0.0.0.0\na=ice-ufrag:38sdf4fdsf54\na=ice-pwd:2e13dde17c1cb009202f627fab90cbec358d766d049c9697\na=fingerprint:sha-256 F7:EB:F3:3E:AC:D2:EA:A7:C1:EC:79:D9:B3:8A:35:DA:70:86:4F:46:D9:2D:CC:D0:BC:81:9F:67:EF:34:2E:BD\na=candidate:1 1 UDP 2130706431 198.51.100.1 39132 typ host\na=setup:passive\na=mid:0\na=bundle-only\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\na=recvonly\na=rtcp-mux\na=rtcp-rsize\na=rtpmap:111 opus/48000/2\na=fmtp:111 minptime=10;useinbandfec=1\nm=video 9 UDP/TLS/RTP/SAVPF 96 97\nc=IN IP4 0.0.0.0\na=rtcp:9 IN IP4 0.0.0.0\na=ice-ufrag:38sdf4fdsf54\na=ice-pwd:2e13dde17c1cb009202f627fab90cbec358d766d049c9697\na=fingerprint:sha-256 F7:EB:F3:3E:AC:D2:EA:A7:C1:EC:79:D9:B3:8A:35:DA:70:86:4F:46:D9:2D:CC:D0:BC:81:9F:67:EF:34:2E:BD\na=candidate:1 1 UDP 2130706431 198.51.100.1 39132 typ host\na=setup:passive\na=mid:1\na=bundle-only\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\na=recvonly\na=rtcp-mux\na=rtcp-rsize\na=rtpmap:96 VP8/90000\na=rtcp-fb:96 ccm fir\na=rtcp-fb:96 nack\na=rtcp-fb:96 nack pli\na=rtpmap:97 rtx/90000\na=fmtp:97 apt=96"
const testAnswerETag = "38ee2e1fc076df403ff93ea9b18f97d8"