public void TestDownloadFiles() { CrmServiceClient crmSvc = new CrmServiceClient(ConfigurationManager.ConnectionStrings["integration_testing"].ConnectionString); var userId = crmSvc.GetMyCrmUserId(); var trace = new TraceLogger(); var task = new DownloadWebresourceFileTask(crmSvc, trace); var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\..\Webresources"); task.Execute(path); }
public void TestDownloadnNewFiles() { // Test that the files are downloaded and added to the spkl.json // as well as saved to disc // Arrange var config = A.Fake <ConfigFile>(a => a.CallsBaseMethods()); config.filePath = @"C:\tests\"; config.solutions = new List <SolutionPackageConfig>() { new SolutionPackageConfig() { solution_uniquename = "testsolution", map = new List <SolutionPackageMap>() { new SolutionPackageMap() { map = MapTypes.path, from = "WebResources\\*.*", to = "WebResourcesFiles\\**" } } } }; IDirectoryService directoryService; IOrganizationService service; TraceLogger trace; Arrange(config, out directoryService, out service, out trace); A.CallTo(() => directoryService.SaveFile( A <string> .Ignored, A <byte[]> .Ignored, A <bool> .Ignored)).Invokes((string name, byte[] content, bool overwrite) => { Assert.AreEqual(@"C:\tests\WebResourcesFiles\new_\foo\bar.js", name); }); A.CallTo(() => service.Execute(A <OrganizationRequest> .Ignored)) .ReturnsLazily((OrganizationRequest request) => { var query = request as RetrieveMultipleRequest; Assert.IsNotNull(query); var expression = query.Query as QueryExpression; Assert.IsNotNull(expression); Assert.AreEqual(WebResource.EntityLogicalName, expression.EntityName); var list = new List <Entity>() { new WebResource { Name = @"new_\foo\bar.js", Description = @"something", DisplayName = @"new_\foo\bar.js", Content = Convert.ToBase64String(Encoding.ASCII.GetBytes("test")) } }; var response = new RetrieveMultipleResponse(); response.Results["EntityCollection"] = new EntityCollection(list); response.ResponseName = "RetrieveMultipleResponse"; return(response); }); // Act var task = new DownloadWebresourceFileTask(service, trace); task.Execute(config.filePath); // Assert Assert.AreEqual(1, config.webresources[0].files.Count); Assert.AreEqual(@"new_\foo\bar.js", config.webresources[0].files[0].uniquename); Assert.AreEqual(@"new_\foo\bar.js", config.webresources[0].files[0].displayname); Assert.AreEqual(@"WebResourcesFiles\new_\foo\bar.js", config.webresources[0].files[0].file); A.CallTo(() => config.Save()).MustHaveHappened(Repeated.Exactly.Once); }
public void TestDownloadExistingFilesWithRoot() { // Test that if we are using a root folder path in the spkl.json then // it is used when adding the file locations // Also check that the spkl.json isn't added to if the files are there already var config = A.Fake <ConfigFile>(a => a.CallsBaseMethods()); config.filePath = @"C:\tests\another"; config.solutions = new List <SolutionPackageConfig>() { new SolutionPackageConfig() { solution_uniquename = "testsolution", map = new List <SolutionPackageMap>() { new SolutionPackageMap() { map = MapTypes.path, from = "WebResources\\*.*", to = "WebResourcesFiles\\**" } } } }; config.webresources = new List <WebresourceDeployConfig>() { new WebresourceDeployConfig() { root = "root_folder", files = new List <WebResourceFile>() { new WebResourceFile() { uniquename = @"new_\foo\bar.js", displayname = @"new_\foo\bar.js", file = @"WebResourcesFiles\new_\foo\bar.js" } } } }; IDirectoryService directoryService; IOrganizationService service; TraceLogger trace; Arrange(config, out directoryService, out service, out trace); A.CallTo(() => directoryService.SaveFile( A <string> .Ignored, A <byte[]> .Ignored, A <bool> .Ignored)).Invokes((string name, byte[] content, bool overwrite) => { Assert.AreEqual(@"C:\tests\another\root_folder\WebResourcesFiles\new_\foo\bar.js", name); }); A.CallTo(() => service.Execute(A <OrganizationRequest> .Ignored)) .ReturnsLazily((OrganizationRequest request) => { var query = request as RetrieveMultipleRequest; Assert.IsNotNull(query); var expression = query.Query as QueryExpression; Assert.IsNotNull(expression); Assert.AreEqual(WebResource.EntityLogicalName, expression.EntityName); var list = new List <Entity>() { new WebResource { Name = @"new_\foo\bar.js", Description = @"something", DisplayName = @"new_\foo\bar.js", Content = Convert.ToBase64String(Encoding.ASCII.GetBytes("test")) } }; var response = new RetrieveMultipleResponse(); response.Results["EntityCollection"] = new EntityCollection(list); response.ResponseName = "RetrieveMultipleResponse"; return(response); }); // Act var task = new DownloadWebresourceFileTask(service, trace); task.Execute(config.filePath); // Assert // There shouldn't be any additional files added because they were already there Assert.AreEqual(1, config.webresources[0].files.Count); Assert.AreEqual(@"new_\foo\bar.js", config.webresources[0].files[0].uniquename); Assert.AreEqual(@"new_\foo\bar.js", config.webresources[0].files[0].displayname); Assert.AreEqual(@"WebResourcesFiles\new_\foo\bar.js", config.webresources[0].files[0].file); A.CallTo(() => config.Save()).MustHaveHappened(Repeated.Exactly.Once); }