Commit 9f094d21 authored by Brickner_cp's avatar Brickner_cp

Code Coverage 94.79%

parent 96bc7c08
...@@ -87,7 +87,6 @@ ...@@ -87,7 +87,6 @@
<ItemGroup> <ItemGroup>
<Compile Include="CharExtensions.cs" /> <Compile Include="CharExtensions.cs" />
<Compile Include="FuncExtensions.cs" /> <Compile Include="FuncExtensions.cs" />
<Compile Include="HexEncoding.cs" />
<Compile Include="IDictionaryExtensions.cs" /> <Compile Include="IDictionaryExtensions.cs" />
<Compile Include="IEnumerableExtensions.cs" /> <Compile Include="IEnumerableExtensions.cs" />
<Compile Include="IListExtensions.cs" /> <Compile Include="IListExtensions.cs" />
......
...@@ -56,9 +56,9 @@ namespace PcapDotNet.Core.Test ...@@ -56,9 +56,9 @@ namespace PcapDotNet.Core.Test
{ {
Data = new Datagram(new byte[] {1, 2, 3}) Data = new Datagram(new byte[] {1, 2, 3})
}); });
PacketDumpFile.Dump(filename, new PcapDataLink(DataLinkKind.Ethernet), PacketDevice.DefaultSnapshotLength, PacketDumpFile.Dump(filename, DataLinkKind.Ethernet, PacketDevice.DefaultSnapshotLength,
new[] {expectedPacket}); new[] {expectedPacket});
using (PacketCommunicator communicator = new OfflinePacketDevice(filename).Open()) using (PacketCommunicator communicator = new OfflinePacketDevice(filename).Open())
{ {
Packet actualPacket; Packet actualPacket;
......
...@@ -69,6 +69,7 @@ ...@@ -69,6 +69,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="BerkeleyPacketFilterTests.cs" /> <Compile Include="BerkeleyPacketFilterTests.cs" />
<Compile Include="HexEncoding.cs" />
<Compile Include="LivePacketDeviceExtensionsTests.cs" /> <Compile Include="LivePacketDeviceExtensionsTests.cs" />
<Compile Include="LivePacketDeviceTests.cs" /> <Compile Include="LivePacketDeviceTests.cs" />
<Compile Include="MarshalingServicesTests.cs" /> <Compile Include="MarshalingServicesTests.cs" />
......
...@@ -195,8 +195,12 @@ namespace PcapDotNet.Core.Test ...@@ -195,8 +195,12 @@ namespace PcapDotNet.Core.Test
if (random.NextBool()) if (random.NextBool())
ipV4Layer.Fragmentation = IpV4Fragmentation.None; ipV4Layer.Fragmentation = IpV4Fragmentation.None;
TcpLayer tcpLayer = random.NextTcpLayer(); TcpLayer tcpLayer = random.NextTcpLayer();
tcpLayer.DestinationPort = 80;
tcpLayer.SourcePort = 80; HttpLayer httpLayer = random.NextHttpLayer();
if (httpLayer.IsRequest)
tcpLayer.DestinationPort = 80;
else
tcpLayer.SourcePort = 80;
return PacketBuilder.Build(packetTimestamp, ethernetLayer, ipV4Layer, tcpLayer, random.NextHttpLayer()); return PacketBuilder.Build(packetTimestamp, ethernetLayer, ipV4Layer, tcpLayer, random.NextHttpLayer());
default: default:
......
...@@ -69,7 +69,9 @@ namespace PcapDotNet.Packets.Test ...@@ -69,7 +69,9 @@ namespace PcapDotNet.Packets.Test
if (httpLayer is HttpRequestLayer) if (httpLayer is HttpRequestLayer)
{ {
Assert.IsTrue(httpDatagram.IsRequest); Assert.IsTrue(httpDatagram.IsRequest);
Assert.IsTrue(httpLayer.IsRequest);
Assert.IsFalse(httpDatagram.IsResponse); Assert.IsFalse(httpDatagram.IsResponse);
Assert.IsFalse(httpLayer.IsResponse);
HttpRequestLayer httpRequestLayer = (HttpRequestLayer)httpLayer; HttpRequestLayer httpRequestLayer = (HttpRequestLayer)httpLayer;
HttpRequestDatagram httpRequestDatagram = (HttpRequestDatagram)httpDatagram; HttpRequestDatagram httpRequestDatagram = (HttpRequestDatagram)httpDatagram;
...@@ -81,7 +83,9 @@ namespace PcapDotNet.Packets.Test ...@@ -81,7 +83,9 @@ namespace PcapDotNet.Packets.Test
else else
{ {
Assert.IsFalse(httpDatagram.IsRequest); Assert.IsFalse(httpDatagram.IsRequest);
Assert.IsFalse(httpLayer.IsRequest);
Assert.IsTrue(httpDatagram.IsResponse); Assert.IsTrue(httpDatagram.IsResponse);
Assert.IsTrue(httpLayer.IsResponse);
HttpResponseLayer httpResponseLayer = (HttpResponseLayer)httpLayer; HttpResponseLayer httpResponseLayer = (HttpResponseLayer)httpLayer;
HttpResponseDatagram httpResponseDatagram = (HttpResponseDatagram)httpDatagram; HttpResponseDatagram httpResponseDatagram = (HttpResponseDatagram)httpDatagram;
...@@ -89,6 +93,19 @@ namespace PcapDotNet.Packets.Test ...@@ -89,6 +93,19 @@ namespace PcapDotNet.Packets.Test
Assert.AreEqual(httpResponseLayer.ReasonPhrase, httpResponseDatagram.ReasonPhrase); Assert.AreEqual(httpResponseLayer.ReasonPhrase, httpResponseDatagram.ReasonPhrase);
} }
Assert.AreEqual(httpLayer.Header, httpDatagram.Header); Assert.AreEqual(httpLayer.Header, httpDatagram.Header);
if (httpLayer.Header != null)
{
foreach (var field in httpLayer.Header)
Assert.AreNotEqual("abc", field);
if (httpLayer.Header.ContentType != null)
{
var parameters = httpLayer.Header.ContentType.Parameters;
Assert.AreEqual<object>(parameters, httpDatagram.Header.ContentType.Parameters);
int maxParameterNameLength = parameters.Any() ? parameters.Max(pair => pair.Key.Length) : 0;
Assert.IsNull(parameters[new string('a', maxParameterNameLength + 1)]);
}
}
Assert.AreEqual(httpLayer.Body, httpDatagram.Body); Assert.AreEqual(httpLayer.Body, httpDatagram.Body);
Assert.AreEqual(httpLayer, httpDatagram.ExtractLayer(), "HTTP Layer"); Assert.AreEqual(httpLayer, httpDatagram.ExtractLayer(), "HTTP Layer");
Assert.AreEqual(httpLayer.Length, httpDatagram.Length); Assert.AreEqual(httpLayer.Length, httpDatagram.Length);
...@@ -420,6 +437,13 @@ namespace PcapDotNet.Packets.Test ...@@ -420,6 +437,13 @@ namespace PcapDotNet.Packets.Test
Assert.AreEqual<uint>(302, response.StatusCode.Value); Assert.AreEqual<uint>(302, response.StatusCode.Value);
} }
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void HttpRequestMethodBadKnownTest()
{
Assert.IsNotNull(new HttpRequestMethod(HttpRequestKnownMethod.Unknown));
}
private static void TestHttpRequest(string httpString, string expectedMethodString = null, string expectedUri = null, HttpVersion expectedVersion = null, HttpHeader expectedHeader = null, string expectedBodyString = null) private static void TestHttpRequest(string httpString, string expectedMethodString = null, string expectedUri = null, HttpVersion expectedVersion = null, HttpHeader expectedHeader = null, string expectedBodyString = null)
{ {
Datagram expectedBody = expectedBodyString == null ? null : new Datagram(Encoding.ASCII.GetBytes(expectedBodyString)); Datagram expectedBody = expectedBodyString == null ? null : new Datagram(Encoding.ASCII.GetBytes(expectedBodyString));
......
...@@ -43,14 +43,6 @@ namespace PcapDotNet.Packets.Http ...@@ -43,14 +43,6 @@ namespace PcapDotNet.Packets.Http
Match match = _regex.Match(fieldValueString); Match match = _regex.Match(fieldValueString);
if (!match.Success) if (!match.Success)
return; return;
// {
// while (!match.Success && fieldValueString.Length > 0)
// {
// fieldValueString = fieldValueString.Substring(0, fieldValueString.Length - 1);
// match = _regex.Match(fieldValueString);
// }
// return;
// }
MediaType = match.Groups[MediaTypeGroupName].Captures.Cast<Capture>().First().Value; MediaType = match.Groups[MediaTypeGroupName].Captures.Cast<Capture>().First().Value;
MediaSubType = match.Groups[MediaSubTypeGroupName].Captures.Cast<Capture>().First().Value; MediaSubType = match.Groups[MediaSubTypeGroupName].Captures.Cast<Capture>().First().Value;
......
...@@ -4,6 +4,8 @@ namespace PcapDotNet.Packets.Http ...@@ -4,6 +4,8 @@ namespace PcapDotNet.Packets.Http
{ {
public abstract class HttpLayer : SimpleLayer, IEquatable<HttpLayer> public abstract class HttpLayer : SimpleLayer, IEquatable<HttpLayer>
{ {
public abstract bool IsRequest { get; }
public bool IsResponse { get { return !IsRequest; } }
public HttpVersion Version { get; set; } public HttpVersion Version { get; set; }
public HttpHeader Header { get; set; } public HttpHeader Header { get; set; }
public Datagram Body { get; set; } public Datagram Body { get; set; }
......
...@@ -5,7 +5,10 @@ namespace PcapDotNet.Packets.Http ...@@ -5,7 +5,10 @@ namespace PcapDotNet.Packets.Http
{ {
public class HttpRequestLayer : HttpLayer, IEquatable<HttpRequestLayer> public class HttpRequestLayer : HttpLayer, IEquatable<HttpRequestLayer>
{ {
public override bool IsRequest { get { return true; } }
public HttpRequestMethod Method { get; set; } public HttpRequestMethod Method { get; set; }
public string Uri { get; set; } public string Uri { get; set; }
public override bool Equals(HttpLayer other) public override bool Equals(HttpLayer other)
......
...@@ -5,9 +5,12 @@ namespace PcapDotNet.Packets.Http ...@@ -5,9 +5,12 @@ namespace PcapDotNet.Packets.Http
{ {
public class HttpResponseLayer : HttpLayer, IEquatable<HttpResponseLayer> public class HttpResponseLayer : HttpLayer, IEquatable<HttpResponseLayer>
{ {
public override bool IsRequest { get { return false; } }
public uint? StatusCode { get; set; } public uint? StatusCode { get; set; }
public Datagram ReasonPhrase { get; set; }
public Datagram ReasonPhrase { get; set; }
public override bool Equals(HttpLayer other) public override bool Equals(HttpLayer other)
{ {
return Equals(other as HttpResponseLayer); return Equals(other as HttpResponseLayer);
......
...@@ -53,24 +53,11 @@ namespace PcapDotNet.Packets.Http ...@@ -53,24 +53,11 @@ namespace PcapDotNet.Packets.Http
string fieldValueString = HttpRegex.GetString(fieldValue); string fieldValueString = HttpRegex.GetString(fieldValue);
Match match = _regex.Match(fieldValueString); Match match = _regex.Match(fieldValueString);
if (!match.Success) if (!match.Success)
{
return; return;
// while (!match.Success && fieldValueString.Length > 0)
// {
// fieldValueString = fieldValueString.Substring(0, fieldValueString.Length - 1);
// match = _regex.Match(fieldValueString);
// }
// return;
}
SetTransferCodings(match.GroupCapturesValues(RegexTransferCodingGroupName).ToArray()); SetTransferCodings(match.GroupCapturesValues(RegexTransferCodingGroupName).ToArray());
} }
// protected override string ValueToString()
// {
// return TransferCodings == null ? string.Empty : TransferCodings.SequenceToString(",");
// }
private ReadOnlyCollection<string> _transferCodings; private ReadOnlyCollection<string> _transferCodings;
private static readonly Regex _transferExtensionRegex = HttpRegex.Concat(HttpRegex.Token, HttpRegex.OptionalParameters); private static readonly Regex _transferExtensionRegex = HttpRegex.Concat(HttpRegex.Token, HttpRegex.OptionalParameters);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment