public async Task CanAccess_MasterApiKey_ListOf_CommandsSent_TakeOne_AndView_Details() { try { var targetCommandId = string.Empty; using (var client = new M2XClient(_masterKey)) { var retrieveCommandsResult = await client.Commands(); Assert.IsNotNull(retrieveCommandsResult); Assert.IsFalse(retrieveCommandsResult.Error); Assert.IsFalse(retrieveCommandsResult.ServerError); Assert.IsNull(retrieveCommandsResult.WebError); Assert.IsFalse(string.IsNullOrWhiteSpace(retrieveCommandsResult.Raw)); var commandData = JsonConvert.DeserializeObject <ApiResponseForCommandSearch>(retrieveCommandsResult.Raw); if (!commandData.commands.Any()) { Assert.Fail("There are no commands to view. Please send one using the appropriate test or create one manually before trying again."); } targetCommandId = commandData.commands.First().id; } using (var client = new M2XClient(_masterKey)) { var result = await client.CommandDetails(targetCommandId); Assert.IsNotNull(result); Assert.IsFalse(result.Error); Assert.IsFalse(result.ServerError); Assert.IsNull(result.WebError); Assert.IsFalse(string.IsNullOrWhiteSpace(result.Raw)); var commandDetail = JsonConvert.DeserializeObject <ApiResponseForCommandDetail>(result.Raw); Assert.IsNotNull(commandDetail); Assert.IsNotNull(commandDetail.data); Assert.IsNotNull(commandDetail.deliveries); Assert.AreNotEqual(default(DateTime), commandDetail.sent_at); } } catch (Exception) { DestroyTestDevice(); throw; } }
public async Task CanAccess_MasterApiKey_ListOf_CommandsSent_NoFilters() { try { using (var client = new M2XClient(_masterKey)) { var result = await client.Commands(); Assert.IsNotNull(result); Assert.IsFalse(result.Error); Assert.IsFalse(result.ServerError); Assert.IsNull(result.WebError); Assert.IsFalse(string.IsNullOrWhiteSpace(result.Raw)); ProcessCommandSearchResult(result.Raw, null); } } catch (Exception) { DestroyTestDevice(); throw; } }
public async Task CanAccess_MasterApiKey_ListOf_CommandsSent_WithFilters() { try { using (var client = new M2XClient(_masterKey)) { foreach (var filter in new[] { "limit", "page", "dir|desc", "dir|asc", "start", "end", "name" }) { M2XResponse result = null; switch (filter) { case "limit": result = await client.Commands(new { limit = 2 }); break; case "page": result = await client.Commands(new { page = 1 }); break; case "dir|desc": result = await client.Commands(new { dir = "desc" }); break; case "dir|asc": result = await client.Commands(new { dir = "asc" }); break; case "start": result = await client.Commands(new { start = DateTime.UtcNow.AddMinutes(-60).ToString(Constants.ISO8601_DateStartFormat) }); break; case "end": result = await client.Commands(new { end = DateTime.UtcNow.AddMinutes(-10).ToString(Constants.ISO8601_DateStartFormat) }); break; case "name": result = await client.Commands(new { name = "PHONE_HOME" }); break; } Assert.IsNotNull(result); Assert.IsFalse(result.Error); Assert.IsFalse(result.ServerError); Assert.IsNull(result.WebError); Assert.IsFalse(string.IsNullOrWhiteSpace(result.Raw)); ProcessCommandSearchResult(result.Raw, null); } } } catch (Exception) { DestroyTestDevice(); throw; } }
public async Task CanAccess_MasterApiKey_AndSendCommands_ToSingleDevice_AndDevice_MarksCommand_AsRejected() { try { var commandName = "PHONE_HOME"; using (var client = new M2XClient(_masterKey)) { var sendCommandParms = new StringBuilder($"{{ "); sendCommandParms.Append($"\"name\": \"{commandName}\""); sendCommandParms.Append($", "); sendCommandParms.Append($"\"data\": {{ \"server_url\": \"https://m2x.att.com\" }}"); sendCommandParms.Append($", "); sendCommandParms.Append($"\"targets\": {{ \"devices\": [\"{_testDevice.id}\"] }}"); sendCommandParms.Append($" }}"); var result = await client.SendCommand(sendCommandParms.ToString()); Assert.IsNotNull(result); Assert.IsFalse(result.Error); Assert.IsFalse(result.ServerError); Assert.IsNull(result.WebError); Assert.IsFalse(string.IsNullOrWhiteSpace(result.Raw)); Assert.AreEqual(Constants.M2X_Response_Success_Accepted, result.Raw); } System.Threading.Thread.Sleep(1000); var targetCommandId = string.Empty; using (var client = new M2XClient(_masterKey)) { var device = client.Device(_testDevice.id); var result = await device.Commands(); Assert.IsNotNull(result); Assert.IsFalse(result.Error); Assert.IsFalse(result.ServerError); Assert.IsNull(result.WebError); Assert.IsFalse(string.IsNullOrWhiteSpace(result.Raw)); var commandData = JsonConvert.DeserializeObject <ApiResponseForCommandSearch>(result.Raw); Assert.IsNotNull(commandData); targetCommandId = commandData.commands.All(a => a.status_counts == null) ? commandData.commands.First().id : commandData.commands.First(f => f.status_counts.processed == 0 && f.status_counts.rejected == 0 && f.status_counts.pending > 0).id; } System.Threading.Thread.Sleep(500); using (var client = new M2XClient(_masterKey)) { var device = client.Device(_testDevice.id); var processParms = $"{{ \"reason\": \"Because I Can!\" }}"; var result = await device.RejectCommand(targetCommandId, processParms); Assert.IsNotNull(result); Assert.IsFalse(result.Error); Assert.IsFalse(result.ServerError); Assert.IsNull(result.WebError); Assert.IsTrue(string.IsNullOrWhiteSpace(result.Raw)); } System.Threading.Thread.Sleep(500); using (var client = new M2XClient(_masterKey)) { var result = await client.Commands(); Assert.IsNotNull(result); Assert.IsFalse(result.Error); Assert.IsFalse(result.ServerError); Assert.IsNull(result.WebError); Assert.IsFalse(string.IsNullOrWhiteSpace(result.Raw)); ProcessCommandSearchResultFindTargetCommandAndCheckStatus(result.Raw, _testDevice.id, targetCommandId, "rejected"); } } catch (Exception ex) { DestroyTestDevice(); throw; } }