Skip to content

Commit

Permalink
-Code coverage improvements
Browse files Browse the repository at this point in the history
-Moved table paramters back to PrtgAPI.Paramters namespace
-Renamed BaseSensorParameters to NewSensorParameters
  • Loading branch information
lordmilko committed Nov 13, 2017
1 parent bda8a85 commit 2e8ca40
Show file tree
Hide file tree
Showing 111 changed files with 944 additions and 324 deletions.
2 changes: 1 addition & 1 deletion PrtgAPI.Tests.IntegrationTests/DataTests/SensorTests.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PrtgAPI.Parameters.ObjectData;
using PrtgAPI.Parameters;

namespace PrtgAPI.Tests.IntegrationTests.DataTests
{
Expand Down
51 changes: 39 additions & 12 deletions PrtgAPI.Tests.UnitTests/InfrastructureTests/PrtgClientTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,22 +84,22 @@ public void PrtgClient_RetriesWhileStreaming()
Assert.AreEqual(retriesToMake * 2, retriesMade, "An incorrect number of retries were made.");
}

private int prtgClientRetriesNormally;

[TestMethod]
public void PrtgClient_RetriesNormally()
{
prtgClientRetriesNormally = 0;

var response = new SensorResponse(Enumerable.Repeat(new SensorItem(), 1001).ToArray());

var client = new PrtgClient("prtg.example.com", "username", "passhash", AuthMode.PassHash, new MockRetryWebClient(response, true));

var retriesToMake = 3;
var retriesMade = 0;

client.RetryCount = retriesToMake;

client.RetryRequest += (sender, args) =>
{
retriesMade++;
};
client.RetryRequest += OnClientOnRetryRequest;

try
{
Expand All @@ -110,7 +110,24 @@ public void PrtgClient_RetriesNormally()
{
}

Assert.AreEqual(retriesToMake, retriesMade, "An incorrect number of retries were made.");
Assert.AreEqual(retriesToMake, prtgClientRetriesNormally, "An incorrect number of retries were made.");

client.RetryRequest -= OnClientOnRetryRequest;

try
{
var moreSensors = client.GetSensors().ToList();
}
catch (WebException)
{
}

Assert.AreEqual(retriesToMake, prtgClientRetriesNormally, "Retry handler was called after it was removed");
}

private void OnClientOnRetryRequest(object sender, RetryRequestEventArgs args)
{
prtgClientRetriesNormally++;
}

[TestMethod]
Expand Down Expand Up @@ -213,21 +230,31 @@ public void PrtgClient_ThrowsWithHtml()
ExecuteFailedRequest(HttpStatusCode.OK, html.ToString(SaveOptions.DisableFormatting), null, "PRTG Network Monitor has discovered a problem. Your last request could not be processed properly. Error message: Sorry, the selected object cannot be used here.");
}

private int prtgClientLogVerboseHit;

[TestMethod]
public void PrtgClient_LogVerbose()
{
var hit = false;
prtgClientLogVerboseHit = 0;

var client = new PrtgClient("prtg.example.com", "username", "1234567890", AuthMode.PassHash, new MockWebClient(new SensorResponse(new SensorItem())));

client.LogVerbose += (e, o) =>
{
hit = true;
};
client.LogVerbose += LogVerboseHandler;

var sensors = client.GetSensors();

Assert.IsTrue(hit, "Verbose was not called");
Assert.AreEqual(prtgClientLogVerboseHit, 1, "Verbose was not called");

client.LogVerbose -= LogVerboseHandler;

sensors = client.GetSensors();

Assert.AreEqual(prtgClientLogVerboseHit, 1, "Verbose was called after it was removed");
}

private void LogVerboseHandler(object sender, LogVerboseEventArgs e)
{
prtgClientLogVerboseHit++;
}

private void ExecuteFailedRequest(HttpStatusCode statusCode, string xml, string address, string expectedError)
Expand Down
4 changes: 2 additions & 2 deletions PrtgAPI.Tests.UnitTests/ObjectTests/CSharp/AddSensorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public void AddSensor_Throws_WhenMissingRequiredValue()
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
[ExpectedException(typeof(ArgumentException))]
public void AddSensor_Throws_MissingSensorName()
{
var client = Initialize_Client(new BasicResponse(string.Empty));
Expand All @@ -56,7 +56,7 @@ public void AddSensor_Throws_MissingSensorName()
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
[ExpectedException(typeof(ArgumentException))]
public void AddSensor_Throws_MissingSensorType()
{
var client = Initialize_Client(new BasicResponse(string.Empty));
Expand Down
26 changes: 26 additions & 0 deletions PrtgAPI.Tests.UnitTests/ObjectTests/CSharp/AutoDiscoverTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PrtgAPI.Tests.UnitTests.ObjectTests.TestResponses;

namespace PrtgAPI.Tests.UnitTests.ObjectTests.CSharp
{
[TestClass]
public class AutoDiscoverTests : BaseTest
{
[TestMethod]
public void AutoDiscover_CanExecute()
{
var client = Initialize_Client(new BasicResponse(string.Empty));

client.AutoDiscover(1001);
}

[TestMethod]
public async Task AutoDiscover_CanExecuteAsync()
{
var client = Initialize_Client(new BasicResponse(string.Empty));

await client.AutoDiscoverAsync(1001);
}
}
}
8 changes: 8 additions & 0 deletions PrtgAPI.Tests.UnitTests/ObjectTests/CSharp/CloneTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@ public async Task Clone_CanCloneAsync()
await client.CloneObjectAsync(1, "New Name", 3);
}

[TestMethod]
public async Task Clone_CanCloneDeviceAsync()
{
var client = Initialize_Client(new CloneResponse());

await client.CloneObjectAsync(1, "New Name", "host", 3);
}

[TestMethod]
public void Clone_CanGetId_WhenObjectIsInvalid()
{
Expand Down
26 changes: 26 additions & 0 deletions PrtgAPI.Tests.UnitTests/ObjectTests/CSharp/DeleteTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PrtgAPI.Tests.UnitTests.ObjectTests.TestResponses;

namespace PrtgAPI.Tests.UnitTests.ObjectTests.CSharp
{
[TestClass]
public class DeleteTests : BaseTest
{
[TestMethod]
public void Delete_CanExecute()
{
var client = Initialize_Client(new BasicResponse(string.Empty));

client.DeleteObject(1001);
}

[TestMethod]
public async Task Delete_CanExecuteAsync()
{
var client = Initialize_Client(new BasicResponse(string.Empty));

await client.DeleteObjectAsync(1001);
}
}
}
2 changes: 1 addition & 1 deletion PrtgAPI.Tests.UnitTests/ObjectTests/CSharp/DeviceTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ public void Device_GetObjectsOverloads_CanExecute() => Object_GetObjectsOverload
);

[TestMethod]
[TestCategory("SlowCoverage")]
public void Device_GetObjectsOverloads_Stream_CanExecute() => Object_GetObjectsOverloads_Stream_CanExecute(
client => client.StreamDevices,
client => client.StreamDevices,
client => client.StreamDevices,
client => client.StreamDevices
Expand Down
2 changes: 1 addition & 1 deletion PrtgAPI.Tests.UnitTests/ObjectTests/CSharp/GroupTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ public void Group_GetObjectsOverloads_CanExecute() => Object_GetObjectsOverloads
);

[TestMethod]
[TestCategory("SlowCoverage")]
public void Group_GetObjectsOverloads_Stream_CanExecute() => Object_GetObjectsOverloads_Stream_CanExecute(
client => client.StreamGroups,
client => client.StreamGroups,
client => client.StreamGroups,
client => client.StreamGroups
Expand Down
28 changes: 27 additions & 1 deletion PrtgAPI.Tests.UnitTests/ObjectTests/CSharp/LogTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PrtgAPI.Tests.UnitTests.ObjectTests.TestItems;
Expand Down Expand Up @@ -27,5 +29,29 @@ public class LogTests : StreamableObjectTests<Log, MessageItem, MessageResponse>
public override MessageItem GetItem() => new MessageItem();

protected override MessageResponse GetResponse(MessageItem[] items) => new MessageResponse(items);

[TestMethod]
public void Log_ExecutesAllOverloads()
{
var client = Initialize_Client_WithItems(GetItem());

var logsDate = client.GetLogs(null, DateTime.Now);
var logsDateAsync = client.GetLogsAsync(null, DateTime.Now).Result;
var logsDateStream = client.StreamLogs(null, DateTime.Now).ToList();

var logsTimeSpan = client.GetLogs();
var logsTimeSpanAsync = client.GetLogsAsync().Result;
var logsTimeSpanStream = client.StreamLogs().ToList();
}

[TestMethod]
public void Log_SanitizesSystemMessage()
{
var client = Initialize_Client(new MessageResponse(new MessageItem(messageRaw: "#O18", message: "<div class=\"logmessage\">Timeout (code: PE018)<div class=\"moreicon\"></div></div>")));

var log = client.GetLogs().First();

Assert.AreEqual(log.Message, "Timeout (code: PE018)");
}
}
}
54 changes: 53 additions & 1 deletion PrtgAPI.Tests.UnitTests/ObjectTests/CSharp/ParameterTests.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PrtgAPI.Parameters.ObjectData;
using PrtgAPI.Parameters;

namespace PrtgAPI.Tests.UnitTests.ObjectTests.CSharp
{
[TestClass]
public class ParameterTests
{
[TestMethod]
public void CustomParameter_ToString_FormatsCorrectly()
{
var parameter = new CustomParameter("name", "val");

Assert.AreEqual("name=val", parameter.ToString());
}

[TestMethod]
public void SensorParameters_Status_CanBeGetAndSet()
{
Expand Down Expand Up @@ -65,5 +74,48 @@ public void LogParameters_SetsStartAndEnd_InConstructor()
Assert.AreEqual(start.ToString(), parameters.StartDate.ToString(), "Start was not correct");
Assert.AreEqual(end.ToString(), parameters.EndDate.ToString(), "End was not correct");
}

[TestMethod]
public void RawSensorParameters_Parameters_InitializesIfNull()
{
var parameters = new RawSensorParameters("testName", "sensorType")
{
[Parameter.Custom] = null
};

Assert.AreEqual(typeof (List<CustomParameter>), parameters.Parameters.GetType());
}

[TestMethod]
public void SensorHistoryParameters_GetsProperties()
{
var start = DateTime.Now.AddHours(-1);
var parameters = new SensorHistoryParameters(1001, 600, null, null);

Assert.AreEqual(parameters.StartDate.ToString(), start.ToString());
Assert.AreEqual(parameters.EndDate.ToString(), start.AddHours(1).ToString());
Assert.AreEqual(parameters.Average, 600);
}

[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void SensorHistoryParameters_Throws_WhenAverageIsLessThanZero()
{
var parameters = new SensorHistoryParameters(1001, -1, null, null);
}

[TestMethod]
public void Parameters_ReplacesCounterpart()
{
var parameters = new Parameters.Parameters
{
[Parameter.Password] = "password",
[Parameter.PassHash] = "passhash"
};

Assert.AreEqual(1, parameters.GetParameters().Keys.Count);
Assert.AreEqual(parameters[Parameter.PassHash], "passhash");
Assert.AreEqual(null, parameters[Parameter.Password]);
}
}
}
2 changes: 1 addition & 1 deletion PrtgAPI.Tests.UnitTests/ObjectTests/CSharp/ProbeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ public void Probe_GetObjectsOverloads_CanExecute() => Object_GetObjectsOverloads
);

[TestMethod]
[TestCategory("SlowCoverage")]
public void Probe_GetObjectsOverloads_Stream_CanExecute() => Object_GetObjectsOverloads_Stream_CanExecute(
client => client.StreamProbes,
client => client.StreamProbes,
client => client.StreamProbes,
client => client.StreamProbes
Expand Down
26 changes: 26 additions & 0 deletions PrtgAPI.Tests.UnitTests/ObjectTests/CSharp/RefreshTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PrtgAPI.Tests.UnitTests.ObjectTests.TestResponses;

namespace PrtgAPI.Tests.UnitTests.ObjectTests.CSharp
{
[TestClass]
public class RefreshTests : BaseTest
{
[TestMethod]
public void Refresh_CanExecute()
{
var client = Initialize_Client(new BasicResponse(string.Empty));

client.RefreshObject(1001);
}

[TestMethod]
public async Task Refresh_CanExecuteAsync()
{
var client = Initialize_Client(new BasicResponse(string.Empty));

await client.RefreshObjectAsync(1001);
}
}
}
26 changes: 26 additions & 0 deletions PrtgAPI.Tests.UnitTests/ObjectTests/CSharp/RenameTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PrtgAPI.Tests.UnitTests.ObjectTests.TestResponses;

namespace PrtgAPI.Tests.UnitTests.ObjectTests.CSharp
{
[TestClass]
public class RenameTests : BaseTest
{
[TestMethod]
public void Rename_CanExecute()
{
var client = Initialize_Client(new BasicResponse(string.Empty));

client.RenameObject(1001, "new name");
}

[TestMethod]
public async Task Rename_CanExecuteAsync()
{
var client = Initialize_Client(new BasicResponse(string.Empty));

await client.RenameObjectAsync(1001, "new name");
}
}
}
Loading

0 comments on commit 2e8ca40

Please sign in to comment.