Commit 9f094d21 authored by Brickner_cp's avatar Brickner_cp

Code Coverage 94.79%

parent 96bc7c08
......@@ -87,7 +87,6 @@
<ItemGroup>
<Compile Include="CharExtensions.cs" />
<Compile Include="FuncExtensions.cs" />
<Compile Include="HexEncoding.cs" />
<Compile Include="IDictionaryExtensions.cs" />
<Compile Include="IEnumerableExtensions.cs" />
<Compile Include="IListExtensions.cs" />
......
......@@ -56,9 +56,9 @@ namespace PcapDotNet.Core.Test
{
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});
using (PacketCommunicator communicator = new OfflinePacketDevice(filename).Open())
{
Packet actualPacket;
......
......@@ -69,6 +69,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="BerkeleyPacketFilterTests.cs" />
<Compile Include="HexEncoding.cs" />
<Compile Include="LivePacketDeviceExtensionsTests.cs" />
<Compile Include="LivePacketDeviceTests.cs" />
<Compile Include="MarshalingServicesTests.cs" />
......
......@@ -195,8 +195,12 @@ namespace PcapDotNet.Core.Test
if (random.NextBool())
ipV4Layer.Fragmentation = IpV4Fragmentation.None;
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());
default:
......
......@@ -69,7 +69,9 @@ namespace PcapDotNet.Packets.Test
if (httpLayer is HttpRequestLayer)
{
Assert.IsTrue(httpDatagram.IsRequest);
Assert.IsTrue(httpLayer.IsRequest);
Assert.IsFalse(httpDatagram.IsResponse);
Assert.IsFalse(httpLayer.IsResponse);
HttpRequestLayer httpRequestLayer = (HttpRequestLayer)httpLayer;
HttpRequestDatagram httpRequestDatagram = (HttpRequestDatagram)httpDatagram;
......@@ -81,7 +83,9 @@ namespace PcapDotNet.Packets.Test
else
{
Assert.IsFalse(httpDatagram.IsRequest);
Assert.IsFalse(httpLayer.IsRequest);
Assert.IsTrue(httpDatagram.IsResponse);
Assert.IsTrue(httpLayer.IsResponse);
HttpResponseLayer httpResponseLayer = (HttpResponseLayer)httpLayer;
HttpResponseDatagram httpResponseDatagram = (HttpResponseDatagram)httpDatagram;
......@@ -89,6 +93,19 @@ namespace PcapDotNet.Packets.Test
Assert.AreEqual(httpResponseLayer.ReasonPhrase, httpResponseDatagram.ReasonPhrase);
}
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, httpDatagram.ExtractLayer(), "HTTP Layer");
Assert.AreEqual(httpLayer.Length, httpDatagram.Length);
......@@ -420,6 +437,13 @@ namespace PcapDotNet.Packets.Test
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)
{
Datagram expectedBody = expectedBodyString == null ? null : new Datagram(Encoding.ASCII.GetBytes(expectedBodyString));
......
......@@ -43,14 +43,6 @@ namespace PcapDotNet.Packets.Http
Match match = _regex.Match(fieldValueString);
if (!match.Success)
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;
MediaSubType = match.Groups[MediaSubTypeGroupName].Captures.Cast<Capture>().First().Value;
......
......@@ -4,6 +4,8 @@ namespace PcapDotNet.Packets.Http
{
public abstract class HttpLayer : SimpleLayer, IEquatable<HttpLayer>
{
public abstract bool IsRequest { get; }
public bool IsResponse { get { return !IsRequest; } }
public HttpVersion Version { get; set; }
public HttpHeader Header { get; set; }
public Datagram Body { get; set; }
......
......@@ -5,7 +5,10 @@ namespace PcapDotNet.Packets.Http
{
public class HttpRequestLayer : HttpLayer, IEquatable<HttpRequestLayer>
{
public override bool IsRequest { get { return true; } }
public HttpRequestMethod Method { get; set; }
public string Uri { get; set; }
public override bool Equals(HttpLayer other)
......
......@@ -5,9 +5,12 @@ namespace PcapDotNet.Packets.Http
{
public class HttpResponseLayer : HttpLayer, IEquatable<HttpResponseLayer>
{
public override bool IsRequest { get { return false; } }
public uint? StatusCode { get; set; }
public Datagram ReasonPhrase { get; set; }
public Datagram ReasonPhrase { get; set; }
public override bool Equals(HttpLayer other)
{
return Equals(other as HttpResponseLayer);
......
......@@ -53,24 +53,11 @@ namespace PcapDotNet.Packets.Http
string fieldValueString = HttpRegex.GetString(fieldValue);
Match match = _regex.Match(fieldValueString);
if (!match.Success)
{
return;
// while (!match.Success && fieldValueString.Length > 0)
// {
// fieldValueString = fieldValueString.Substring(0, fieldValueString.Length - 1);
// match = _regex.Match(fieldValueString);
// }
// return;
}
SetTransferCodings(match.GroupCapturesValues(RegexTransferCodingGroupName).ToArray());
}
// protected override string ValueToString()
// {
// return TransferCodings == null ? string.Empty : TransferCodings.SequenceToString(",");
// }
private ReadOnlyCollection<string> _transferCodings;
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