22using System . Text ;
33using ByteSync . Common . Business . Misc ;
44using ByteSync . Common . Business . Sessions . Cloud . Connections ;
5+ using ByteSync . Common . Business . Trust . Connections ;
56using ByteSync . Common . Business . Versions ;
67using ByteSync . Common . Controls . Json ;
8+ using ByteSync . Common . Business . EndPoints ;
79using ByteSync . Functions . Http ;
810using ByteSync . Functions . UnitTests . TestHelpers ;
911using ByteSync . ServerCommon . Business . Auth ;
@@ -30,6 +32,159 @@ private static FunctionContext BuildFunctionContextWithClient()
3032 return mockContext . Object ;
3133 }
3234
35+ private static async Task WriteBodyAsync < T > ( FakeHttpRequestData request , T body )
36+ {
37+ var json = JsonHelper . Serialize ( body ) ;
38+ var bytes = Encoding . UTF8 . GetBytes ( json ) ;
39+ request . Body . SetLength ( 0 ) ;
40+ await request . Body . WriteAsync ( bytes , 0 , bytes . Length ) ;
41+ request . Body . Position = 0 ;
42+ }
43+
44+ [ Test ]
45+ public async Task StartTrustCheck_ForwardsRequest_AndReturnsOk ( )
46+ {
47+ var mediatorMock = new Mock < IMediator > ( ) ;
48+ StartTrustCheckRequest ? captured = null ;
49+ mediatorMock
50+ . Setup ( m => m . Send ( It . IsAny < StartTrustCheckRequest > ( ) , It . IsAny < CancellationToken > ( ) ) )
51+ . Callback < object , CancellationToken > ( ( r , _ ) => captured = ( StartTrustCheckRequest ) r )
52+ . ReturnsAsync ( new StartTrustCheckResult { IsOK = true } ) ;
53+
54+ var function = new TrustFunction ( mediatorMock . Object ) ;
55+ var context = BuildFunctionContextWithClient ( ) ;
56+ var request = new FakeHttpRequestData ( context ) ;
57+
58+ var parameters = new TrustCheckParameters { SessionId = "S1" , MembersInstanceIdsToCheck = [ "VI" ] } ;
59+ await WriteBodyAsync ( request , parameters ) ;
60+
61+ var response = await function . StartTrustCheck ( request , context ) ;
62+
63+ response . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
64+ captured . Should ( ) . NotBeNull ( ) ;
65+ captured ! . Parameters . SessionId . Should ( ) . Be ( "S1" ) ;
66+ }
67+
68+ [ Test ]
69+ public async Task GiveMemberPublicKeyCheckData_ForwardsRequest_AndReturnsOk ( )
70+ {
71+ var mediatorMock = new Mock < IMediator > ( ) ;
72+ GiveMemberPublicKeyCheckDataRequest ? captured = null ;
73+ mediatorMock
74+ . Setup ( m => m . Send ( It . IsAny < GiveMemberPublicKeyCheckDataRequest > ( ) , It . IsAny < CancellationToken > ( ) ) )
75+ . Callback < object , CancellationToken > ( ( r , _ ) => captured = ( GiveMemberPublicKeyCheckDataRequest ) r )
76+ . Returns ( Task . CompletedTask ) ;
77+
78+ var function = new TrustFunction ( mediatorMock . Object ) ;
79+ var context = BuildFunctionContextWithClient ( ) ;
80+ var request = new FakeHttpRequestData ( context ) ;
81+
82+ var parameters = new GiveMemberPublicKeyCheckDataParameters { SessionId = "S1" , PublicKeyCheckData = new PublicKeyCheckData ( ) } ;
83+ await WriteBodyAsync ( request , parameters ) ;
84+
85+ var response = await function . GiveMemberPublicKeyCheckData ( request , context ) ;
86+
87+ response . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
88+ captured . Should ( ) . NotBeNull ( ) ;
89+ captured ! . Parameters . SessionId . Should ( ) . Be ( "S1" ) ;
90+ }
91+
92+ [ Test ]
93+ public async Task SendDigitalSignatures_ForwardsRequest_AndReturnsOk ( )
94+ {
95+ var mediatorMock = new Mock < IMediator > ( ) ;
96+ SendDigitalSignaturesRequest ? captured = null ;
97+ mediatorMock
98+ . Setup ( m => m . Send ( It . IsAny < SendDigitalSignaturesRequest > ( ) , It . IsAny < CancellationToken > ( ) ) )
99+ . Callback < object , CancellationToken > ( ( r , _ ) => captured = ( SendDigitalSignaturesRequest ) r )
100+ . Returns ( Task . CompletedTask ) ;
101+
102+ var function = new TrustFunction ( mediatorMock . Object ) ;
103+ var context = BuildFunctionContextWithClient ( ) ;
104+ var request = new FakeHttpRequestData ( context ) ;
105+
106+ var parameters = new SendDigitalSignaturesParameters { DataId = "S1" , DigitalSignatureCheckInfos = new List < DigitalSignatureCheckInfo > ( ) } ;
107+ await WriteBodyAsync ( request , parameters ) ;
108+
109+ var response = await function . SendDigitalSignatures ( request , context ) ;
110+
111+ response . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
112+ captured . Should ( ) . NotBeNull ( ) ;
113+ captured ! . Parameters . DataId . Should ( ) . Be ( "S1" ) ;
114+ }
115+
116+ [ Test ]
117+ public async Task SetAuthChecked_ForwardsRequest_AndReturnsOk ( )
118+ {
119+ var mediatorMock = new Mock < IMediator > ( ) ;
120+ SetAuthCheckedRequest ? captured = null ;
121+ mediatorMock
122+ . Setup ( m => m . Send ( It . IsAny < SetAuthCheckedRequest > ( ) , It . IsAny < CancellationToken > ( ) ) )
123+ . Callback < object , CancellationToken > ( ( r , _ ) => captured = ( SetAuthCheckedRequest ) r )
124+ . Returns ( Task . CompletedTask ) ;
125+
126+ var function = new TrustFunction ( mediatorMock . Object ) ;
127+ var context = BuildFunctionContextWithClient ( ) ;
128+ var request = new FakeHttpRequestData ( context ) ;
129+
130+ var parameters = new SetAuthCheckedParameters { SessionId = "S1" } ;
131+ await WriteBodyAsync ( request , parameters ) ;
132+
133+ var response = await function . SetAuthChecked ( request , context ) ;
134+
135+ response . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
136+ captured . Should ( ) . NotBeNull ( ) ;
137+ captured ! . Parameters . SessionId . Should ( ) . Be ( "S1" ) ;
138+ }
139+
140+ [ Test ]
141+ public async Task RequestTrustPublicKey_ForwardsRequest_AndReturnsOk ( )
142+ {
143+ var mediatorMock = new Mock < IMediator > ( ) ;
144+ RequestTrustPublicKeyRequest ? captured = null ;
145+ mediatorMock
146+ . Setup ( m => m . Send ( It . IsAny < RequestTrustPublicKeyRequest > ( ) , It . IsAny < CancellationToken > ( ) ) )
147+ . Callback < object , CancellationToken > ( ( r , _ ) => captured = ( RequestTrustPublicKeyRequest ) r )
148+ . Returns ( Task . CompletedTask ) ;
149+
150+ var function = new TrustFunction ( mediatorMock . Object ) ;
151+ var context = BuildFunctionContextWithClient ( ) ;
152+ var request = new FakeHttpRequestData ( context ) ;
153+
154+ var parameters = new RequestTrustProcessParameters { SessionId = "S1" } ;
155+ await WriteBodyAsync ( request , parameters ) ;
156+
157+ var response = await function . RequestTrustPublicKey ( request , context ) ;
158+
159+ response . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
160+ captured . Should ( ) . NotBeNull ( ) ;
161+ captured ! . Parameters . SessionId . Should ( ) . Be ( "S1" ) ;
162+ }
163+
164+ [ Test ]
165+ public async Task InformPublicKeyValidationIsFinished_ForwardsRequest_AndReturnsOk ( )
166+ {
167+ var mediatorMock = new Mock < IMediator > ( ) ;
168+ InformPublicKeyValidationIsFinishedRequest ? captured = null ;
169+ mediatorMock
170+ . Setup ( m => m . Send ( It . IsAny < InformPublicKeyValidationIsFinishedRequest > ( ) , It . IsAny < CancellationToken > ( ) ) )
171+ . Callback < object , CancellationToken > ( ( r , _ ) => captured = ( InformPublicKeyValidationIsFinishedRequest ) r )
172+ . Returns ( Task . CompletedTask ) ;
173+
174+ var function = new TrustFunction ( mediatorMock . Object ) ;
175+ var context = BuildFunctionContextWithClient ( ) ;
176+ var request = new FakeHttpRequestData ( context ) ;
177+
178+ var parameters = new PublicKeyValidationParameters { SessionId = "S1" } ;
179+ await WriteBodyAsync ( request , parameters ) ;
180+
181+ var response = await function . InformPublicKeyValidationIsFinished ( request , context ) ;
182+
183+ response . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
184+ captured . Should ( ) . NotBeNull ( ) ;
185+ captured ! . Parameters . SessionId . Should ( ) . Be ( "S1" ) ;
186+ }
187+
33188 [ Test ]
34189 public async Task InformProtocolVersionIncompatible_ForwardsRequest_AndReturnsOk ( )
35190 {
@@ -42,23 +197,17 @@ public async Task InformProtocolVersionIncompatible_ForwardsRequest_AndReturnsOk
42197
43198 var function = new TrustFunction ( mediatorMock . Object ) ;
44199 var context = BuildFunctionContextWithClient ( ) ;
45-
46200 var request = new FakeHttpRequestData ( context ) ;
47- var body = new InformProtocolVersionIncompatibleParameters
201+
202+ var parameters = new InformProtocolVersionIncompatibleParameters
48203 {
49204 SessionId = "test-session-id" ,
50205 MemberClientInstanceId = "member-instance-id" ,
51206 JoinerClientInstanceId = "joiner-instance-id" ,
52207 MemberProtocolVersion = ProtocolVersion . CURRENT ,
53208 JoinerProtocolVersion = 0
54209 } ;
55- var json = JsonHelper . Serialize ( body ) ;
56- await using ( var writer = new StreamWriter ( request . Body , Encoding . UTF8 , 1024 , leaveOpen : true ) )
57- {
58- await writer . WriteAsync ( json ) ;
59- }
60-
61- request . Body . Position = 0 ;
210+ await WriteBodyAsync ( request , parameters ) ;
62211
63212 var response = await function . InformProtocolVersionIncompatible ( request , context ) ;
64213
0 commit comments