public void QueryRetrievesOutputDefinitions()
        {
            var testItem = new TestItem("Baby");
            var server   = new Server("Test", testItem);
            var invoker  = new ActionInvoker(server);
            var result   = invoker.Query(
                "urn:ccnet:test:baby",
                new QueryArguments {
                DataToInclude = DataDefinitions.OutputOnly
            });

            Assert.IsNotNull(result);
            Assert.AreEqual(RemoteResultCode.Success, result.ResultCode);
            var expected = new[]
            {
                new RemoteActionDefinition
                {
                    Name        = "DoSomething",
                    Description = "This will do something",
                    OutputData  = "<definition name=\"Blank\" namespace=\"urn:cruisecontrol:common\" />"
                },
                new RemoteActionDefinition
                {
                    Name        = "TestAction",
                    Description = "This is a test action",
                    OutputData  = "<definition name=\"Blank\" namespace=\"urn:cruisecontrol:common\" />"
                }
            };

            CollectionAssert.AreEqual(expected, result.Actions.OrderBy(rad => rad.Name), new DefinitionComparer());
        }
        public void QueryReturnsActions()
        {
            var testItem = new TestItem("Baby");
            var server   = new Server("Test", testItem);
            var invoker  = new ActionInvoker(server);
            var result   = invoker.Query("urn:ccnet:test:baby", null);

            Assert.IsNotNull(result);
            Assert.AreEqual(RemoteResultCode.Success, result.ResultCode);
            var expected = new[]
            {
                new RemoteActionDefinition
                {
                    Name        = "DoSomething",
                    Description = "This will do something",
                    InputData   = "<definition name=\"Blank\" namespace=\"urn:cruisecontrol:common\" />",
                    OutputData  = "<definition name=\"Blank\" namespace=\"urn:cruisecontrol:common\" />"
                },
                new RemoteActionDefinition
                {
                    Name        = "TestAction",
                    Description = "This is a test action",
                    InputData   = "<definition name=\"SingleValue\" namespace=\"urn:cruisecontrol:common\">" +
                                  "<value name=\"Value\" type=\"string\" />" +
                                  "</definition>",
                    OutputData = "<definition name=\"Blank\" namespace=\"urn:cruisecontrol:common\" />"
                }
            };

            CollectionAssert.AreEqual(expected, result.Actions.OrderBy(rad => rad.Name), new DefinitionComparer());
        }
        public void QueryFailsIfTheNameCannotBeFound()
        {
            var server  = new Server("Test");
            var invoker = new ActionInvoker(server);
            var result  = invoker.Query("urn:ccnet:test:ghost", null);

            Assert.IsNotNull(result);
            Assert.AreEqual(RemoteResultCode.UnknownUrn, result.ResultCode);
        }
        public void QueryFiltersActions()
        {
            var testItem = new TestItem("Baby");
            var server   = new Server("Test", testItem);
            var invoker  = new ActionInvoker(server);
            var args     = new QueryArguments {
                FilterPattern = "DoSomething", DataToInclude = DataDefinitions.None
            };
            var result = invoker.Query("urn:ccnet:test:baby", args);

            Assert.IsNotNull(result);
            Assert.AreEqual(RemoteResultCode.Success, result.ResultCode);
            var expected = new[]
            {
                new RemoteActionDefinition
                {
                    Name        = "DoSomething",
                    Description = "This will do something"
                }
            };

            CollectionAssert.AreEqual(expected, result.Actions, new DefinitionComparer());
        }