Skip to content

Commit 7e0407d

Browse files
Adding Metadata Validaion and unit tests
1 parent 4f161f8 commit 7e0407d

File tree

3 files changed

+105
-0
lines changed

3 files changed

+105
-0
lines changed

src/SocketLabs/InjectionApi/Core/SendValidator.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ internal virtual SendResult ValidateIMessageBase(IMessageBase message)
7878
if (message.CustomHeaders != null && message.CustomHeaders.Any())
7979
if (!HasValidCustomHeaders(message.CustomHeaders)) return SendResult.MessageValidationInvalidCustomHeaders;
8080

81+
if (message.Metadata != null && message.Metadata.Any())
82+
if (!HasValidMetadata(message.Metadata)) return SendResult.MessageValidationInvalidMetadata;
83+
8184
return SendResult.Success;
8285
}
8386

@@ -334,5 +337,16 @@ internal virtual bool HasValidCustomHeaders(IList<ICustomHeader> customHeaders)
334337
var result = customHeaders?.Where(item => !item.IsValid);
335338
return result == null || !result.Any();
336339
}
340+
341+
/// <summary>
342+
/// Check if <c>IMetadata</c> in List are valid
343+
/// </summary>
344+
/// <param name="metadata"><c><![CDATA[ IList<IMetadata> ]]></c> to validate</param>
345+
/// <returns><c>bool</c> result</returns>
346+
internal virtual bool HasValidMetadata(IList<IMetadata> metadata)
347+
{
348+
var result = metadata?.Where(item => !item.IsValid);
349+
return result == null || !result.Any();
350+
}
337351
}
338352
}

src/SocketLabs/InjectionApi/SendResult.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,5 +189,10 @@ public enum SendResult
189189
/// Invalid custom headers found
190190
/// </summary>
191191
MessageValidationInvalidCustomHeaders,
192+
193+
/// <summary>
194+
/// Invalid metadata found
195+
/// </summary>
196+
MessageValidationInvalidMetadata,
192197
}
193198
}

test/SocketLabs.Tests/Validation/SendValidatorTest.cs

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -912,6 +912,92 @@ public void HasValidCustomHeaders_ReturnsTrue_WhenDictionaryIsValid()
912912

913913
#endregion
914914

915+
#region HasValidMetadataHeaders
916+
917+
[TestMethod]
918+
public void HasValidMetadataHeaders_ReturnsFalse_WhenKeyAndValueAreEmpty()
919+
{
920+
//Arrange
921+
var customHeaders = new List<IMetadata>
922+
{
923+
new Metadata(string.Empty, string.Empty)
924+
};
925+
var validator = new SendValidator();
926+
927+
//Act
928+
var actual = validator.HasValidMetadata(customHeaders);
929+
930+
//Assert
931+
Assert.IsFalse(actual);
932+
}
933+
934+
[TestMethod]
935+
public void HasValidMetadataHeaders_ReturnsFalse_WhenKeyIsNotEmptyAndValueIsEmpty()
936+
{
937+
//Arrange
938+
var customHeaders = new List<IMetadata>
939+
{
940+
new Metadata(RandomHelper.RandomString(), string.Empty)
941+
};
942+
var validator = new SendValidator();
943+
944+
//Act
945+
var actual = validator.HasValidMetadata(customHeaders);
946+
947+
//Assert
948+
Assert.IsFalse(actual);
949+
}
950+
951+
[TestMethod]
952+
public void HasValidMetadataHeaders_ReturnsFalse_WhenKeyIsEmptyAndValueIsNotEmpty()
953+
{
954+
//Arrange
955+
var customHeaders = new List<IMetadata>
956+
{
957+
new Metadata(string.Empty, RandomHelper.RandomString())
958+
};
959+
var validator = new SendValidator();
960+
961+
//Act
962+
var actual = validator.HasValidMetadata(customHeaders);
963+
964+
//Assert
965+
Assert.IsFalse(actual);
966+
}
967+
968+
969+
[TestMethod]
970+
public void HasValidMetadataHeaders_ReturnsTrue_WhenDictionaryIsNull()
971+
{
972+
//Arrange
973+
var customHeaders = new List<IMetadata>();
974+
var validator = new SendValidator();
975+
976+
//Act
977+
var actual = validator.HasValidMetadata(customHeaders);
978+
979+
//Assert
980+
Assert.IsTrue(actual);
981+
}
982+
983+
[TestMethod]
984+
public void HasValidMetadataHeaders_ReturnsTrue_WhenDictionaryIsValid()
985+
{
986+
//Arrange
987+
var customHeaders = new List<IMetadata>
988+
{
989+
new Metadata(RandomHelper.RandomString(), RandomHelper.RandomString())
990+
};
991+
var validator = new SendValidator();
992+
993+
//Act
994+
var actual = validator.HasValidMetadata(customHeaders);
995+
996+
//Assert
997+
Assert.IsTrue(actual);
998+
}
999+
1000+
#endregion
9151001

9161002
#region HasInvalidRecipients(IBasicMessage message)
9171003

0 commit comments

Comments
 (0)