選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 

201 行
9.8 KiB

  1. using JT808.DotNetty.Dtos;
  2. using JT808.Protocol;
  3. using JT808.Protocol.Extensions;
  4. using Newtonsoft.Json;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Net;
  9. using System.Net.Http;
  10. using System.Text;
  11. using System.Threading;
  12. using Xunit;
  13. namespace JT808.DotNetty.Test
  14. {
  15. public class JT808WebAPIServiceTest: TestBase
  16. {
  17. private IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6565);
  18. public JT808SimpleTcpClient SimpleTcpClient;
  19. private HttpClient httpClient;
  20. private const string Url = "http://127.0.0.1:828/jt808api";
  21. private const string sessionRoutePrefix = "Session";
  22. private const int length = 10;
  23. public JT808WebAPIServiceTest()
  24. {
  25. SimpleTcpClient = new JT808SimpleTcpClient(endPoint);
  26. httpClient = new HttpClient();
  27. for (var i = 1; i <= length; i++)
  28. {
  29. // 心跳会话包
  30. JT808Package jT808Package1 = JT808.Protocol.Enums.JT808MsgId.终端心跳.Create($"{i.ToString()}");
  31. SimpleTcpClient.WriteAsync(JT808Serializer.Serialize(jT808Package1));
  32. }
  33. Thread.Sleep(300);
  34. }
  35. [Fact]
  36. public void GetRealLinkCountTest()
  37. {
  38. var result = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRealLinkCount").Result;
  39. string content = result.Content.ReadAsStringAsync().Result;
  40. JT808ResultDto<int> jt808Result = JsonConvert.DeserializeObject<JT808ResultDto<int>>(content);
  41. Assert.Equal(200, jt808Result.Code);
  42. Assert.Equal(1,jt808Result.Data);
  43. }
  44. [Fact]
  45. public void GetRelevanceLinkCountTest()
  46. {
  47. var result = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRelevanceLinkCount").Result;
  48. string content = result.Content.ReadAsStringAsync().Result;
  49. JT808ResultDto<int> jt808Result = JsonConvert.DeserializeObject<JT808ResultDto<int>>(content);
  50. Assert.Equal(200, jt808Result.Code);
  51. Assert.Equal(length, jt808Result.Data);
  52. }
  53. [Fact]
  54. public void GetRealAllTest()
  55. {
  56. var result = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRealAll").Result;
  57. string content = result.Content.ReadAsStringAsync().Result;
  58. JT808ResultDto<IEnumerable<JT808SessionInfoDto>> jt808Result = JsonConvert.DeserializeObject<JT808ResultDto<IEnumerable<JT808SessionInfoDto>>>(content);
  59. Assert.Equal(200, jt808Result.Code);
  60. Assert.Single(jt808Result.Data);
  61. }
  62. [Fact]
  63. public void GetRelevanceAllTest()
  64. {
  65. var result = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRelevanceAll").Result;
  66. string content = result.Content.ReadAsStringAsync().Result;
  67. JT808ResultDto<IEnumerable<JT808SessionInfoDto>> jt808Result = JsonConvert.DeserializeObject<JT808ResultDto<IEnumerable<JT808SessionInfoDto>>>(content);
  68. Assert.Equal(200, jt808Result.Code);
  69. Assert.Equal(length,jt808Result.Data.Count());
  70. }
  71. [Fact]
  72. public void RemoveByChannelIdTest()
  73. {
  74. var result1 = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRelevanceLinkCount").Result;
  75. string content1 = result1.Content.ReadAsStringAsync().Result;
  76. JT808ResultDto<int> jt808Result1 = JsonConvert.DeserializeObject<JT808ResultDto<int>>(content1);
  77. Assert.Equal(200, jt808Result1.Code);
  78. Assert.Equal(length, jt808Result1.Data);
  79. // 心跳会话包
  80. JT808Package jT808Package1 = JT808.Protocol.Enums.JT808MsgId.终端心跳.Create("99");
  81. SimpleTcpClient.WriteAsync(JT808Serializer.Serialize(jT808Package1));
  82. var result2 = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRelevanceLinkCount").Result;
  83. string content2 = result2.Content.ReadAsStringAsync().Result;
  84. JT808ResultDto<int> jt808Result2 = JsonConvert.DeserializeObject<JT808ResultDto<int>>(content2);
  85. Assert.Equal(200, jt808Result2.Code);
  86. Assert.Equal(length + 1, jt808Result2.Data);
  87. var result3 = httpClient.PostAsync($"{Url}/{sessionRoutePrefix}/GetByTerminalPhoneNo", new StringContent("99")).Result;
  88. string content3 = result3.Content.ReadAsStringAsync().Result;
  89. JT808ResultDto<JT808SessionInfoDto> jt808Result3 = JsonConvert.DeserializeObject<JT808ResultDto<JT808SessionInfoDto>>(content3);
  90. Assert.Equal(200, jt808Result3.Code);
  91. Assert.Equal("99", jt808Result3.Data.TerminalPhoneNo);
  92. var result4 = httpClient.PostAsync($"{Url}/{sessionRoutePrefix}/RemoveByChannelId", new StringContent(jt808Result3.Data.ChannelId)).Result;
  93. string content4 = result4.Content.ReadAsStringAsync().Result;
  94. JT808ResultDto<bool> jt808Result4= JsonConvert.DeserializeObject<JT808ResultDto<bool>>(content4);
  95. Assert.Equal(200, jt808Result4.Code);
  96. Assert.True(jt808Result4.Data);
  97. var result5 = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRelevanceLinkCount").Result;
  98. string content5 = result5.Content.ReadAsStringAsync().Result;
  99. JT808ResultDto<int> jt808Result5 = JsonConvert.DeserializeObject<JT808ResultDto<int>>(content5);
  100. Assert.Equal(200, jt808Result5.Code);
  101. Assert.Equal(length, jt808Result5.Data);
  102. }
  103. [Fact]
  104. public void RemoveByTerminalPhoneNoTest()
  105. {
  106. var result1 = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRelevanceLinkCount").Result;
  107. string content1 = result1.Content.ReadAsStringAsync().Result;
  108. JT808ResultDto<int> jt808Result1 = JsonConvert.DeserializeObject<JT808ResultDto<int>>(content1);
  109. Assert.Equal(200, jt808Result1.Code);
  110. Assert.Equal(length, jt808Result1.Data);
  111. // 心跳会话包
  112. JT808Package jT808Package1 = JT808.Protocol.Enums.JT808MsgId.终端心跳.Create("999");
  113. SimpleTcpClient.WriteAsync(JT808Serializer.Serialize(jT808Package1));
  114. var result2 = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRelevanceLinkCount").Result;
  115. string content2 = result2.Content.ReadAsStringAsync().Result;
  116. JT808ResultDto<int> jt808Result2 = JsonConvert.DeserializeObject<JT808ResultDto<int>>(content2);
  117. Assert.Equal(200, jt808Result2.Code);
  118. Assert.Equal(length + 1, jt808Result2.Data);
  119. var result3 = httpClient.PostAsync($"{Url}/{sessionRoutePrefix}/GetByTerminalPhoneNo", new StringContent("999")).Result;
  120. string content3 = result3.Content.ReadAsStringAsync().Result;
  121. JT808ResultDto<JT808SessionInfoDto> jt808Result3 = JsonConvert.DeserializeObject<JT808ResultDto<JT808SessionInfoDto>>(content3);
  122. Assert.Equal(200, jt808Result3.Code);
  123. Assert.Equal("999", jt808Result3.Data.TerminalPhoneNo);
  124. var result4 = httpClient.PostAsync($"{Url}/{sessionRoutePrefix}/RemoveByTerminalPhoneNo", new StringContent("999")).Result;
  125. string content4 = result4.Content.ReadAsStringAsync().Result;
  126. JT808ResultDto<bool> jt808Result4 = JsonConvert.DeserializeObject<JT808ResultDto<bool>>(content4);
  127. Assert.Equal(200, jt808Result4.Code);
  128. Assert.True(jt808Result4.Data);
  129. var result5 = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRelevanceLinkCount").Result;
  130. string content5 = result5.Content.ReadAsStringAsync().Result;
  131. JT808ResultDto<int> jt808Result5 = JsonConvert.DeserializeObject<JT808ResultDto<int>>(content5);
  132. Assert.Equal(200, jt808Result5.Code);
  133. Assert.Equal(length, jt808Result5.Data);
  134. }
  135. [Fact]
  136. public void GetByChannelIdTest()
  137. {
  138. var result = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRealAll").Result;
  139. string content = result.Content.ReadAsStringAsync().Result;
  140. JT808ResultDto<IEnumerable<JT808SessionInfoDto>> jt808Result1 = JsonConvert.DeserializeObject<JT808ResultDto<IEnumerable<JT808SessionInfoDto>>>(content);
  141. var sessionInfo1 = jt808Result1.Data.FirstOrDefault();
  142. var result2 = httpClient.PostAsync($"{Url}/{sessionRoutePrefix}/GetByChannelId",new StringContent(sessionInfo1.ChannelId)).Result;
  143. string content2 = result2.Content.ReadAsStringAsync().Result;
  144. JT808ResultDto<JT808SessionInfoDto> jt808Result2 = JsonConvert.DeserializeObject<JT808ResultDto<JT808SessionInfoDto>>(content2);
  145. Assert.Equal(200, jt808Result2.Code);
  146. Assert.Equal(sessionInfo1.ChannelId, jt808Result2.Data.ChannelId);
  147. }
  148. [Fact]
  149. public void GetByTerminalPhoneNoTest()
  150. {
  151. var result = httpClient.GetAsync($"{Url}/{sessionRoutePrefix}/GetRelevanceAll").Result;
  152. string content = result.Content.ReadAsStringAsync().Result;
  153. JT808ResultDto<IEnumerable<JT808SessionInfoDto>> jt808Result1 = JsonConvert.DeserializeObject<JT808ResultDto<IEnumerable<JT808SessionInfoDto>>>(content);
  154. var sessionInfo1 = jt808Result1.Data.FirstOrDefault();
  155. var result2 = httpClient.PostAsync($"{Url}/{sessionRoutePrefix}/GetByTerminalPhoneNo", new StringContent(sessionInfo1.TerminalPhoneNo)).Result;
  156. string content2 = result2.Content.ReadAsStringAsync().Result;
  157. JT808ResultDto<JT808SessionInfoDto> jt808Result2 = JsonConvert.DeserializeObject<JT808ResultDto<JT808SessionInfoDto>>(content2);
  158. Assert.Equal(200, jt808Result2.Code);
  159. Assert.Equal(sessionInfo1.TerminalPhoneNo, jt808Result2.Data.TerminalPhoneNo);
  160. }
  161. public override void Dispose()
  162. {
  163. base.Dispose();
  164. SimpleTcpClient.Down();
  165. }
  166. }
  167. }