Skip to content

Commit 8420665

Browse files
committed
- Remove/amend sensitive data from test cases
- Add Logger initializer to MessageParsingTests class to allow its test cases to be run independently - Add new test case to MessageParsingTests to test for the successful extraction of body payload from the EventMessage.
1 parent eee79d8 commit 8420665

File tree

2 files changed

+77
-34
lines changed

2 files changed

+77
-34
lines changed

NEventSocket.Tests/Sockets/MessageParsingTests.cs

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,33 @@
33
using System.Collections.Generic;
44
using System.Reactive.Linq;
55
using NEventSocket.FreeSwitch;
6+
using NEventSocket.Logging;
67
using NEventSocket.Sockets;
78
using NEventSocket.Tests.Properties;
89
using NEventSocket.Tests.TestSupport;
910
using NEventSocket.Util;
1011
using Xunit;
1112

13+
using Microsoft.Extensions.Logging;
14+
1215
namespace NEventSocket.Tests.Sockets
1316
{
1417
public class MessageParsingTests
1518
{
16-
[Theory, MemberData(nameof(ExampleMessages))]
19+
public MessageParsingTests()
20+
{
21+
PreventThreadPoolStarvation.Init();
22+
Logger.Configure(LoggerFactory.Create(builder =>
23+
{
24+
builder
25+
.AddFilter("Microsoft", LogLevel.Warning)
26+
.AddFilter("System", LogLevel.Warning)
27+
.AddFilter("LoggingConsoleApp.Program", LogLevel.Debug)
28+
.AddConsole();
29+
}));
30+
}
31+
32+
[Theory, MemberData(nameof(ExampleMessages))]
1733
public void it_should_parse_the_expected_messages_from_a_stream(int expectedMessageCount, string exampleInput)
1834
{
1935
int parsedMessageCount = 0;
@@ -73,7 +89,7 @@ public void it_should_extract_the_body_from_a_message(string input)
7389
BasicMessage payload = parser.ExtractMessage();
7490
Assert.Equal(ContentTypes.EventPlain, payload.ContentType);
7591
Assert.NotNull(payload.BodyText);
76-
Assert.Equal(payload.ContentLength, payload.BodyText.Length);
92+
Assert.Equal(payload.ContentLength, payload.BodyBytes.Length);
7793

7894
Console.WriteLine(payload.ToString());
7995
}
@@ -103,6 +119,33 @@ public void it_should_parse_event_messages(string input, EventName eventName)
103119
Console.WriteLine(eventMessage.ToString());
104120
}
105121

122+
[Theory]
123+
[InlineData(TestMessages.DetectedSpeech, EventName.DetectedSpeech)]
124+
[InlineData(TestMessages.DetectedSpeechEnglish, EventName.DetectedSpeech)]
125+
public void it_should_parse_event_messages_and_extract_body_payload(string input, EventName eventName)
126+
{
127+
var parser = new Parser();
128+
var rawInput = input.Replace("\r\n", "\n") + "\n\n";
129+
byte[] byteInput = Encoding.UTF8.GetBytes(rawInput);
130+
131+
foreach (byte b in byteInput)
132+
{
133+
parser.Append(b);
134+
}
135+
136+
Assert.True(parser.Completed);
137+
138+
var eventMessage = new EventMessage(parser.ExtractMessage());
139+
Assert.NotNull(eventMessage);
140+
Assert.Equal(eventName, eventMessage.EventName);
141+
142+
var contentLength = int.Parse(eventMessage.Headers[HeaderNames.ContentLength]);
143+
144+
Assert.Equal(contentLength, Encoding.UTF8.GetByteCount(eventMessage.BodyText));
145+
146+
Console.WriteLine(eventMessage.ToString());
147+
}
148+
106149
[Fact]
107150
public void it_should_parse_BackgroundJobResult_OK()
108151
{

NEventSocket.Tests/TestSupport/TestMessages.cs

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -278,14 +278,14 @@ public class TestMessages
278278
Disconnected, goodbye.
279279
See you at ClueCon! http://www.cluecon.com/";
280280

281-
public const string DetectedSpeech = @"Content-Length: 2186
281+
public const string DetectedSpeech = @"Content-Length: 2471
282282
Content-Type: text/event-plain
283283
284284
Event-Name: DETECTED_SPEECH
285285
Core-UUID: ec530c4e-484d-473e-9bd0-073863f752eb
286-
FreeSWITCH-Hostname: fsx
287-
FreeSWITCH-Switchname: fsx
288-
FreeSWITCH-IPv4: 10.1.10.135
286+
FreeSWITCH-Hostname: ser
287+
FreeSWITCH-Switchname: ser
288+
FreeSWITCH-IPv4: 192.168.1.104
289289
FreeSWITCH-IPv6: %3A%3A1
290290
Event-Date-Local: 2021-06-28%2023%3A20%3A38
291291
Event-Date-GMT: Mon,%2028%20Jun%202021%2021%3A20%3A38%20GMT
@@ -299,12 +299,12 @@ public class TestMessages
299299
Channel-State: CS_EXECUTE
300300
Channel-Call-State: ACTIVE
301301
Channel-State-Number: 4
302-
Channel-Name: sofia/internal/%2B491734064561%4062.52.128.144
302+
Channel-Name: sofia/internal/%2B491734064561%40172.16.50.128
303303
Unique-ID: f5228692-9715-4b6f-b54b-9e35be1a7335
304304
Call-Direction: inbound
305305
Presence-Call-Direction: inbound
306306
Channel-HIT-Dialplan: true
307-
Channel-Presence-ID: %2B491734064561%4062.52.128.144
307+
Channel-Presence-ID: %2B491734064561%40172.16.50.128
308308
Channel-Call-UUID: f5228692-9715-4b6f-b54b-9e35be1a7335
309309
Answer-State: answered
310310
Channel-Read-Codec-Name: G722
@@ -315,19 +315,19 @@ public class TestMessages
315315
Channel-Write-Codec-Bit-Rate: 64000
316316
Caller-Direction: inbound
317317
Caller-Logical-Direction: inbound
318-
Caller-Username: %2B491734064561
318+
Caller-Username: %2B491734000000
319319
Caller-Dialplan: XML
320-
Caller-Caller-ID-Name: %2B491734064561
321-
Caller-Caller-ID-Number: %2B491734064561
322-
Caller-Orig-Caller-ID-Name: %2B491734064561
323-
Caller-Orig-Caller-ID-Number: %2B491734064561
324-
Caller-Network-Addr: 10.1.10.155
325-
Caller-ANI: %2B491734064561
326-
Caller-Destination-Number: 493040745112610
320+
Caller-Caller-ID-Name: %2B491734000000
321+
Caller-Caller-ID-Number: %2B491734000000
322+
Caller-Orig-Caller-ID-Name: %2B491734000000
323+
Caller-Orig-Caller-ID-Number: %2B491734000000
324+
Caller-Network-Addr: 10.1.10.100
325+
Caller-ANI: %2B491734000000
326+
Caller-Destination-Number: 493000000000000
327327
Caller-Unique-ID: f5228692-9715-4b6f-b54b-9e35be1a7335
328328
Caller-Source: mod_sofia
329329
Caller-Context: public
330-
Caller-Channel-Name: sofia/internal/%2B491734064561%4062.52.128.144
330+
Caller-Channel-Name: sofia/internal/%2B491734064561%40172.16.50.128
331331
Caller-Profile-Index: 1
332332
Caller-Profile-Created-Time: 1624915212053386
333333
Caller-Channel-Created-Time: 1624915212053386
@@ -353,14 +353,14 @@ public class TestMessages
353353
</interpretation>
354354
</result>";
355355

356-
public const string DetectedSpeechEnglish = @"Content-Length: 2183
356+
public const string DetectedSpeechEnglish = @"Content-Length: 2465
357357
Content-Type: text/event-plain
358358
359359
Event-Name: DETECTED_SPEECH
360360
Core-UUID: ec530c4e-484d-473e-9bd0-073863f752eb
361-
FreeSWITCH-Hostname: fsx
362-
FreeSWITCH-Switchname: fsx
363-
FreeSWITCH-IPv4: 10.1.10.135
361+
FreeSWITCH-Hostname: ser
362+
FreeSWITCH-Switchname: ser
363+
FreeSWITCH-IPv4: 192.168.1.104
364364
FreeSWITCH-IPv6: %3A%3A1
365365
Event-Date-Local: 2021-06-28%2023%3A20%3A38
366366
Event-Date-GMT: Mon,%2028%20Jun%202021%2021%3A20%3A38%20GMT
@@ -374,12 +374,12 @@ public class TestMessages
374374
Channel-State: CS_EXECUTE
375375
Channel-Call-State: ACTIVE
376376
Channel-State-Number: 4
377-
Channel-Name: sofia/internal/%2B491734064561%4062.52.128.144
377+
Channel-Name: sofia/internal/%2B491734064561%40172.16.50.128
378378
Unique-ID: f5228692-9715-4b6f-b54b-9e35be1a7335
379379
Call-Direction: inbound
380380
Presence-Call-Direction: inbound
381381
Channel-HIT-Dialplan: true
382-
Channel-Presence-ID: %2B491734064561%4062.52.128.144
382+
Channel-Presence-ID: %2B491734064561%40172.16.50.128
383383
Channel-Call-UUID: f5228692-9715-4b6f-b54b-9e35be1a7335
384384
Answer-State: answered
385385
Channel-Read-Codec-Name: G722
@@ -390,19 +390,19 @@ public class TestMessages
390390
Channel-Write-Codec-Bit-Rate: 64000
391391
Caller-Direction: inbound
392392
Caller-Logical-Direction: inbound
393-
Caller-Username: %2B491734064561
393+
Caller-Username: %2B491734000000
394394
Caller-Dialplan: XML
395-
Caller-Caller-ID-Name: %2B491734064561
396-
Caller-Caller-ID-Number: %2B491734064561
397-
Caller-Orig-Caller-ID-Name: %2B491734064561
398-
Caller-Orig-Caller-ID-Number: %2B491734064561
399-
Caller-Network-Addr: 10.1.10.155
400-
Caller-ANI: %2B491734064561
401-
Caller-Destination-Number: 493040745112610
395+
Caller-Caller-ID-Name: %2B491734000000
396+
Caller-Caller-ID-Number: %2B491734000000
397+
Caller-Orig-Caller-ID-Name: %2B491734000000
398+
Caller-Orig-Caller-ID-Number: %2B491734000000
399+
Caller-Network-Addr: 10.1.10.100
400+
Caller-ANI: %2B491734000000
401+
Caller-Destination-Number: 493000000000000
402402
Caller-Unique-ID: f5228692-9715-4b6f-b54b-9e35be1a7335
403403
Caller-Source: mod_sofia
404404
Caller-Context: public
405-
Caller-Channel-Name: sofia/internal/%2B491734064561%4062.52.128.144
405+
Caller-Channel-Name: sofia/internal/%2B491734064561%40172.16.50.128
406406
Caller-Profile-Index: 1
407407
Caller-Profile-Created-Time: 1624915212053386
408408
Caller-Channel-Created-Time: 1624915212053386
@@ -418,12 +418,12 @@ public class TestMessages
418418
Caller-Screen-Bit: true
419419
Caller-Privacy-Hide-Name: false
420420
Caller-Privacy-Hide-Number: false
421-
Content-Length: 258
421+
Content-Length: 255
422422
423423
<?xml version=""1.0""?>
424424
<result>
425425
<interpretation grammar=""builtin:speech/transcribe"" confidence=""91"">
426-
<instance>Verlängerung Störung Bestätigung</instance>
426+
<instance>Extensions Problems Confirmation</instance>
427427
<input mode=""speech"">Extensions Problems Confirmation</input>
428428
</interpretation>
429429
</result>";

0 commit comments

Comments
 (0)