Skip to content

Commit b5352d2

Browse files
committed
test: add tests
1 parent 871ad36 commit b5352d2

File tree

2 files changed

+232
-1
lines changed

2 files changed

+232
-1
lines changed

src/ByteSync.ServerCommon/Business/Sessions/SessionMemberData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public SessionMemberData(string clientInstanceId, string clientId, PublicKeyInfo
4848
public DateTimeOffset JoinedSessionOn { get; set; }
4949

5050
/// <summary>
51-
/// InstanceId du client qui doit valider le SessionMemberData
51+
/// InstanceId of the client that must validate the SessionMemberData
5252
/// </summary>
5353
public string ValidatorInstanceId { get; set; }
5454

Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
1+
using ByteSync.Common.Business.EndPoints;
2+
using ByteSync.Common.Business.Sessions;
3+
using ByteSync.ServerCommon.Business.Auth;
4+
using ByteSync.ServerCommon.Business.Sessions;
5+
using FluentAssertions;
6+
7+
namespace ByteSync.ServerCommon.Tests.Business;
8+
9+
[TestFixture]
10+
public class SessionMemberDataTests
11+
{
12+
private SessionMemberData _sessionMemberData;
13+
private CloudSessionData _cloudSessionData;
14+
private Client _client;
15+
private PublicKeyInfo _publicKeyInfo;
16+
private string _profileClientId;
17+
18+
[SetUp]
19+
public void Setup()
20+
{
21+
_cloudSessionData = new CloudSessionData { SessionId = "session-123" };
22+
_client = new Client { ClientInstanceId = "client-123", ClientId = "id-123" };
23+
_publicKeyInfo = new PublicKeyInfo { ClientId = "public-key-data" };
24+
_profileClientId = "profile-123";
25+
_sessionMemberData = new SessionMemberData();
26+
}
27+
28+
[Test]
29+
public void DefaultConstructor_ShouldInitializeProperties()
30+
{
31+
// Assert
32+
_sessionMemberData.JoinedSessionOn.Should().BeCloseTo(DateTimeOffset.UtcNow, TimeSpan.FromSeconds(1));
33+
_sessionMemberData.AuthCheckClientInstanceIds.Should().NotBeNull();
34+
_sessionMemberData.AuthCheckClientInstanceIds.Should().BeEmpty();
35+
}
36+
37+
[Test]
38+
public void ParameterizedConstructor_WithClient_ShouldInitializeProperties()
39+
{
40+
// Act
41+
var memberData = new SessionMemberData(_client, _publicKeyInfo, _profileClientId, _cloudSessionData);
42+
43+
// Assert
44+
memberData.ClientInstanceId.Should().Be(_client.ClientInstanceId);
45+
memberData.ClientId.Should().Be(_client.ClientId);
46+
memberData.PublicKeyInfo.Should().Be(_publicKeyInfo);
47+
memberData.ProfileClientId.Should().Be(_profileClientId);
48+
memberData.CloudSessionData.Should().Be(_cloudSessionData);
49+
memberData.JoinedSessionOn.Should().BeCloseTo(DateTimeOffset.UtcNow, TimeSpan.FromSeconds(1));
50+
memberData.AuthCheckClientInstanceIds.Should().NotBeNull();
51+
memberData.AuthCheckClientInstanceIds.Should().BeEmpty();
52+
}
53+
54+
[Test]
55+
public void ParameterizedConstructor_WithStrings_ShouldInitializeProperties()
56+
{
57+
// Act
58+
var memberData = new SessionMemberData(
59+
"client-instance-456",
60+
"client-id-456",
61+
_publicKeyInfo,
62+
_profileClientId,
63+
_cloudSessionData);
64+
65+
// Assert
66+
memberData.ClientInstanceId.Should().Be("client-instance-456");
67+
memberData.ClientId.Should().Be("client-id-456");
68+
memberData.PublicKeyInfo.Should().Be(_publicKeyInfo);
69+
memberData.ProfileClientId.Should().Be(_profileClientId);
70+
memberData.CloudSessionData.Should().Be(_cloudSessionData);
71+
memberData.JoinedSessionOn.Should().BeCloseTo(DateTimeOffset.UtcNow, TimeSpan.FromSeconds(1));
72+
memberData.AuthCheckClientInstanceIds.Should().NotBeNull();
73+
memberData.AuthCheckClientInstanceIds.Should().BeEmpty();
74+
}
75+
76+
[Test]
77+
public void ParameterizedConstructor_WithEncryptedData_ShouldInitializeEncryptedData()
78+
{
79+
// Arrange
80+
var encryptedData = new EncryptedSessionMemberPrivateData();
81+
82+
// Act
83+
var memberData = new SessionMemberData(
84+
_client,
85+
_publicKeyInfo,
86+
_profileClientId,
87+
_cloudSessionData,
88+
encryptedData);
89+
90+
// Assert
91+
memberData.EncryptedPrivateData.Should().BeSameAs(encryptedData);
92+
}
93+
94+
[Test]
95+
public void PositionInList_WhenMemberExists_ShouldReturnCorrectIndex()
96+
{
97+
// Arrange
98+
_sessionMemberData.ClientInstanceId = "client-456";
99+
_sessionMemberData.CloudSessionData = _cloudSessionData;
100+
101+
var firstMember = new SessionMemberData { ClientInstanceId = "client-123" };
102+
var secondMember = _sessionMemberData;
103+
var thirdMember = new SessionMemberData { ClientInstanceId = "client-789" };
104+
105+
_cloudSessionData.SessionMembers.Add(firstMember);
106+
_cloudSessionData.SessionMembers.Add(secondMember);
107+
_cloudSessionData.SessionMembers.Add(thirdMember);
108+
109+
// Act
110+
var position = _sessionMemberData.PositionInList;
111+
112+
// Assert
113+
position.Should().Be(1);
114+
}
115+
116+
[Test]
117+
public void PositionInList_WhenMemberNotInList_ShouldReturnMinusOne()
118+
{
119+
// Arrange
120+
_sessionMemberData.ClientInstanceId = "not-in-list";
121+
_sessionMemberData.CloudSessionData = _cloudSessionData;
122+
123+
_cloudSessionData.SessionMembers.Add(new SessionMemberData { ClientInstanceId = "client-123" });
124+
_cloudSessionData.SessionMembers.Add(new SessionMemberData { ClientInstanceId = "client-456" });
125+
126+
// Act
127+
var position = _sessionMemberData.PositionInList;
128+
129+
// Assert
130+
position.Should().Be(-1);
131+
}
132+
133+
[Test]
134+
public void Equals_WithSameClientInstanceId_ShouldReturnTrue()
135+
{
136+
// Arrange
137+
var firstMember = new SessionMemberData { ClientInstanceId = "same-id" };
138+
var secondMember = new SessionMemberData { ClientInstanceId = "same-id" };
139+
140+
// Act
141+
bool result = firstMember.Equals(secondMember);
142+
143+
// Assert
144+
result.Should().BeTrue();
145+
}
146+
147+
[Test]
148+
public void Equals_WithDifferentClientInstanceId_ShouldReturnFalse()
149+
{
150+
// Arrange
151+
var firstMember = new SessionMemberData { ClientInstanceId = "first-id" };
152+
var secondMember = new SessionMemberData { ClientInstanceId = "second-id" };
153+
154+
// Act
155+
bool result = firstMember.Equals(secondMember);
156+
157+
// Assert
158+
result.Should().BeFalse();
159+
}
160+
161+
[Test]
162+
public void Equals_WithNonSessionMemberDataObject_ShouldReturnFalse()
163+
{
164+
// Arrange
165+
var memberData = new SessionMemberData { ClientInstanceId = "member-id" };
166+
var otherObject = new object();
167+
168+
// Act
169+
bool result = memberData.Equals(otherObject);
170+
171+
// Assert
172+
result.Should().BeFalse();
173+
}
174+
175+
[Test]
176+
public void GetHashCode_WithSameClientInstanceId_ShouldReturnSameValue()
177+
{
178+
// Arrange
179+
var clientInstanceId = "same-id";
180+
var firstMember = new SessionMemberData { ClientInstanceId = clientInstanceId };
181+
var secondMember = new SessionMemberData { ClientInstanceId = clientInstanceId };
182+
183+
// Act
184+
var firstHash = firstMember.GetHashCode();
185+
var secondHash = secondMember.GetHashCode();
186+
187+
// Assert
188+
firstHash.Should().Be(secondHash);
189+
firstHash.Should().Be(clientInstanceId.GetHashCode());
190+
}
191+
192+
[Test]
193+
public void IsAuthCheckedFor_WhenInstanceIdInAuthCheckList_ShouldReturnTrue()
194+
{
195+
// Arrange
196+
_sessionMemberData.AuthCheckClientInstanceIds = new List<string> { "auth-checked-id" };
197+
198+
// Act
199+
bool result = _sessionMemberData.IsAuthCheckedFor("auth-checked-id");
200+
201+
// Assert
202+
result.Should().BeTrue();
203+
}
204+
205+
[Test]
206+
public void IsAuthCheckedFor_WhenInstanceIdStartsWithClientId_ShouldReturnTrue()
207+
{
208+
// Arrange
209+
_sessionMemberData.ClientId = "client-prefix";
210+
211+
// Act
212+
bool result = _sessionMemberData.IsAuthCheckedFor("client-prefix-suffix");
213+
214+
// Assert
215+
result.Should().BeTrue();
216+
}
217+
218+
[Test]
219+
public void IsAuthCheckedFor_WhenInstanceIdNotChecked_ShouldReturnFalse()
220+
{
221+
// Arrange
222+
_sessionMemberData.ClientId = "client-id";
223+
_sessionMemberData.AuthCheckClientInstanceIds = new List<string> { "other-id" };
224+
225+
// Act
226+
bool result = _sessionMemberData.IsAuthCheckedFor("unchecked-id");
227+
228+
// Assert
229+
result.Should().BeFalse();
230+
}
231+
}

0 commit comments

Comments
 (0)