public void WhenOneCruiseServerSnapshotIsReturnedThisIsContainedInTheReturnedXml()
        {
            CruiseServerSnapshot cruiseServerSnapshot = CreateCruiseServerSnapshot();

            CruiseServerSnapshotOnServer cruiseServerSnapshotOnServer = new CruiseServerSnapshotOnServer(cruiseServerSnapshot, null);

            mockFarmService.Setup(service => service.GetCruiseServerSnapshotListAndExceptions(null)).
            Returns(new CruiseServerSnapshotListAndExceptions(new CruiseServerSnapshotOnServer[] { cruiseServerSnapshotOnServer }, new CruiseServerException[0])).
            Verifiable();

            XmlFragmentResponse response = (XmlFragmentResponse)reportAction.Execute(null);
            string xml = response.ResponseFragment;

            // cannot just compare the xml string, since we correctly expect the string to vary based on the
            // timezone in which this code is executing
            XmlDocument doc = XPathAssert.LoadAsDocument(xml);

            XPathAssert.Matches(doc, "/CruiseControl/Projects/Project/@name", "HelloWorld");
            XPathAssert.Matches(doc, "/CruiseControl/Projects/Project/@activity", "Sleeping");
            XPathAssert.Matches(doc, "/CruiseControl/Projects/Project/@lastBuildStatus", "Success");
            XPathAssert.Matches(doc, "/CruiseControl/Projects/Project/@lastBuildLabel", "build_7");
            XPathAssert.Matches(doc, "/CruiseControl/Projects/Project/@lastBuildTime", LastBuildTime);
            XPathAssert.Matches(doc, "/CruiseControl/Projects/Project/@nextBuildTime", NextBuildTime);
            XPathAssert.Matches(doc, "/CruiseControl/Projects/Project/@webUrl", "http://blah");
            XPathAssert.Matches(doc, "/CruiseControl/Projects/Project/@category", "category");
            XPathAssert.Matches(doc, "/CruiseControl/Projects/Project/@serverName", Environment.MachineName);

            XPathAssert.Matches(doc, "/CruiseControl/Queues/Queue/@name", "Queue1");
            XPathAssert.Matches(doc, "/CruiseControl/Queues/Queue/Request/@projectName", "HelloWorld");
            XPathAssert.Matches(doc, "/CruiseControl/Queues/Queue/Request/@activity", "CheckingModifications");

            mockFarmService.Verify();
        }
        public void ReturnedXmlValidatesAgainstSchema()
        {
            ProjectStatus  projectStatus   = CreateProjectStatus();
            ServerLocation ServerSpecifier = new ServerLocation();

            ServerSpecifier.ServerName = "localhost";


            ProjectStatusOnServer projectStatusOnServer = new ProjectStatusOnServer(projectStatus, ServerSpecifier);

            mockFarmService.ExpectAndReturn("GetProjectStatusListAndCaptureExceptions",
                                            new ProjectStatusListAndExceptions(
                                                new ProjectStatusOnServer[] { projectStatusOnServer }, new CruiseServerException[0]),
                                            (string)null);

            XmlFragmentResponse response = (XmlFragmentResponse)reportAction.Execute(null);
            string xml = response.ResponseFragment;

            XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();

            xmlReaderSettings.Schemas.Add(ReadSchemaFromResources("XmlReportActionSchema.xsd"));
            XmlReader rdr = XmlReader.Create(new StringReader(xml), xmlReaderSettings);

            while (rdr.Read())
            {
            }

            mockFarmService.Verify();
        }
        public void WhenOneProjectStatusIsReturnedThisIsContainedInTheReturnedXml()
        {
            ProjectStatus  projectStatus   = CreateProjectStatus();
            ServerLocation ServerSpecifier = new ServerLocation();

            ServerSpecifier.ServerName = "localhost";

            ProjectStatusOnServer projectStatusOnServer = new ProjectStatusOnServer(projectStatus, ServerSpecifier);

            mockFarmService.ExpectAndReturn("GetProjectStatusListAndCaptureExceptions",
                                            new ProjectStatusListAndExceptions(
                                                new ProjectStatusOnServer[] { projectStatusOnServer }, new CruiseServerException[0]),
                                            (string)null);

            XmlFragmentResponse response = (XmlFragmentResponse)reportAction.Execute(null);
            string      xml = response.ResponseFragment;
            XmlDocument doc = XPathAssert.LoadAsDocument(xml);

            XPathAssert.Matches(doc, "/Projects/Project/@name", "HelloWorld");
            XPathAssert.Matches(doc, "/Projects/Project/@activity", "Sleeping");
            XPathAssert.Matches(doc, "/Projects/Project/@lastBuildStatus", "Success");
            XPathAssert.Matches(doc, "/Projects/Project/@lastBuildLabel", "build_7");
            XPathAssert.Matches(doc, "/Projects/Project/@lastBuildTime", LastBuildTime);
            XPathAssert.Matches(doc, "/Projects/Project/@nextBuildTime", NextBuildTime);
            XPathAssert.Matches(doc, "/Projects/Project/@webUrl", "http://blah");
            XPathAssert.Matches(doc, "/Projects/Project/@category", "category");

            mockFarmService.Verify();
        }
示例#4
0
        /// <summary>
        /// Generates the XML response for the specified project.
        /// </summary>
        /// <param name="cruiseRequest"></param>
        /// <returns></returns>
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            // Retrieve the actual snapshot
            var projectSpecifier = cruiseRequest.ProjectSpecifier;
            var snapshot         = farmServer.TakeStatusSnapshot(projectSpecifier, cruiseRequest.RetrieveSessionToken());

            // See what type of output is required
            IResponse output     = null;
            var       outputType = (cruiseRequest.Request.GetText("view") ?? string.Empty).ToLower();

            switch (outputType)
            {
            case "json":
                // Generate the output as JSON
                var json = this.ConvertStatusToJson(snapshot);
                output = new JsonFragmentResponse(json);
                break;

            default:
                // Default output is XML
                var xml = snapshot.ToString();
                output = new XmlFragmentResponse(xml);
                break;
            }
            return(output);
        }
        public void WhenNoCruiseServerSnapshotEntriesAreReturnedByTheFarmServiceTheXmlContainsJustRootNodes()
        {
            mockFarmService.Setup(service => service.GetCruiseServerSnapshotListAndExceptions(null)).
            Returns(new CruiseServerSnapshotListAndExceptions(new CruiseServerSnapshotOnServer[0], new CruiseServerException[0])).
            Verifiable();
            XmlFragmentResponse response = (XmlFragmentResponse)reportAction.Execute(null);
            string xml = response.ResponseFragment;

            Assert.AreEqual("<CruiseControl><Projects /><Queues /></CruiseControl>", xml);

            mockFarmService.Verify();
        }
示例#6
0
        public void WhenNoProjectStatusEntriesAreReturnedByTheFarmServiceTheXmlContainsJustASingleRootNode()
        {
            mockFarmService.Setup(service => service.GetProjectStatusListAndCaptureExceptions(null)).
            Returns(new ProjectStatusListAndExceptions(new ProjectStatusOnServer[0], new CruiseServerException[0])).
            Verifiable();
            XmlFragmentResponse response = (XmlFragmentResponse)reportAction.Execute(null);
            string xml = response.ResponseFragment;

            Assert.AreEqual("<Projects CCType=\"CCNet\" />", xml);

            mockFarmService.Verify();
        }
        public void ReturnedXmlValidatesAgainstSchema()
        {
            CruiseServerSnapshot cruiseServerSnapshot = CreateCruiseServerSnapshot();

            CruiseServerSnapshotOnServer cruiseServerSnapshotOnServer = new CruiseServerSnapshotOnServer(cruiseServerSnapshot, null);

            mockFarmService.Setup(service => service.GetCruiseServerSnapshotListAndExceptions(null)).
            Returns(new CruiseServerSnapshotListAndExceptions(new CruiseServerSnapshotOnServer[] { cruiseServerSnapshotOnServer }, new CruiseServerException[0])).
            Verifiable();

            XmlFragmentResponse response = (XmlFragmentResponse)reportAction.Execute(null);
            string xml = response.ResponseFragment;

            XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();

            xmlReaderSettings.Schemas.Add(ReadSchemaFromResources("XmlServerReportActionSchema.xsd"));
            XmlReader rdr = XmlReader.Create(new StringReader(xml), xmlReaderSettings);

            while (rdr.Read())
            {
            }

            mockFarmService.Verify();
        }