using System; using System.Reflection; using DotNetCore.CAP.Diagnostics; using DotNetCore.CAP.Infrastructure; using Newtonsoft.Json.Linq; using Xunit; namespace DotNetCore.CAP.Test { public class HelperTest { [Fact] public void ToTimestampTest() { //Arrange var time = DateTime.Parse("2018-01-01 00:00:00"); //Act var result = Helper.ToTimestamp(time); //Assert Assert.Equal(1514764800, result); } [Fact] public void FromTimestampTest() { //Arrange var time = DateTime.Parse("2018-01-01 00:00:00"); //Act var result = Helper.FromTimestamp(1514764800); //Assert Assert.Equal(time, result); } [Fact] public void IsControllerTest() { //Arrange var typeInfo = typeof(HomeController).GetTypeInfo(); //Act var result = Helper.IsController(typeInfo); //Assert Assert.True(result); } [Theory] [InlineData(typeof(string))] [InlineData(typeof(decimal))] [InlineData(typeof(DateTime))] [InlineData(typeof(DateTimeOffset))] [InlineData(typeof(Guid))] [InlineData(typeof(TimeSpan))] [InlineData(typeof(Uri))] public void IsSimpleTypeTest(Type type) { //Act var result = Helper.IsComplexType(type); //Assert Assert.False(result); } [Theory] [InlineData(typeof(HomeController))] [InlineData(typeof(Exception))] [InlineData(typeof(Person))] public void IsComplexTypeTest(Type type) { //Act var result = Helper.IsComplexType(type); //Assert Assert.True(result); } [Fact] public void AddExceptionPropertyTest() { //Arrange var json = "{}"; var exception = new Exception("Test Exception Message") { Source = "Test Source", InnerException = { } }; var expected = new { ExceptionMessage = new { Source = "Test Source", Message = "Test Exception Message", InnerMessage = new { } } }; //Act var result = Helper.AddExceptionProperty(json, exception); //Assert var jObj = JObject.Parse(result); Assert.Equal(jObj["ExceptionMessage"]["Source"].Value(), expected.ExceptionMessage.Source); Assert.Equal(jObj["ExceptionMessage"]["Message"].Value(), expected.ExceptionMessage.Message); } [Theory] [InlineData("10.0.0.1")] [InlineData("172.16.0.1")] [InlineData("192.168.1.1")] public void IsInnerIPTest(string ipAddress) { Assert.True(Helper.IsInnerIP(ipAddress)); } [Fact] public void AddTracingHeaderPropertyTest() { //Arrange var json = "{}"; var header = new TracingHeaders { { "key", "value" } }; //Act var result = Helper.AddTracingHeaderProperty(json, header); //Assert var expected = "{\"TracingHeaders\":{\"key\":\"value\"}}"; Assert.Equal(expected, result); } [Fact] public void TryExtractTracingHeadersTest() { //Arrange var json = "{\"TracingHeaders\":{\"key\":\"value\"}}"; TracingHeaders header = null; string removedHeadersJson = ""; //Act var result = Helper.TryExtractTracingHeaders(json, out header, out removedHeadersJson); //Assert Assert.True(result); Assert.NotNull(header); Assert.Single(header); Assert.Equal("{}", removedHeadersJson); } } }