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>")); }
/// <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 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; }
/// <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)); }
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 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); }
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; }
/// <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(); }
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))); } }
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); }
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)); }
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)); }
/// <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>"); } }
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); }