Commit 3c7a3d78 authored by Brickner_cp's avatar Brickner_cp

Code Coverage 94.97%

parent 36eca4de
......@@ -57,7 +57,7 @@ namespace PcapDotNet.Packets.Test
ArpLayer arpLayer = random.NextArpLayer();
Packet packet = new PacketBuilder(ethernetLayer, arpLayer).Build(DateTime.Now);
Packet packet = PacketBuilder.Build(DateTime.Now, ethernetLayer, arpLayer);
Assert.IsTrue(packet.IsValid, "IsValid");
......
......@@ -54,7 +54,7 @@ namespace PcapDotNet.Packets.Test
{
Data = random.NextDatagram(ethernetPayloadLength),
};
Packet packet = new PacketBuilder(ethernetLayer, payloadLayer).Build(DateTime.Now);
Packet packet = PacketBuilder.Build(DateTime.Now, ethernetLayer, payloadLayer);
// Ethernet
Assert.IsTrue(new[] {EthernetType.IpV4, EthernetType.Arp}.Contains(packet.Ethernet.EtherType) ||
......
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
......@@ -52,7 +53,7 @@ namespace PcapDotNet.Packets.Test
{
Random random = new Random();
for (int i = 0; i != 1000; ++i)
for (int i = 0; i != 200; ++i)
{
EthernetLayer ethernetLayer = random.NextEthernetLayer(EthernetType.None);
IpV4Layer ipV4Layer = random.NextIpV4Layer(null);
......@@ -61,7 +62,7 @@ namespace PcapDotNet.Packets.Test
tcpLayer.Checksum = null;
HttpLayer httpLayer = random.NextHttpLayer();
Packet packet = new PacketBuilder(ethernetLayer, ipV4Layer, tcpLayer, httpLayer).Build(DateTime.Now);
Packet packet = PacketBuilder.Build(DateTime.Now, ethernetLayer, ipV4Layer, tcpLayer, httpLayer);
Assert.IsTrue(packet.IsValid, "IsValid");
HttpDatagram httpDatagram = packet.Ethernet.IpV4.Tcp.Http;
......@@ -96,11 +97,12 @@ namespace PcapDotNet.Packets.Test
if (httpLayer.Header != null)
{
foreach (var field in httpLayer.Header)
Assert.AreNotEqual("abc", field);
Assert.AreNotEqual<object>("abc", field);
if (httpLayer.Header.ContentType != null)
{
var parameters = httpLayer.Header.ContentType.Parameters;
Assert.AreEqual(parameters.Count, parameters.OfType<KeyValuePair<string, string>>().Count());
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)]);
......@@ -466,6 +468,42 @@ namespace PcapDotNet.Packets.Test
Assert.AreEqual(expectedBody, request.Body, "Body " + httpString);
}
[TestMethod]
public void HttpResponseWithoutVersionStatusCodeOrReasonPhraseTest()
{
HttpResponseLayer httpLayer = new HttpResponseLayer();
PacketBuilder builder = new PacketBuilder(new EthernetLayer(),
new IpV4Layer(),
new TcpLayer(),
httpLayer);
// null version
Packet packet = builder.Build(DateTime.Now);
Assert.IsNull(packet.Ethernet.IpV4.Tcp.Http.Version);
// null status code
httpLayer.Version = HttpVersion.Version11;
packet = builder.Build(DateTime.Now);
Assert.IsNotNull(packet.Ethernet.IpV4.Tcp.Http.Version);
Assert.IsNull(((HttpResponseDatagram)packet.Ethernet.IpV4.Tcp.Http).StatusCode);
// null reason phrase
httpLayer.StatusCode = 200;
packet = builder.Build(DateTime.Now);
Assert.IsNotNull(packet.Ethernet.IpV4.Tcp.Http.Version);
Assert.IsNotNull(((HttpResponseDatagram)packet.Ethernet.IpV4.Tcp.Http).StatusCode);
Assert.AreEqual(Datagram.Empty, ((HttpResponseDatagram)packet.Ethernet.IpV4.Tcp.Http).ReasonPhrase, "ReasonPhrase");
}
[TestMethod]
public void HttpBadTransferCodingsRegexTest()
{
Packet packet = BuildPacket("GET /url HTTP/1.1\r\n" +
"Transfer-Encoding: ///\r\n" +
"\r\n");
Assert.IsNull(packet.Ethernet.IpV4.Tcp.Http.Header.TransferEncoding.TransferCodings);
}
private static void TestHttpResponse(string httpString, HttpVersion expectedVersion = null, uint? expectedStatusCode = null, string expectedReasonPhrase = null, HttpHeader expectedHeader = null, string expectedBodyString = null)
{
Datagram expectedBody = expectedBodyString == null ? null : new Datagram(Encoding.ASCII.GetBytes(expectedBodyString));
......@@ -509,7 +547,7 @@ namespace PcapDotNet.Packets.Test
Data = new Datagram(Encoding.ASCII.GetBytes(httpString))
};
Packet packet = new PacketBuilder(ethernetLayer, ipV4Layer, tcpLayer, payloadLayer).Build(DateTime.Now);
Packet packet = PacketBuilder.Build(DateTime.Now, ethernetLayer, ipV4Layer, tcpLayer, payloadLayer);
Assert.IsTrue(packet.IsValid);
......
......@@ -102,7 +102,7 @@ namespace PcapDotNet.Packets.Test
icmpBuffer);
Assert.AreEqual(illegalPacket,
new PacketBuilder(ethernetLayer, ipV4Layer, illegalPacket.Ethernet.IpV4.Icmp.ExtractLayer()).Build(DateTime.Now));
PacketBuilder.Build(DateTime.Now, ethernetLayer, ipV4Layer, illegalPacket.Ethernet.IpV4.Icmp.ExtractLayer()));
}
// Ethernet
......
......@@ -58,11 +58,11 @@ namespace PcapDotNet.Packets.Test
IpV4Layer ipV4Layer = random.NextIpV4Layer(null);
ipV4Layer.HeaderChecksum = null;
for (int i = 0; i != 1000; ++i)
for (int i = 0; i != 200; ++i)
{
IgmpLayer igmpLayer = random.NextIgmpLayer();
Packet packet = new PacketBuilder(ethernetLayer, ipV4Layer, igmpLayer).Build(DateTime.Now);
Packet packet = PacketBuilder.Build(DateTime.Now, ethernetLayer, ipV4Layer, igmpLayer);
Assert.IsTrue(packet.IsValid, "IsValid");
......
......@@ -98,7 +98,7 @@ namespace PcapDotNet.Packets.Test
PayloadLayer payloadLayer = random.NextPayloadLayer(random.Next(0, 50 * 1024));
Packet packet = new PacketBuilder(ethernetLayer, ipV4Layer, payloadLayer).Build(DateTime.Now);
Packet packet = PacketBuilder.Build(DateTime.Now, ethernetLayer, ipV4Layer, payloadLayer);
Assert.IsTrue(ipV4Layer.Protocol == IpV4Protocol.Udp ||
ipV4Layer.Protocol == IpV4Protocol.Tcp ||
......
......@@ -64,7 +64,7 @@ namespace PcapDotNet.Packets.Test
PayloadLayer payloadLayer = random.NextPayloadLayer(random.Next(60000));
Packet packet = new PacketBuilder(ethernetLayer,ipV4Layer, tcpLayer, payloadLayer).Build(DateTime.Now);
Packet packet = PacketBuilder.Build(DateTime.Now, ethernetLayer, ipV4Layer, tcpLayer, payloadLayer);
Assert.IsTrue(packet.IsValid);
......
......@@ -19,20 +19,7 @@ namespace PcapDotNet.Packets.Http
_parameters = parameters.ToDictionary(pair => pair.Key, pair => pair.Value);
}
internal HttpFieldParameters(IEnumerable<string> parametersNames, IEnumerable<string> parametersValues)
{
var nameEnumerator = parametersNames.GetEnumerator();
var valueEnumerator = parametersValues.GetEnumerator();
while (nameEnumerator.MoveNext())
{
if (!valueEnumerator.MoveNext())
throw new ArgumentException(string.Format("more names ({0}) were given than values ({1})", parametersNames.Count(), parametersValues.Count()), "parametersValues");
_parameters.Add(nameEnumerator.Current, valueEnumerator.Current);
}
if (valueEnumerator.MoveNext())
throw new ArgumentException(string.Format("more values ({0}) were given than names ({1})", parametersValues.Count(), parametersNames.Count()), "parametersNames");
}
public int Count { get { return _parameters.Count; } }
public string this[string name]
{
......@@ -83,6 +70,21 @@ namespace PcapDotNet.Packets.Http
return stringBuilder.ToString();
}
internal HttpFieldParameters(IEnumerable<string> parametersNames, IEnumerable<string> parametersValues)
{
var nameEnumerator = parametersNames.GetEnumerator();
var valueEnumerator = parametersValues.GetEnumerator();
while (nameEnumerator.MoveNext())
{
if (!valueEnumerator.MoveNext())
throw new ArgumentException(string.Format("more names ({0}) were given than values ({1})", parametersNames.Count(), parametersValues.Count()), "parametersValues");
_parameters.Add(nameEnumerator.Current, valueEnumerator.Current);
}
if (valueEnumerator.MoveNext())
throw new ArgumentException(string.Format("more values ({0}) were given than names ({1})", parametersValues.Count(), parametersNames.Count()), "parametersNames");
}
private readonly Dictionary<string, string> _parameters = new Dictionary<string, string>();
}
}
\ No newline at end of file
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