private IResponse GenerateAuditHistory(ICruiseRequest request)
        {
            var velocityContext = new Hashtable();
            var links = new List<IAbsoluteLink>();
            links.Add(new ServerLink(request.UrlBuilder, request.ServerSpecifier, "Server", ActionName));

            ProjectStatusListAndExceptions projects = farmService.GetProjectStatusListAndCaptureExceptions(request.ServerSpecifier, request.RetrieveSessionToken());
            foreach (ProjectStatusOnServer projectStatusOnServer in projects.StatusAndServerList)
            {
                DefaultProjectSpecifier projectSpecifier = new DefaultProjectSpecifier(projectStatusOnServer.ServerSpecifier, projectStatusOnServer.ProjectStatus.Name);
                links.Add(new ProjectLink(request.UrlBuilder, projectSpecifier, projectSpecifier.ProjectName, ServerAuditHistoryServerPlugin.ActionName));
            }
            velocityContext["projectLinks"] = links;
            string sessionToken = request.RetrieveSessionToken(sessionRetriever);
            if (!string.IsNullOrEmpty(request.ProjectName))
            {
                velocityContext["currentProject"] = request.ProjectName;
                AuditFilterBase filter = AuditFilters.ByProject(request.ProjectName);
                velocityContext["auditHistory"] = farmService.ReadAuditRecords(request.ServerSpecifier, sessionToken, 0, 100, filter);
            }
            else
            {
                velocityContext["auditHistory"] = new ServerLink(request.UrlBuilder, request.ServerSpecifier, string.Empty, DiagnosticsActionName);
                velocityContext["auditHistory"] = farmService.ReadAuditRecords(request.ServerSpecifier, sessionToken, 0, 100);
            }

            return viewGenerator.GenerateView(@"AuditHistory.vm", velocityContext);
        }
        public IResponse Execute(ICruiseRequest request)
        {
            Hashtable velocityContext = new Hashtable();
            ArrayList links = new ArrayList();
            links.Add(new ServerLink(urlBuilder, request.ServerSpecifier, "Server Log", ActionName));

            ProjectStatusListAndExceptions projects = farmService.GetProjectStatusListAndCaptureExceptions(request.ServerSpecifier,
                request.RetrieveSessionToken());
            foreach (ProjectStatusOnServer projectStatusOnServer in projects.StatusAndServerList)
            {
                DefaultProjectSpecifier projectSpecifier = new DefaultProjectSpecifier(projectStatusOnServer.ServerSpecifier, projectStatusOnServer.ProjectStatus.Name);
                links.Add(new ProjectLink(urlBuilder, projectSpecifier, projectSpecifier.ProjectName, ServerLogProjectPlugin.ActionName));
            }
            velocityContext["projectLinks"] = links;
            if (string.IsNullOrEmpty(request.ProjectName))
            {
                velocityContext["log"] = HttpUtility.HtmlEncode(farmService.GetServerLog(request.ServerSpecifier, request.RetrieveSessionToken()));
            }
            else
            {
                velocityContext["currentProject"] = request.ProjectSpecifier.ProjectName;
                velocityContext["log"] = HttpUtility.HtmlEncode(farmService.GetServerLog(request.ProjectSpecifier, request.RetrieveSessionToken()));
            }

            return viewGenerator.GenerateView(@"ServerLog.vm", velocityContext);
        }
        public void Setup()
        {
            ProjectStatusOnServer server = new ProjectStatusOnServer(new ProjectStatus("myProject", IntegrationStatus.Success, DateTime.Now),
                                                                     new DefaultServerSpecifier("myServer"));
            ProjectStatusListAndExceptions statusList = new ProjectStatusListAndExceptions(
                new ProjectStatusOnServer[] {
                server
            }, new CruiseServerException[] {
            });

            farmServiceMock = new Mock <IFarmService>();
            farmServiceMock.Setup(service => service.GetProjectStatusListAndCaptureExceptions(It.IsAny <IServerSpecifier>(), It.IsAny <string>())).Returns(statusList);
            viewGeneratorMock = new Mock <IVelocityViewGenerator>();
            linkFactoryMock   = new Mock <ILinkFactory>();
            ServerLocation serverConfig = new ServerLocation();

            serverConfig.ServerName = "myServer";
            configuration.Servers   = new ServerLocation[] {
                serverConfig
            };
            var urlBuilderMock = new Mock <ICruiseUrlBuilder>();

            urlBuilderMock.Setup(builder => builder.BuildProjectUrl(It.IsAny <string>(), It.IsAny <IProjectSpecifier>())).Returns(string.Empty);

            plugin = new ProjectReportProjectPlugin((IFarmService)farmServiceMock.Object,
                                                    (IVelocityViewGenerator)viewGeneratorMock.Object,
                                                    (ILinkFactory)linkFactoryMock.Object,
                                                    configuration,
                                                    (ICruiseUrlBuilder)urlBuilderMock.Object);

            cruiseRequestMock = new Mock <ICruiseRequest>();
            cruiseRequest     = (ICruiseRequest )cruiseRequestMock.Object;
        }
        public IResponse Execute(ICruiseRequest request)
        {
            var velocityContext = new Hashtable();
            this.translations = Translations.RetrieveCurrent();

            var projectStatus = farmService.GetProjectStatusListAndCaptureExceptions(request.RetrieveSessionToken());
            var urlBuilder = request.UrlBuilder;
            var category = request.Request.GetText("Category");

            var gridRows = this.projectGrid.GenerateProjectGridRows(projectStatus.StatusAndServerList, BaseActionName, 
                                                                    ProjectGridSortColumn.Category, true, 
                                                                    category, urlBuilder,this.translations);

            var categories = new SortedDictionary<string, CategoryInformation>();
           
            foreach (var row in gridRows)
            {
                var rowCategory = row.Category;
                CategoryInformation categoryRows;
                if (!categories.TryGetValue(rowCategory, out categoryRows))
                {
                    categoryRows = new CategoryInformation(rowCategory);
                    categories.Add(rowCategory, categoryRows);                    
                }

                categoryRows.AddRow(row);                
            }

            velocityContext["categories"] = categories.Values;          

            return viewGenerator.GenerateView("CategorizedFarmReport.vm", velocityContext);
        }
		public IResponse Execute(ICruiseRequest cruiseRequest)
		{
			DirectoryInfo cctrayPath = new DirectoryInfo(physicalApplicationPathProvider.GetFullPathFor("cctray"));
			if (cctrayPath.Exists)
			{
				FileInfo[] files = cctrayPath.GetFiles("*CCTray*.*");
				if (files.Length == 1)
				{
					return new RedirectResponse("cctray/" + files[0].Name);
				}
                else if (files.Length > 1)
                {
                    StringBuilder installerList = new StringBuilder();
                    installerList.Append(@"<h3>Multiple CCTray installers available</h3>");
                    installerList.Append(@"<p>Choose one of the following CCTray installers:");
                    installerList.Append(@"<ul>");
                    for (int i = 0; i < files.Length; i++)
                    {
                        installerList.Append(@"<li>");
						installerList.Append(@"<a href=""cctray/");
                        installerList.Append(files[i].Name);
                        installerList.Append(@""">");
                        installerList.Append(files[i].Name);
                        installerList.Append(@"</a>");
                        installerList.Append(@"</li>");
                    }
                    installerList.Append(@"</ul>");
                    installerList.Append(@"</p>");
                    return new HtmlFragmentResponse(installerList.ToString());
                }
			}
			return new HtmlFragmentResponse("<h3>Unable to locate CCTray installer at path: " + cctrayPath + "</h3>");
		}
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            DirectoryInfo cctrayPath = new DirectoryInfo(physicalApplicationPathProvider.GetFullPathFor("cctray"));

            if (cctrayPath.Exists)
            {
                FileInfo[] files = cctrayPath.GetFiles("*CCTray*.*");
                if (files.Length == 1)
                {
                    return(new RedirectResponse("cctray/" + files[0].Name));
                }
                else if (files.Length > 1)
                {
                    StringBuilder installerList = new StringBuilder();
                    installerList.Append(@"<h3>Multiple CCTray installers available</h3>");
                    installerList.Append(@"<p>Choose one of the following CCTray installers:");
                    installerList.Append(@"<ul>");
                    for (int i = 0; i < files.Length; i++)
                    {
                        installerList.Append(@"<li>");
                        installerList.Append(@"<a href=""cctray/");
                        installerList.Append(files[i].Name);
                        installerList.Append(@""">");
                        installerList.Append(files[i].Name);
                        installerList.Append(@"</a>");
                        installerList.Append(@"</li>");
                    }
                    installerList.Append(@"</ul>");
                    installerList.Append(@"</p>");
                    return(new HtmlFragmentResponse(installerList.ToString()));
                }
            }
            return(new HtmlFragmentResponse("<h3>Unable to locate CCTray installer at path: " + cctrayPath + "</h3>"));
        }
Beispiel #7
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);
        }
Beispiel #8
0
        public IResponse Execute(ICruiseRequest request)
        {
            string userName = HttpContext.Current.Request.Form["user"];
            string action   = HttpContext.Current.Request.Form["action"];

            if (string.IsNullOrEmpty(userName))
            {
                return(GenerateUserList(request, string.Empty, string.Empty));
            }
            else
            {
                if (action == "Reset password")
                {
                    string message  = string.Empty;
                    string errorMsg = string.Empty;
                    try
                    {
                        farmService.ResetPassword(request.ServerName, sessionRetriever.SessionToken, userName, resetPassword);
                        message = "The password has been reset";
                    }
                    catch (Exception error)
                    {
                        errorMsg = error.Message;
                    }
                    return(GenerateUserList(request, message, errorMsg));
                }
                else
                {
                    return(GenerateUserDiagnostics(request, userName));
                }
            }
        }
 public IResponse Execute(ICruiseRequest cruiseRequest)
 {
     string fileName = cruiseRequest.Request.GetText("file").Replace("/", "\\");
     if (fileName.EndsWith(".html", StringComparison.InvariantCultureIgnoreCase) ||
         fileName.EndsWith(".htm", StringComparison.InvariantCultureIgnoreCase))
     {
         var htmlData = LoadHtmlFile(cruiseRequest, fileName);
         var prefixPos = fileName.LastIndexOf("\\");
         var prefix = prefixPos >= 0 ? fileName.Substring(0, prefixPos + 1) : string.Empty;
         MatchEvaluator evaluator = (match) =>
         {
             var splitPos = match.Value.IndexOf("=\"");
             var newValue = match.Value.Substring(0, splitPos + 2) +
                 "RetrieveBuildFile.aspx?file=" +
                 prefix +
                 match.Value.Substring(splitPos + 2);
             return newValue;
         };
         htmlData = linkFinder.Replace(htmlData, evaluator);
         return new HtmlFragmentResponse(htmlData);
     }
     else
     {
         // Retrieve the file transfer object
         var fileTransfer = farmService.RetrieveFileTransfer(cruiseRequest.BuildSpecifier, fileName, cruiseRequest.RetrieveSessionToken());
         if (fileTransfer != null)
         {
             return new FileTransferResponse(fileTransfer, fileName);
         }
         else
         {
             return new HtmlFragmentResponse("<div>Unable to find file</div>");
         }
     }
 }
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            Hashtable velocityContext = new Hashtable();

            velocityContext["message"] = string.Empty;
            velocityContext["error"]   = string.Empty;
            string oldPassword  = cruiseRequest.Request.GetText("oldPassword");
            string newPassword1 = cruiseRequest.Request.GetText("newPassword1");
            string newPassword2 = cruiseRequest.Request.GetText("newPassword2");

            if (!string.IsNullOrEmpty(oldPassword) &&
                !string.IsNullOrEmpty(newPassword1))
            {
                try
                {
                    if (newPassword1 != newPassword2)
                    {
                        throw new CruiseControlException("New passwords do not match");
                    }
                    string sessionToken = cruiseRequest.RetrieveSessionToken();
                    farmService.ChangePassword(cruiseRequest.ServerName, sessionToken, oldPassword, newPassword1);
                    velocityContext["message"] = "Password has been changed";
                }
                catch (Exception error)
                {
                    velocityContext["error"] = error.Message;
                }
            }
            return(viewGenerator.GenerateView("ChangePasswordAction.vm", velocityContext));
        }
		public void SetUp()
		{
			mockFarmService = new DynamicMock(typeof (IFarmService));
			reportAction = new ForceBuildXmlAction((IFarmService) mockFarmService.MockInstance);
			cruiseRequestMock = new DynamicMock(typeof (ICruiseRequest));
			cruiseRequest = (ICruiseRequest) cruiseRequestMock.MockInstance;
		}
Beispiel #12
0
        /// <summary>
        /// Grabs the associated log then executes the specified External
        /// Program passing the log as Standard Input. The Standard Output
        /// is then pushed back as an HtmlFragment.
        /// </summary>
        /// <param name="cruiseRequest">The Cruise Request.</param>
        /// <returns><seealso cref="HtmlFragmentResponse"/> with the output.</returns>
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            string log = buildRetriever.GetBuild(cruiseRequest.BuildSpecifier).Log;

            string result = "Failed To Execute External Program";

            try
            {
                using (Process externalProgram = new Process())
                {
                    externalProgram.StartInfo.FileName               = ExternalLogProcessor;
                    externalProgram.StartInfo.Arguments              = Arguments;
                    externalProgram.StartInfo.UseShellExecute        = false;
                    externalProgram.StartInfo.RedirectStandardInput  = true;
                    externalProgram.StartInfo.RedirectStandardOutput = true;

                    externalProgram.Start();
                    externalProgram.StandardInput.Write(log);
                    externalProgram.StandardInput.Close();
                    result = externalProgram.StandardOutput.ReadToEnd();

                    externalProgram.WaitForExit();
                }
            }
            catch (Exception ex)
            {
                // If we fail for any reason just toally bail out
                result = string.Format("Exception Encountered When Executing Program: {0}", ex.Message);
            }

            return(new HtmlFragmentResponse(result));
        }
Beispiel #13
0
        private IResponse GenerateAuditHistory(ICruiseRequest request)
        {
            var velocityContext = new Hashtable();
            var links           = new List <IAbsoluteLink>();

            links.Add(new ServerLink(request.UrlBuilder, request.ServerSpecifier, "Server", ActionName));

            ProjectStatusListAndExceptions projects = farmService.GetProjectStatusListAndCaptureExceptions(request.ServerSpecifier, request.RetrieveSessionToken());

            foreach (ProjectStatusOnServer projectStatusOnServer in projects.StatusAndServerList)
            {
                DefaultProjectSpecifier projectSpecifier = new DefaultProjectSpecifier(projectStatusOnServer.ServerSpecifier, projectStatusOnServer.ProjectStatus.Name);
                links.Add(new ProjectLink(request.UrlBuilder, projectSpecifier, projectSpecifier.ProjectName, ServerAuditHistoryServerPlugin.ActionName));
            }
            velocityContext["projectLinks"] = links;
            string sessionToken = request.RetrieveSessionToken(sessionRetriever);

            if (!string.IsNullOrEmpty(request.ProjectName))
            {
                velocityContext["currentProject"] = request.ProjectName;
                AuditFilterBase filter = AuditFilters.ByProject(request.ProjectName);
                velocityContext["auditHistory"] = farmService.ReadAuditRecords(request.ServerSpecifier, sessionToken, 0, 100, filter);
            }
            else
            {
                velocityContext["auditHistory"] = new ServerLink(request.UrlBuilder, request.ServerSpecifier, string.Empty, DiagnosticsActionName);
                velocityContext["auditHistory"] = farmService.ReadAuditRecords(request.ServerSpecifier, sessionToken, 0, 100);
            }

            return(viewGenerator.GenerateView(@"AuditHistory.vm", velocityContext));
        }
Beispiel #14
0
        public void ProcessRequest(HttpContext context)
        {
            ObjectGiver objectGiver = CreateObjectGiver(context);

            ICruiseRequest cruiseRequest = (ICruiseRequest)objectGiver.GiveObjectByType(typeof(ICruiseRequest));

            if (cruiseRequest.ServerName == "" || cruiseRequest.ProjectName == "" || cruiseRequest.BuildName == "")
            {
                throw new Exception("All of Server, Project and Build Names must be specified on request in order to retrieve a build log");
            }

            string log = ((IBuildRetriever)objectGiver.GiveObjectByType(typeof(IBuildRetriever))).GetBuild(cruiseRequest.BuildSpecifier).Log;

            context.Response.ContentType = "Text/XML";

            // None of this seems to have an effect - doh!
//			context.Response.Cache.SetExpires(DateTime.Now.AddDays(1));
//			context.Response.Cache.SetCacheability(HttpCacheability.Public);
//			context.Response.Cache.VaryByParams[RequestWrappingCruiseRequest.ServerQueryStringParameter] = true;
//			context.Response.Cache.VaryByParams[RequestWrappingCruiseRequest.ProjectQueryStringParameter] = true;
//			context.Response.Cache.VaryByParams[RequestWrappingCruiseRequest.BuildQueryStringParameter] = true;

            context.Response.Write(log);
            context.Response.Flush();
        }
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            if (xslFileName == null)
            {
                throw new ApplicationException("XSL File Name has not been set for XSL Report Action");
            }
            Hashtable xsltArgs = new Hashtable();

            if (cruiseRequest.Request.ApplicationPath == "/")
            {
                xsltArgs["applicationPath"] = string.Empty;
            }
            else
            {
                xsltArgs["applicationPath"] = cruiseRequest.Request.ApplicationPath;
            }

            // Add the input parameters
            if (Parameters != null)
            {
                foreach (var parameter in Parameters)
                {
                    xsltArgs.Add(parameter.Name, parameter.Value);
                }
            }

            return(new HtmlFragmentResponse(buildLogTransformer.Transform(cruiseRequest.BuildSpecifier, new string[] { xslFileName }, xsltArgs, cruiseRequest.RetrieveSessionToken())));
        }
 public IResponse Execute(ICruiseRequest cruiseRequest)
 {
     Hashtable velocityContext = new Hashtable();
     string userName = cruiseRequest.Request.GetText("userName");
     string template = @"UserNameLogin.vm";
     if (!string.IsNullOrEmpty(userName))
     {
         try
         {
             LoginRequest credentials = new LoginRequest(userName);
             string password = cruiseRequest.Request.GetText("password");
             if (!string.IsNullOrEmpty(password)) credentials.AddCredential(LoginRequest.PasswordCredential, password);
             string sessionToken = farmService.Login(cruiseRequest.ServerName, credentials);
             if (string.IsNullOrEmpty(sessionToken)) throw new CruiseControlException("Login failed!");
             storer.StoreSessionToken(sessionToken);
             template = "LoggedIn.vm";
         }
         catch (Exception error)
         {
             velocityContext["errorMessage"] = error.Message;
         }
     }
     velocityContext["hidePassword"] = hidePassword;
     return viewGenerator.GenerateView(template, velocityContext);
 }
Beispiel #17
0
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            IProjectSpecifier projectSpecifier = cruiseRequest.ProjectSpecifier;
            string            projectXml       = cruiseManager.GetProject(projectSpecifier, cruiseRequest.RetrieveSessionToken());

            return(new HtmlFragmentResponse("<pre>" + HttpUtility.HtmlEncode(FormatXml(projectXml)) + "</pre>"));
        }
 public void SetUp()
 {
     mockFarmService   = new DynamicMock(typeof(IFarmService));
     reportAction      = new ForceBuildXmlAction((IFarmService)mockFarmService.MockInstance);
     cruiseRequestMock = new DynamicMock(typeof(ICruiseRequest));
     cruiseRequest     = (ICruiseRequest)cruiseRequestMock.MockInstance;
 }
Beispiel #19
0
        /// <summary>
        /// Generates the data.
        /// </summary>
        /// <param name="cruiseRequest">The cruise request.</param>
        /// <returns>The XML data for the project.</returns>
        private IResponse GenerateData(ICruiseRequest cruiseRequest)
        {
            var builder  = new StringBuilder();
            var settings = new XmlWriterSettings
            {
                CheckCharacters     = true,
                ConformanceLevel    = ConformanceLevel.Document,
                Indent              = false,
                NewLineHandling     = NewLineHandling.None,
                NewLineOnAttributes = false,
                OmitXmlDeclaration  = true
            };
            var basePath = (cruiseRequest.Request.ApplicationPath == "/" ? string.Empty : cruiseRequest.Request.ApplicationPath) +
                           "/javascript/Timeline/images/";

            using (var xmlWriter = XmlWriter.Create(builder, settings))
            {
                xmlWriter.WriteStartElement("data");
                var builds = this.farmService.GetBuildSpecifiers(cruiseRequest.ProjectSpecifier, cruiseRequest.RetrieveSessionToken());
                foreach (var build in builds)
                {
                    this.AppendBuild(build, xmlWriter, basePath);
                }
                xmlWriter.WriteEndElement();
            }
            return(new XmlFragmentResponse(builder.ToString()));
        }
 /// <summary>
 /// Loads the HTML file.
 /// </summary>
 /// <returns></returns>
 private string LoadHtmlFile(ICruiseRequest cruiseRequest, string fileName)
 {
     try
     {
         // Retrieve the file transfer object
         var fileTransfer = farmService.RetrieveFileTransfer(cruiseRequest.BuildSpecifier, fileName, cruiseRequest.RetrieveSessionToken());
         if (fileTransfer != null)
         {
             // Transfer the file across and load it into a string
             var stream = new MemoryStream();
             fileTransfer.Download(stream);
             stream.Seek(0, SeekOrigin.Begin);
             var reader = new StreamReader(stream);
             string htmlData = reader.ReadToEnd();
             return htmlData;
         }
         else
         {
             return "<div>Unable to find file</div>";
         }
     }
     catch (Exception error)
     {
         return "<div>An error occurred while retrieving the file: " + error.Message + "</div>";
     }
 }
        public void ShouldUseBuildLogTransformerToGenerateView()
        {
            var buildLogTransformerMock = new Mock <IBuildLogTransformer>();
            var cruiseRequestMock       = new Mock <ICruiseRequest>();
            var buildSpecifierMock      = new Mock <IBuildSpecifier>();
            var requestStub             = new Mock <IRequest>();

            ICruiseRequest  cruiseRequest  = (ICruiseRequest)cruiseRequestMock.Object;
            IBuildSpecifier buildSpecifier = (IBuildSpecifier)buildSpecifierMock.Object;
            IRequest        request        = (IRequest)requestStub.Object;

            cruiseRequestMock.SetupGet(_cruiseRequest => _cruiseRequest.BuildSpecifier).Returns(buildSpecifier).Verifiable();
            cruiseRequestMock.SetupGet(_cruiseRequest => _cruiseRequest.Request).Returns(request).Verifiable();
            requestStub.SetupGet(_request => _request.ApplicationPath).Returns("myAppPath").Verifiable();
            buildLogTransformerMock.Setup(transformer => transformer.Transform(buildSpecifier, new string[] { @"xsl\myxsl.xsl" }, It.Is <Hashtable>(t => t.Count == 1 && (string)t["applicationPath"] == "myAppPath"), null)).
            Returns("transformed").Verifiable();

            XslReportBuildAction action = new XslReportBuildAction((IBuildLogTransformer)buildLogTransformerMock.Object, null);

            action.XslFileName = @"xsl\myxsl.xsl";

            Assert.AreEqual("transformed", ((HtmlFragmentResponse)action.Execute(cruiseRequest)).ResponseFragment);

            buildLogTransformerMock.Verify();
            cruiseRequestMock.Verify();
            buildSpecifierMock.Verify();
        }
Beispiel #22
0
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            if (xslFileName == null)
            {
                throw new ApplicationException("XSL File Name has not been set for XSL Report Action");
            }
            Hashtable xsltArgs = new Hashtable();

            xsltArgs["applicationPath"] = cruiseRequest.Request.ApplicationPath;

            string xslFile            = pathProvider.GetFullPathFor(XslFileName);
            string statisticsDocument = farmService.GetStatisticsDocument(cruiseRequest.ProjectSpecifier, cruiseRequest.RetrieveSessionToken());

            Log.Debug(statisticsDocument);
            string htmlFragment;

            try
            {
                htmlFragment = transformer.Transform(statisticsDocument, xslFile, xsltArgs);
            }
            catch (CruiseControlException)
            {
                htmlFragment = "Missing/Invalid statistics reports. Please check if you have enabled the Statistics Publisher, and statistics have been collected atleast once after that.";
            }
            return(new HtmlFragmentResponse(htmlFragment));
        }
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            Hashtable xsltArgs = new Hashtable();

            if (cruiseRequest.Request.ApplicationPath == "/")
            {
                xsltArgs["applicationPath"] = string.Empty;
            }
            else
            {
                xsltArgs["applicationPath"] = cruiseRequest.Request.ApplicationPath;
            }

            xsltArgs["onlyShowBuildsWithModifications"] = OnlyShowBuildsWithModifications;

            string HistoryDocument = farmService.GetModificationHistoryDocument(cruiseRequest.ProjectSpecifier, cruiseRequest.RetrieveSessionToken());

            if (HistoryDocument.Length == 0)
            {
                return(new HtmlFragmentResponse("No history Data found, make sure you use the modificationHistory Publisher for this project"));
            }
            else
            {
                string xslFile = pathProvider.GetFullPathFor(XslFileName);
                return(new HtmlFragmentResponse(transformer.Transform(HistoryDocument, xslFile, xsltArgs)));
            }
        }
Beispiel #24
0
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            if (xslFileName == null)
            {
                throw new ApplicationException("XSL File Name has not been set for XSL Report Action");
            }
            string ArctifactDirectoryName = cruiseRequest.BuildName.Substring("log".Length, "yyyyMMddHHmmss".Length);

            Uri url = new Uri(string.Format(@"{0}/{1}/{2}", System.Web.HttpContext.Current.Server.MapPath(this.ArtifactRootUrl), ArctifactDirectoryName, this.XmlFileName));

            WebRequest       request   = WebRequest.Create(url);
            WebResponse      response  = request.GetResponse();
            StringWriter     output    = new StringWriter();
            XsltArgumentList XslParams = new XsltArgumentList();

            XslParams.AddParam("CCNetServer", "", cruiseRequest.ServerName);
            XslParams.AddParam("CCNetBuild", "", cruiseRequest.BuildName);
            XslParams.AddParam("CCNetProject", "", cruiseRequest.ProjectName);
            XslParams.AddParam("applicationPath", "", cruiseRequest.Request.ApplicationPath);
            using (Stream inputReader = response.GetResponseStream())
            {
                XslTransform transform = new XslTransform();
                transform.Load(System.Web.HttpContext.Current.Server.MapPath(xslFileName));
                transform.Transform(new XPathDocument(inputReader), XslParams, output);
            }

            return(new HtmlFragmentResponse(output.ToString()));
        }
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            Hashtable velocityContext = new Hashtable();
            velocityContext["message"] = string.Empty;
            velocityContext["error"] = string.Empty;
            string oldPassword = cruiseRequest.Request.GetText("oldPassword");
            string newPassword1 = cruiseRequest.Request.GetText("newPassword1");
            string newPassword2 = cruiseRequest.Request.GetText("newPassword2");
            if (!string.IsNullOrEmpty(oldPassword) &&
                !string.IsNullOrEmpty(newPassword1))
            {
                try
                {
                    if (newPassword1 != newPassword2) throw new CruiseControlException("New passwords do not match");
					string sessionToken = cruiseRequest.RetrieveSessionToken();
                    farmService.ChangePassword(cruiseRequest.ServerName, sessionToken, oldPassword, newPassword1);
                    velocityContext["message"] = "Password has been changed";
                }
                catch (Exception error)
                {
                    velocityContext["error"] = error.Message;
                }
            }
            return viewGenerator.GenerateView("ChangePasswordAction.vm", velocityContext);
        }
        public IResponse Execute(ICruiseRequest request)
        {
            Hashtable velocityContext = new Hashtable();
            velocityContext["log"] = farmService.GetServerLog(request.ServerSpecifier);

            return viewGenerator.GenerateView(@"ServerLog.vm", velocityContext);
        }
Beispiel #27
0
        public void ShouldUseBuildLogTransformerToGenerateView()
        {
            DynamicMock buildLogTransformerMock = new DynamicMock(typeof(IBuildLogTransformer));
            DynamicMock cruiseRequestMock       = new DynamicMock(typeof(ICruiseRequest));
            DynamicMock buildSpecifierMock      = new DynamicMock(typeof(IBuildSpecifier));
            DynamicMock requestStub             = new DynamicMock(typeof(IRequest));

            ICruiseRequest  cruiseRequest  = (ICruiseRequest)cruiseRequestMock.MockInstance;
            IBuildSpecifier buildSpecifier = (IBuildSpecifier)buildSpecifierMock.MockInstance;
            IRequest        request        = (IRequest)requestStub.MockInstance;

            cruiseRequestMock.ExpectAndReturn("BuildSpecifier", buildSpecifier);
            cruiseRequestMock.SetupResult("Request", request);
            requestStub.SetupResult("ApplicationPath", "myAppPath");
            Hashtable expectedXsltArgs = new Hashtable();

            expectedXsltArgs["applicationPath"] = "myAppPath";
            buildLogTransformerMock.ExpectAndReturn("Transform", "transformed", buildSpecifier, new string[] { @"xsl\myxsl.xsl" }, new HashtableConstraint(expectedXsltArgs), null);

            XslReportBuildAction action = new XslReportBuildAction((IBuildLogTransformer)buildLogTransformerMock.MockInstance, null);

            action.XslFileName = @"xsl\myxsl.xsl";

            Assert.AreEqual("transformed", ((HtmlFragmentResponse)action.Execute(cruiseRequest)).ResponseFragment);

            buildLogTransformerMock.Verify();
            cruiseRequestMock.Verify();
            buildSpecifierMock.Verify();
        }
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            string stepId = cruiseRequest.Request.GetText(@"testStepId");

            if (stepId.Length == 0)
            {
                throw new InvalidOperationException("Missing test step id.");
            }

            string attachmentName = cruiseRequest.Request.GetText(@"attachmentName");

            if (attachmentName.Length == 0)
            {
                throw new InvalidOperationException("Missing attachment name.");
            }

            Build          build         = buildRetriever.GetBuild(cruiseRequest.BuildSpecifier, cruiseRequest.RetrieveSessionToken());
            var            document      = new XPathDocument(new StringReader(build.Log));
            XPathNavigator rootNavigator = document.CreateNavigator();
            var            nsmgr         = new XmlNamespaceManager(rootNavigator.NameTable);

            nsmgr.AddNamespace(@"g", NamespaceUri);
            XPathNavigator testStepNavigator   = FindTestStepNode(rootNavigator, nsmgr, stepId);
            XPathNavigator attachmentNavigator = FindAttachmentNode(testStepNavigator, nsmgr, attachmentName);

            return(CreateResponseFromAttachment(attachmentNavigator));
        }
        public IResponse Execute(ICruiseRequest request)
        {
            Hashtable velocityContext = new Hashtable();
            ArrayList links = new ArrayList();
            links.Add(new ServerLink(request.UrlBuilder, request.ServerSpecifier, "Server Security Configuration", ActionName));

            ProjectStatusListAndExceptions projects = farmService.GetProjectStatusListAndCaptureExceptions(request.ServerSpecifier, request.RetrieveSessionToken());
            foreach (ProjectStatusOnServer projectStatusOnServer in projects.StatusAndServerList)
            {
                DefaultProjectSpecifier projectSpecifier = new DefaultProjectSpecifier(projectStatusOnServer.ServerSpecifier, projectStatusOnServer.ProjectStatus.Name);
                links.Add(new ProjectLink(request.UrlBuilder, projectSpecifier, projectSpecifier.ProjectName, ServerSecurityConfigurationServerPlugin.ActionName));
            }
            velocityContext["projectLinks"] = links;
            string sessionToken = request.RetrieveSessionToken(sessionRetriever);
            string securityConfig = farmService.GetServerSecurity(request.ServerSpecifier, sessionToken);
            XmlDocument document = new XmlDocument();
            document.LoadXml(securityConfig);
            if (string.IsNullOrEmpty(request.ProjectName))
            {
                securityConfig = document.SelectSingleNode("/security/manager").OuterXml;
            }
            else
            {
                velocityContext["currentProject"] = request.ProjectSpecifier.ProjectName;
                string xpath = string.Format("/security/projects/projectSecurity[name='{0}']/authorisation", request.ProjectSpecifier.ProjectName);
                securityConfig = document.SelectSingleNode(xpath).OuterXml;
            }
            string xmlData = FormatXml(securityConfig);
            velocityContext["log"] = xmlData;

            return viewGenerator.GenerateView(@"SecurityConfiguration.vm", velocityContext);
        }
        /// <summary>
        /// Execute the action.
        /// </summary>
        /// <param name="cruiseRequest"></param>
        /// <returns></returns>
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            var velocityContext = new Hashtable();

            velocityContext["url"] = string.Format(System.Globalization.CultureInfo.CurrentCulture, "RetrieveBuildFile.aspx?file={0}", HtmlFileName);
            return(viewGenerator.GenerateView("HtmlReport.vm", velocityContext));
        }
Beispiel #31
0
        public IResponse Execute(ICruiseRequest request)
        {
            var velocityContext = new Hashtable();

            this.translations = Translations.RetrieveCurrent();

            var projectStatus = farmService.GetProjectStatusListAndCaptureExceptions(request.RetrieveSessionToken());
            var urlBuilder    = request.UrlBuilder;
            var category      = request.Request.GetText("Category");

            var gridRows = this.projectGrid.GenerateProjectGridRows(projectStatus.StatusAndServerList, BaseActionName,
                                                                    ProjectGridSortColumn.Category, true,
                                                                    category, urlBuilder, this.translations);

            var categories = new SortedDictionary <string, CategoryInformation>();

            foreach (var row in gridRows)
            {
                var rowCategory = row.Category;
                CategoryInformation categoryRows;
                if (!categories.TryGetValue(rowCategory, out categoryRows))
                {
                    categoryRows = new CategoryInformation(rowCategory);
                    categories.Add(rowCategory, categoryRows);
                }

                categoryRows.AddRow(row);
            }

            velocityContext["categories"] = categories.Values;

            return(viewGenerator.GenerateView("CategorizedFarmReport.vm", velocityContext));
        }
        public IResponse Execute(ICruiseRequest cruiseRequest)
        {
            Hashtable velocityContext = new Hashtable();
            string    userName        = cruiseRequest.Request.GetText("userName");
            string    template        = @"UserNameLogin.vm";

            if (!string.IsNullOrEmpty(userName))
            {
                try
                {
                    LoginRequest credentials = new LoginRequest(userName);
                    string       password    = cruiseRequest.Request.GetText("password");
                    if (!string.IsNullOrEmpty(password))
                    {
                        credentials.AddCredential(LoginRequest.PasswordCredential, password);
                    }
                    string sessionToken = farmService.Login(cruiseRequest.ServerName, credentials);
                    if (string.IsNullOrEmpty(sessionToken))
                    {
                        throw new CruiseControlException("Login failed!");
                    }
                    storer.StoreSessionToken(sessionToken);
                    template = "LoggedIn.vm";
                }
                catch (Exception error)
                {
                    velocityContext["errorMessage"] = error.Message;
                }
            }
            velocityContext["hidePassword"] = hidePassword;
            return(viewGenerator.GenerateView(template, velocityContext));
        }
Beispiel #33
0
 /// <summary>
 /// Loads the HTML file.
 /// </summary>
 /// <returns></returns>
 private string LoadHtmlFile(ICruiseRequest cruiseRequest, string fileName)
 {
     try
     {
         // Retrieve the file transfer object
         var fileTransfer = farmService.RetrieveFileTransfer(cruiseRequest.BuildSpecifier, fileName, cruiseRequest.RetrieveSessionToken());
         if (fileTransfer != null)
         {
             // Transfer the file across and load it into a string
             var stream = new MemoryStream();
             fileTransfer.Download(stream);
             stream.Seek(0, SeekOrigin.Begin);
             var    reader   = new StreamReader(stream);
             string htmlData = reader.ReadToEnd();
             return(htmlData);
         }
         else
         {
             return("<div>Unable to find file</div>");
         }
     }
     catch (Exception error)
     {
         return("<div>An error occurred while retrieving the file: " + error.Message + "</div>");
     }
 }
Beispiel #34
0
        private string GetPluginSubReport(ICruiseRequest cruiseRequest,
                                          IProjectSpecifier projectSpecifier, IBuildSpecifier[] buildSpecifiers)
        {
            if (buildSpecifiers.Length > 0 && pluginNames != null)
            {
                string outputResponse = String.Empty;

                ModifiedCruiseRequest req = new ModifiedCruiseRequest(cruiseRequest.Request, cruiseRequest.UrlBuilder);
                req.ReplaceBuildSpecifier(buildSpecifiers[0]);

                foreach (IBuildPlugin buildPlugIn in pluginNames)
                {
                    if (buildPlugIn != null && buildPlugIn.IsDisplayedForProject(projectSpecifier) &&
                        buildPlugIn.NamedActions != null)
                    {
                        foreach (INamedAction namedAction in buildPlugIn.NamedActions)
                        {
                            IResponse resp = namedAction.Action.Execute(req);

                            if (resp != null && resp is HtmlFragmentResponse)
                            {
                                outputResponse += ((HtmlFragmentResponse)resp).ResponseFragment;
                            }
                        }
                    }
                }
                return(outputResponse);
            }
            return(null);
        }
        public IResponse Execute(ICruiseRequest request)
        {
            Hashtable velocityContext = new Hashtable();
            var       links           = new List <IAbsoluteLink>();

            links.Add(new ServerLink(urlBuilder, request.ServerSpecifier, "Server Log", ActionName));

            ProjectStatusListAndExceptions projects = farmService.GetProjectStatusListAndCaptureExceptions(request.ServerSpecifier,
                                                                                                           request.RetrieveSessionToken());

            foreach (ProjectStatusOnServer projectStatusOnServer in projects.StatusAndServerList)
            {
                DefaultProjectSpecifier projectSpecifier = new DefaultProjectSpecifier(projectStatusOnServer.ServerSpecifier, projectStatusOnServer.ProjectStatus.Name);
                links.Add(new ProjectLink(urlBuilder, projectSpecifier, projectSpecifier.ProjectName, ServerLogProjectPlugin.ActionName));
            }
            velocityContext["projectLinks"] = links;
            if (string.IsNullOrEmpty(request.ProjectName))
            {
                velocityContext["log"] = HttpUtility.HtmlEncode(farmService.GetServerLog(request.ServerSpecifier, request.RetrieveSessionToken()));
            }
            else
            {
                velocityContext["currentProject"] = request.ProjectSpecifier.ProjectName;
                velocityContext["log"]            = HttpUtility.HtmlEncode(farmService.GetServerLog(request.ProjectSpecifier, request.RetrieveSessionToken()));
            }

            return(viewGenerator.GenerateView(@"ServerLog.vm", velocityContext));
        }
		public void Setup()
		{
            ProjectStatusOnServer server = new ProjectStatusOnServer(new ProjectStatus("myProject", IntegrationStatus.Success, DateTime.Now),
                new DefaultServerSpecifier("myServer"));
            ProjectStatusListAndExceptions statusList = new ProjectStatusListAndExceptions(
                new ProjectStatusOnServer[] {
                    server
                }, new CruiseServerException[] {
                });

			farmServiceMock = new DynamicMock(typeof(IFarmService));
            farmServiceMock.SetupResult("GetProjectStatusListAndCaptureExceptions", statusList, typeof(IServerSpecifier), typeof(string));
			viewGeneratorMock = new DynamicMock(typeof(IVelocityViewGenerator));
			linkFactoryMock = new DynamicMock(typeof(ILinkFactory));
            ServerLocation serverConfig = new ServerLocation();
            serverConfig.ServerName = "myServer";
            configuration.Servers = new ServerLocation[] {
                serverConfig
            };
            var urlBuilderMock = new DynamicMock(typeof(ICruiseUrlBuilder));
            urlBuilderMock.SetupResult("BuildProjectUrl", string.Empty, typeof(string), typeof(IProjectSpecifier));

			plugin = new ProjectReportProjectPlugin((IFarmService) farmServiceMock.MockInstance,
				(IVelocityViewGenerator) viewGeneratorMock.MockInstance,
				(ILinkFactory) linkFactoryMock.MockInstance,
                configuration,
                (ICruiseUrlBuilder)urlBuilderMock.MockInstance);

			cruiseRequestMock = new DynamicMock(typeof(ICruiseRequest));
			cruiseRequest = (ICruiseRequest ) cruiseRequestMock.MockInstance;

		}
 public void SetUp()
 {
     mockFarmService   = new Mock <IFarmService>();
     reportAction      = new ForceBuildXmlAction((IFarmService)mockFarmService.Object);
     cruiseRequestMock = new Mock <ICruiseRequest>();
     cruiseRequest     = (ICruiseRequest)cruiseRequestMock.Object;
 }
        public void Setup()
        {
            ProjectStatusOnServer server = new ProjectStatusOnServer(new ProjectStatus("myProject", IntegrationStatus.Success, DateTime.Now),
                                                                     new DefaultServerSpecifier("myServer"));
            ProjectStatusListAndExceptions statusList = new ProjectStatusListAndExceptions(
                new ProjectStatusOnServer[] {
                server
            }, new CruiseServerException[] {
            });

            farmServiceMock = new DynamicMock(typeof(IFarmService));
            farmServiceMock.SetupResult("GetProjectStatusListAndCaptureExceptions", statusList, typeof(IServerSpecifier), typeof(string));
            viewGeneratorMock = new DynamicMock(typeof(IVelocityViewGenerator));
            linkFactoryMock   = new DynamicMock(typeof(ILinkFactory));
            ServerLocation serverConfig = new ServerLocation();

            serverConfig.ServerName = "myServer";
            configuration.Servers   = new ServerLocation[] {
                serverConfig
            };
            var urlBuilderMock = new DynamicMock(typeof(ICruiseUrlBuilder));

            urlBuilderMock.SetupResult("BuildProjectUrl", string.Empty, typeof(string), typeof(IProjectSpecifier));

            plugin = new ProjectReportProjectPlugin((IFarmService)farmServiceMock.MockInstance,
                                                    (IVelocityViewGenerator)viewGeneratorMock.MockInstance,
                                                    (ILinkFactory)linkFactoryMock.MockInstance,
                                                    configuration,
                                                    (ICruiseUrlBuilder)urlBuilderMock.MockInstance);

            cruiseRequestMock = new DynamicMock(typeof(ICruiseRequest));
            cruiseRequest     = (ICruiseRequest )cruiseRequestMock.MockInstance;
        }
	    public IResponse Execute(ICruiseRequest cruiseRequest)
		{
			if (xslFileName == null)
			{
				throw new ApplicationException("XSL File Name has not been set for XSL Report Action");
			}
			Hashtable xsltArgs = new Hashtable();
            if (cruiseRequest.Request.ApplicationPath == "/")
            {
                xsltArgs["applicationPath"] = string.Empty;
            }
            else
            {
                xsltArgs["applicationPath"] = cruiseRequest.Request.ApplicationPath;
            }

            // Add the input parameters
            if (Parameters != null)
            {
                foreach (var parameter in Parameters)
                {
                    xsltArgs.Add(parameter.Name, parameter.Value);
                }
            }

			return new HtmlFragmentResponse(buildLogTransformer.Transform(cruiseRequest.BuildSpecifier, new string[] {xslFileName}, xsltArgs, cruiseRequest.RetrieveSessionToken()));
		}
        public IResponse Execute(ICruiseRequest request)
        {
            Hashtable velocityContext = new Hashtable();

            velocityContext["log"] = farmService.GetServerLog(request.ServerSpecifier);

            return(viewGenerator.GenerateView(@"ServerLog.vm", velocityContext));
        }
 public IResponse Execute(ICruiseRequest cruiseRequest)
 {
     if (xslFileName == null)
     {
         throw new ApplicationException("XSL File Name has not been set for XSL Report Action");
     }
     return new HtmlFragmentResponse(buildLogTransformer.Transform(cruiseRequest.BuildSpecifier, xslFileName));
 }
		public IResponse Execute(ICruiseRequest request)
		{
            request.Request.RefreshInterval = RefreshInterval;

            this.projectGridAction.DefaultSortColumn = sortColumn;
            this.projectGridAction.SuccessIndicatorBarLocation = this.SuccessIndicatorBarLocation;
            return projectGridAction.Execute(ACTION_NAME, request.ServerSpecifier, request);
		}
 /// <summary>
 /// Executes the specified cruise request.
 /// </summary>
 /// <param name="cruiseRequest">The cruise request.</param>
 /// <returns></returns>
 public IResponse Execute(ICruiseRequest cruiseRequest)
 {
     ProjectStatusListAndExceptions projectStatuses = farmService.GetProjectStatusListAndCaptureExceptions(cruiseRequest.ServerSpecifier,
         cruiseRequest.RetrieveSessionToken(sessionRetriever));
     ProjectStatus projectStatus = projectStatuses.GetStatusForProject(cruiseRequest.ProjectName);
     string xml = new CruiseXmlWriter().Write(projectStatus);
     return new XmlFragmentResponse(xml);
 }
		public void Setup()
		{
			viewBuilderMock = new DynamicMock(typeof(IDeleteProjectViewBuilder));
			showDeleteProjectAction = new ShowDeleteProjectAction((IDeleteProjectViewBuilder) viewBuilderMock.MockInstance);

			cruiseRequestMock = new DynamicMock(typeof(ICruiseRequest));
			cruiseRequest = (ICruiseRequest) cruiseRequestMock.MockInstance;
		}
 public IResponse Execute(ICruiseRequest cruiseRequest)
 {
     if (xslFileName == null)
     {
         throw new ApplicationException("XSL File Name has not been set for XSL Report Action");
     }
     return(new HtmlFragmentResponse(buildLogTransformer.Transform(cruiseRequest.BuildSpecifier, xslFileName)));
 }
        public void Setup()
        {
            viewBuilderMock         = new DynamicMock(typeof(IDeleteProjectViewBuilder));
            showDeleteProjectAction = new ShowDeleteProjectAction((IDeleteProjectViewBuilder)viewBuilderMock.MockInstance);

            cruiseRequestMock = new DynamicMock(typeof(ICruiseRequest));
            cruiseRequest     = (ICruiseRequest)cruiseRequestMock.MockInstance;
        }
        public IResponse Execute(ICruiseRequest request)
        {
            request.Request.RefreshInterval = RefreshInterval;

            this.projectGridAction.DefaultSortColumn           = sortColumn;
            this.projectGridAction.SuccessIndicatorBarLocation = this.SuccessIndicatorBarLocation;
            return(projectGridAction.Execute(ACTION_NAME, request.ServerSpecifier, request));
        }
 /// <summary>
 /// Processes an incoming request.
 /// </summary>
 /// <param name="cruiseRequest">The request to process.</param>
 /// <returns>An XML fragment containing the response from the server.</returns>
 public IResponse Execute(ICruiseRequest cruiseRequest)
 {
     string action = cruiseRequest.Request.GetText("action");
     string message = cruiseRequest.Request.GetText("message");
     string response = farmService.ProcessMessage(cruiseRequest.ServerSpecifier,
         action,
         message);
     return new XmlFragmentResponse(response);
 }
 public SideBarViewBuilder(ICruiseRequest request, IBuildNameRetriever buildNameRetriever, IRecentBuildsViewBuilder recentBuildsViewBuilder, IPluginLinkCalculator pluginLinkCalculator, IVelocityViewGenerator velocityViewGenerator, ILinkFactory linkFactory)
 {
     this.request = request;
     this.buildNameRetriever = buildNameRetriever;
     this.recentBuildsViewBuilder = recentBuildsViewBuilder;
     this.pluginLinkCalculator = pluginLinkCalculator;
     this.velocityViewGenerator = velocityViewGenerator;
     this.linkFactory = linkFactory;
 }
 public IResponse Execute(ICruiseRequest cruiseRequest)
 {
     IProjectSpecifier projectSpecifier = cruiseRequest.ProjectSpecifier;
     string projectXml = cruiseManager.GetProject(projectSpecifier, cruiseRequest.RetrieveSessionToken());
     //return new HtmlFragmentResponse("<pre><code>" + HttpUtility.HtmlEncode(FormatXml(projectXml)) + "</code></pre>");
     var xmlContext = new Hashtable();
     xmlContext["xml"] = HttpUtility.HtmlEncode(FormatXml(projectXml));
     return viewGenerator.GenerateView(@"ProjectConfiguration.vm", xmlContext);
 }
 public IResponse Execute(ICruiseRequest request)
 {
     IProjectSpecifier projectSpecifier = request.ProjectSpecifier;
     bool purgeWorkingDirectory = request.Request.GetChecked("PurgeWorkingDirectory");
     bool purgeArtifactDirectory = request.Request.GetChecked("PurgeArtifactDirectory");
     bool purgeSourceControlEnvironment = request.Request.GetChecked("PurgeSourceControlEnvironment");
     farmService.DeleteProject(projectSpecifier, purgeWorkingDirectory, purgeArtifactDirectory, purgeSourceControlEnvironment);
     return viewBuilder.BuildView(BuildModel(projectSpecifier, purgeWorkingDirectory, purgeArtifactDirectory, purgeSourceControlEnvironment));
 }
		public IResponse Execute(ICruiseRequest cruiseRequest)
		{
			Hashtable velocityContext = new Hashtable();
			string sessionToken = cruiseRequest.RetrieveSessionToken();
			if (!string.IsNullOrEmpty(sessionToken))
				farmService.Logout(cruiseRequest.ServerName, sessionToken);
			storer.StoreSessionToken(null);
			return viewGenerator.GenerateView("LoggedOut.vm", velocityContext);
		}
        public IResponse Execute(ICruiseRequest request)
        {
            Hashtable velocityContext = new Hashtable();

            velocityContext["serverversion"] = farmService.GetServerVersion(request.ServerSpecifier);
            velocityContext["servername"] = request.ServerSpecifier.ServerName;

            return viewGenerator.GenerateView(@"ServerInfo.vm", velocityContext);
        }
		public void Setup()
		{
			farmServiceMock = new DynamicMock(typeof(IFarmService));
			linkFactoryMock = new DynamicMock(typeof(ILinkFactory));
			plugin = new LatestBuildReportProjectPlugin((IFarmService) farmServiceMock.MockInstance,
			                                            (ILinkFactory) linkFactoryMock.MockInstance);

			cruiseRequestMock = new DynamicMock(typeof(ICruiseRequest));
			cruiseRequest = (ICruiseRequest) cruiseRequestMock.MockInstance;
		}
	    public TopControlsViewBuilder(ICruiseRequest request, ILinkFactory linkFactory, IVelocityViewGenerator velocityViewGenerator,
            IFarmService farmService, IFingerprintFactory fingerprintFactory, ISessionRetriever sessionRetriever)
		{
			this.request = request;
			this.linkFactory = linkFactory;
			this.velocityViewGenerator = velocityViewGenerator;
			this.farmService = farmService;
		    this.fingerprintFactory = fingerprintFactory;
            this.sessionRetriever = sessionRetriever;
		}
 public LoginViewBuilder(ICruiseRequest request, ILinkFactory linkFactory, 
     IVelocityViewGenerator velocityViewGenerator, IDashboardConfiguration configuration,
     ISessionStorer storer)
 {
     this.request = request;
     this.linkFactory = linkFactory;
     this.velocityViewGenerator = velocityViewGenerator;
     this.configuration = configuration;
     this.storer = storer;
 }
 public IResponse Execute(ICruiseRequest cruiseRequest)
 {
     string fileName = cruiseRequest.Request.GetText("file");
     string label = cruiseRequest.Request.GetText("label");
     string path = fileName;
     if (!string.IsNullOrEmpty(label)) path = Path.Combine(label, fileName);
     RemotingFileTransfer fileTransfer = farmService.RetrieveFileTransfer(cruiseRequest.ProjectSpecifier, path, cruiseRequest.RetrieveSessionToken());
     FileTransferResponse response = new FileTransferResponse(fileTransfer, fileName);
     return response;
 }
 public IResponse Execute(ICruiseRequest cruiseRequest)
 {
     if (cruiseRequest.BuildName == string.Empty)
     {
         return errorViewBuilder.BuildView(string.Format("Error - Action [{0}] expects Build Name to be specified in request", proxiedAction.GetType().FullName));
     }
     else
     {
         return proxiedAction.Execute(cruiseRequest);
     }
 }
 public IResponse Execute(ICruiseRequest cruiseRequest)
 {
     if (this.XslFileNames == null)
     {
         throw new ApplicationException("XSL File Name has not been set for XSL Report Action");
     }
     Hashtable xsltArgs = new Hashtable();
     xsltArgs["applicationPath"] = cruiseRequest.Request.ApplicationPath;
     var fileNames = this.GenerateFilenameList(cruiseRequest);
     return new HtmlFragmentResponse(buildLogTransformer.Transform(cruiseRequest.BuildSpecifier, fileNames.ToArray(), xsltArgs, cruiseRequest.RetrieveSessionToken()));
 }
		public void Setup()
		{
			viewBuilderMock = new DynamicMock(typeof(IDeleteProjectViewBuilder));
			farmServiceMock = new DynamicMock(typeof(IFarmService));
			doDeleteProjectAction = new DoDeleteProjectAction((IDeleteProjectViewBuilder) viewBuilderMock.MockInstance, (IFarmService) farmServiceMock.MockInstance);

			cruiseRequestMock = new DynamicMock(typeof(ICruiseRequest));
			cruiseRequest = (ICruiseRequest) cruiseRequestMock.MockInstance;
			requestMock = new DynamicMock(typeof(IRequest));
			cruiseRequestMock.SetupResult("Request", requestMock.MockInstance);
		}