From 295867b84bd8897b0e374d98ab5b3d602a39b246 Mon Sep 17 00:00:00 2001 From: ceee Date: Mon, 26 Aug 2013 11:45:57 +0200 Subject: [PATCH] add tests for monitors; fix MonitorParameters bug to not include subtype on port listening --- UptimeSharp.Tests/MonitorsTest.cs | 125 +++++++++++++++--- .../Models/Parameters/MonitorParameters.cs | 4 +- .../Models/Response/RetrieveResponse.cs | 2 +- 3 files changed, 106 insertions(+), 25 deletions(-) diff --git a/UptimeSharp.Tests/MonitorsTest.cs b/UptimeSharp.Tests/MonitorsTest.cs index 05fc615..9d6a5f5 100644 --- a/UptimeSharp.Tests/MonitorsTest.cs +++ b/UptimeSharp.Tests/MonitorsTest.cs @@ -17,41 +17,122 @@ namespace UptimeSharp.Tests // setup public MonitorsTest() { - //client = new UptimeClient(APIKey); + client = new UptimeClient(APIKey); } // teardown public void Dispose() { - //List alerts = client.GetAlerts(); - //alerts.ForEach(alert => client.DeleteAlert(alert)); + List monitors = client.GetMonitors(); + monitors.ForEach(monitor => client.DeleteMonitor(monitor)); } - //bool result = client.Delete(775853599); + [Fact] + public void AddHTTPMonitor() + { + Assert.True(client.AddMonitor( + name: "test_1", + uri: "http://test1.com" + )); + } - //bool result = client.Create("apitest", "http://pocketsharp.com", Models.Type.HTTP); - //client.Add("apiKeywordTest", "http://frontendplay.com", "frontendplay", KeywordType.NotExists); - //client.DeleteAlert(2014599); - //bool result = client.AddAlert(AlertType.Email, "klika@live.at"); + [Fact] + public void AddKeywordMonitor() + { + Assert.True(client.AddMonitor( + name: "test_2", + uri: "http://test2.com", + type: Models.Type.Keyword, + keywordType: KeywordType.Exists, + keywordValue: "test" + )); + } - //bool x = client.Add( - // name: "testx", - // uri: "http://google.at", - // type: Models.Type.Keyword, - // keywordType: KeywordType.Exists, - // keywordValue: "goog" - //); - //List monitors = client.Retrieve(showLog: true); - //List alerts = client.RetrieveAlerts(); - //System.Console.WriteLine(monitor.ID + " " + monitor.Name); - //alerts.ForEach(item => System.Console.WriteLine(item.ID + " " + item.Type.ToString() + " " + item.Value)); - //monitor.Name = "HALLOOO"; - //bool result = client.Modify(monitor); + [Fact] + public void AddPingMonitor() + { + Assert.True(client.AddMonitor( + name: "test_3", + uri: "http://test3.com", + type: Models.Type.Ping + )); + } - //monitors.ForEach(item => System.Console.WriteLine(item.ID + " " + item.Name + " " + item.Status)); + + [Fact] + public void AddPortMonitor() + { + Assert.True(client.AddMonitor( + name: "test_4", + uri: "127.0.0.1", + type: Models.Type.Port, + subtype: Subtype.Custom, + port: 50004 + )); + } + + + [Fact] + public void GetMonitors() + { + Assert.True(client.AddMonitor( + name: "test_5", + uri: "255.0.0.1", + type: Models.Type.Port, + subtype: Subtype.HTTP + )); + + List items = client.GetMonitors(); + Monitor monitor = null; + + items.ForEach(item => + { + if(item.Name == "test_5") + { + monitor = item; + } + }); + + Assert.True( + monitor != null + && monitor.UriString == "255.0.0.1" + && monitor.Type == Models.Type.Port + && monitor.Subtype == Subtype.HTTP); + } + + + [Fact] + public void ModifyAMonitor() + { + Assert.True(client.AddMonitor( + name: "test_6", + uri: "http://test6.com" + )); + + List items = client.GetMonitors(); + Monitor monitor = null; + + items.ForEach(item => + { + if (item.Name == "test_6") + { + monitor = item; + } + }); + + Assert.NotNull(monitor); + + monitor.Name = "updated_test_6"; + + Assert.True(client.ModifyMonitor(monitor)); + + monitor = client.GetMonitor(monitor.ID); + + Assert.Equal(monitor.Name, "updated_test_6"); + } } } diff --git a/UptimeSharp/Models/Parameters/MonitorParameters.cs b/UptimeSharp/Models/Parameters/MonitorParameters.cs index 03ea96f..4237db9 100644 --- a/UptimeSharp/Models/Parameters/MonitorParameters.cs +++ b/UptimeSharp/Models/Parameters/MonitorParameters.cs @@ -108,11 +108,11 @@ namespace UptimeSharp.Models } // special params for port listener - if (Type == Type.Port && Subtype != Subtype.Unknown && Port.HasValue) + if (Type == Type.Port && Subtype != Subtype.Unknown) { parameters.Add(UptimeClient.Parameter("monitorSubType", (int)Subtype)); - if (Subtype == Subtype.Custom) + if (Subtype == Subtype.Custom && Port.HasValue) { parameters.Add(UptimeClient.Parameter("monitorPort", Port)); } diff --git a/UptimeSharp/Models/Response/RetrieveResponse.cs b/UptimeSharp/Models/Response/RetrieveResponse.cs index 6f593a8..979a125 100644 --- a/UptimeSharp/Models/Response/RetrieveResponse.cs +++ b/UptimeSharp/Models/Response/RetrieveResponse.cs @@ -30,7 +30,7 @@ namespace UptimeSharp.Models { get { - return ItemDictionary["monitor"]; + return ItemDictionary != null ? ItemDictionary["monitor"] : null; } } }