示例#1
0
        public void ConfigurationRedirection()
        {
            //Inject test config to UpdateManager instance, using reflection.
            var config = new UpdateManagerConfiguration()
            {
                DownloadSourcePath  = DOWNLOAD_SOURCE_PATH_S,
                SignatureSourcePath = SIGNATURE_SOURCE_PATH_S
            };

            var um = new DynUpdateManager(config);

            Assert.IsNotNull(um);

            var updateRequest = new Mock <IAsynchronousRequest>();

            updateRequest.Setup(ur => ur.Data)
            .Returns(UpdateManagerTestHelpers.updateAvailableData);
            um.UpdateDataAvailable(updateRequest.Object);

            // Spoof a download completion by setting the downloaded update info to the update info
            um.DownloadedUpdateInfo = um.UpdateInfo;
            Assert.NotNull(um.UpdateInfo);
            Assert.AreEqual("9.9.9.0", um.AvailableVersion.ToString());
            Assert.AreEqual(DOWNLOAD_SOURCE_PATH_S, um.UpdateInfo.VersionInfoURL);
            Assert.AreEqual(
                SIGNATURE_SOURCE_PATH_S + @"DynamoInstall9.9.9.sig",
                um.UpdateInfo.SignatureURL);
        }
示例#2
0
        /// <summary>
        ///if we are building a model for CLI mode, then we don't want to start an updateManager
        ///for now, building an updatemanager instance requires finding Dynamo install location
        ///which if we are running on mac os or *nix will use different logic then SandboxLookup
        /// </summary>
        private static IUpdateManager InitializeUpdateManager()
        {
            var cfg = UpdateManagerConfiguration.GetSettings(new SandboxLookUp());
            var um  = new Dynamo.Updates.UpdateManager(cfg);

            Debug.Assert(cfg.DynamoLookUp != null);
            return(um);
        }
        public void UpdateCheckReturnsInfoWhenNewerDailyBuildAvailable()
        {
            var updateRequest = new Mock<IAsynchronousRequest>();
            updateRequest.Setup(ur => ur.Data).Returns(UpdateManagerTestHelpers.dailyBuildAvailableData);

            var updateManager = new DynUpdateManager(NewConfiguration(checkNewerDailyBuild: true));
            updateManager.UpdateDataAvailable(updateRequest.Object);
            Assert.NotNull(updateManager.UpdateInfo);
        }
示例#4
0
        private static RevitDynamoModel InitializeCoreModel(DynamoRevitCommandData commandData)
        {
            // Temporary fix to pre-load DLLs that were also referenced in Revit folder.
            // To do: Need to align with Revit when provided a chance.
            PreloadDynamoCoreDlls();
            var corePath           = DynamoRevitApp.DynamoCorePath;
            var dynamoRevitExePath = Assembly.GetExecutingAssembly().Location;
            var dynamoRevitRoot    = Path.GetDirectoryName(dynamoRevitExePath);// ...\Revit_xxxx\ folder

            // get Dynamo Revit Version
            var dynRevitVersion = Assembly.GetExecutingAssembly().GetName().Version;

            var umConfig           = UpdateManagerConfiguration.GetSettings(new DynamoRevitLookUp());
            var revitUpdateManager = new DynUpdateManager(umConfig);

            revitUpdateManager.HostVersion = dynRevitVersion; // update RevitUpdateManager with the current DynamoRevit Version
            revitUpdateManager.HostName    = "Dynamo Revit";
            if (revitUpdateManager.Configuration is IDisableUpdateConfig)
            {
                (revitUpdateManager.Configuration as IDisableUpdateConfig).DisableUpdates = true;
            }

            Debug.Assert(umConfig.DynamoLookUp != null);

            var userDataFolder = Path.Combine(Environment.GetFolderPath(
                                                  Environment.SpecialFolder.ApplicationData),
                                              "Dynamo", "Dynamo Revit");
            var commonDataFolder = Path.Combine(Environment.GetFolderPath(
                                                    Environment.SpecialFolder.CommonApplicationData),
                                                "Autodesk", "RVT " + commandData.Application.Application.VersionNumber, "Dynamo");

            bool isAutomationMode = CheckJournalForKey(extCommandData, JournalKeys.AutomationModeKey);

            // when Dynamo runs on top of Revit we must load the same version of ASM as revit
            // so tell Dynamo core we've loaded that version.
            var loadedLibGVersion = PreloadAsmFromRevit();


            return(RevitDynamoModel.Start(
                       new RevitDynamoModel.RevitStartConfiguration()
            {
                DynamoCorePath = corePath,
                DynamoHostPath = dynamoRevitRoot,
                GeometryFactoryPath = GetGeometryFactoryPath(corePath, loadedLibGVersion),
                PathResolver = new RevitPathResolver(userDataFolder, commonDataFolder),
                Context = GetRevitContext(commandData),
                SchedulerThread = new RevitSchedulerThread(commandData.Application),
                StartInTestMode = isAutomationMode,
                AuthProvider = new RevitOxygenProvider(new DispatcherSynchronizationContext(Dispatcher.CurrentDispatcher)),
                ExternalCommandData = commandData,
                UpdateManager = revitUpdateManager,
                ProcessMode = isAutomationMode ? TaskProcessMode.Synchronous : TaskProcessMode.Asynchronous
            }));
        }
        public void IsUpdateAvailableWhenForceUpdateIsTrue()
        {
            var updateRequest = new Mock<IAsynchronousRequest>();
            updateRequest.Setup(ur => ur.Data).Returns(UpdateManagerTestHelpers.noUpdateAvailableData);

            var updateManager = new DynUpdateManager(NewConfiguration(forceUpdate:true));
            updateManager.UpdateDataAvailable(updateRequest.Object);
            updateManager.DownloadedUpdateInfo = updateManager.UpdateInfo;

            Assert.IsTrue(updateManager.IsUpdateAvailable);
        }
示例#6
0
        public void UpdateCheckReturnsNothingWhenNoVersionsAvailable()
        {
            var updateRequest = new Mock <IAsynchronousRequest>();

            updateRequest.Setup(ur => ur.Data).Returns(UpdateManagerTestHelpers.noData);
            var um = new DynUpdateManager(NewConfiguration());

            um.UpdateDataAvailable(updateRequest.Object);

            Assert.Null(um.UpdateInfo);
        }
示例#7
0
        public void UpdateCheckReturnsInfoWhenNewerDailyBuildAvailable()
        {
            var updateRequest = new Mock <IAsynchronousRequest>();

            updateRequest.Setup(ur => ur.Data).Returns(UpdateManagerTestHelpers.dailyBuildAvailableData);

            var updateManager = new DynUpdateManager(NewConfiguration(checkNewerDailyBuild: true));

            updateManager.UpdateDataAvailable(updateRequest.Object);
            Assert.NotNull(updateManager.UpdateInfo);
        }
示例#8
0
        public void UpdateCheckReturnsNothingWhenNotConnected()
        {
            var updateRequest = new Mock <IAsynchronousRequest>();

            updateRequest.Setup(ur => ur.Data).Returns(string.Empty);

            var um = new DynUpdateManager(NewConfiguration());

            um.UpdateDataAvailable(updateRequest.Object);

            Assert.Null(um.UpdateInfo);
        }
示例#9
0
        public void NoUpdateAvailableWhenUpToDate()
        {
            var updateRequest = new Mock <IAsynchronousRequest>();

            updateRequest.Setup(ur => ur.Data).Returns(UpdateManagerTestHelpers.noUpdateAvailableData);

            var updateManager = new DynUpdateManager(NewConfiguration());

            updateManager.UpdateDataAvailable(updateRequest.Object);
            updateManager.DownloadedUpdateInfo = updateManager.UpdateInfo;

            Assert.IsFalse(updateManager.IsUpdateAvailable);
        }
示例#10
0
        public void UpdateCheckReturnsCorrectVersionWhenAvailable()
        {
            var um = new DynUpdateManager(NewConfiguration());

            Assert.IsNotNull(um);

            var updateRequest = new Mock <IAsynchronousRequest>();

            updateRequest.Setup(ur => ur.Data).Returns(UpdateManagerTestHelpers.updateAvailableData);
            um.UpdateDataAvailable(updateRequest.Object);

            // Spoof a download completion by setting the downloaded update info to the update info
            um.DownloadedUpdateInfo = um.UpdateInfo;
            Assert.NotNull(um.UpdateInfo);
            Assert.AreEqual(um.AvailableVersion.ToString(), "9.9.9.0");
        }
示例#11
0
        public void DisableUpdateWhenLowerVersionDynamoIsInstalled()
        {
            var lookup = new Mock <DynamoLookUp>();

            lookup.Setup(l => l.GetDynamoInstallLocations()).Returns(new[] { "A" });
            lookup.Setup(l => l.GetDynamoVersion(It.IsAny <string>()))
            .Returns <string>(s => Version.Parse("1.2.0.0"));

            var um = new DynUpdateManager(NewConfiguration(false, false, lookup.Object));

            (um.Configuration as IDisableUpdateConfig).DisableUpdates = true;
            Assert.IsNotNull(um);

            DynUpdateManager.CheckForProductUpdate(um);
            Assert.IsNull(um.UpdateInfo);
            Assert.IsFalse(um.IsUpdateAvailable);
        }
示例#12
0
        public void UpdateCheckReturnsNothingWhenGivenBadData()
        {
            // Here we simulate some xml that is returned that is well-formed
            // but not what we are looking for. This is the case often when you
            // are logging into a network that requires an additional login, like
            // hotel wi-fi. In this case, the ListBucketResult element will not
            // be found in the xml and we'll get null UpdateInfo.

            var updateRequest = new Mock <IAsynchronousRequest>();

            updateRequest.Setup(ur => ur.Data).Returns(UpdateManagerTestHelpers.badData);

            var um = new DynUpdateManager(NewConfiguration());

            um.UpdateDataAvailable(updateRequest.Object);

            Assert.Null(um.UpdateInfo);
        }
示例#13
0
        public void NoUpdateIsAvailableWhenHigherVersionDynamoIsInstalled()
        {
            var lookup = new Mock <DynamoLookUp>();

            lookup.Setup(l => l.GetDynamoInstallLocations()).Returns(new[] { "A" });
            lookup.Setup(l => l.GetDynamoVersion(It.IsAny <string>()))
            .Returns <string>(s => Version.Parse("9.9.9.0"));

            var um = new DynUpdateManager(NewConfiguration(false, false, lookup.Object));

            Assert.IsNotNull(um);

            DynUpdateManager.CheckForProductUpdate(um);
            um.DownloadedUpdateInfo = um.UpdateInfo;

            Assert.IsNull(um.UpdateInfo);
            Assert.IsFalse(um.IsUpdateAvailable);
        }
示例#14
0
        private static RevitDynamoModel InitializeCoreModel(DynamoRevitCommandData commandData)
        {
            var corePath           = DynamoRevitApp.DynamoCorePath;
            var dynamoRevitExePath = Assembly.GetExecutingAssembly().Location;
            var dynamoRevitRoot    = Path.GetDirectoryName(dynamoRevitExePath);// ...\Revit_xxxx\ folder

            // get Dynamo Revit Version
            var revitVersion = Assembly.GetExecutingAssembly().GetName().Version;

            var umConfig           = UpdateManagerConfiguration.GetSettings(new DynamoRevitLookUp());
            var revitUpdateManager = new DynUpdateManager(umConfig);

            revitUpdateManager.HostVersion = revitVersion; // update RevitUpdateManager with the current DynamoRevit Version
            revitUpdateManager.HostName    = "Dynamo Revit";

            Debug.Assert(umConfig.DynamoLookUp != null);

            var userDataFolder = Path.Combine(
                Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
                "Dynamo", "Dynamo Revit");
            var commonDataFolder = Path.Combine(
                Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),
                "Dynamo", "Dynamo Revit");

            PreloadAsmFromRevit();

            return(RevitDynamoModel.Start(
                       new RevitDynamoModel.RevitStartConfiguration()
            {
                DynamoCorePath = corePath,
                DynamoHostPath = dynamoRevitRoot,
                GeometryFactoryPath = GetGeometryFactoryPath(corePath),
                PathResolver = new RevitPathResolver(userDataFolder, commonDataFolder),
                Context = GetRevitContext(commandData),
                SchedulerThread = new RevitSchedulerThread(commandData.Application),
                StartInTestMode = isAutomationMode,
                AuthProvider = new RevitOxygenProvider(new DispatcherSynchronizationContext(Dispatcher.CurrentDispatcher)),
                ExternalCommandData = commandData,
                UpdateManager = revitUpdateManager,
                ProcessMode = isAutomationMode ? TaskProcessMode.Synchronous : TaskProcessMode.Asynchronous
            }));
        }
示例#15
0
        public void UpdateCheckReturnsCorrectVersionWhenAvailable()
        {
            var um = new DynUpdateManager(NewConfiguration());
            Assert.IsNotNull(um);

            var updateRequest = new Mock<IAsynchronousRequest>();
            updateRequest.Setup(ur => ur.Data).Returns(UpdateManagerTestHelpers.updateAvailableData);
            um.UpdateDataAvailable(updateRequest.Object);

            // Spoof a download completion by setting the downloaded update info to the update info
            um.DownloadedUpdateInfo = um.UpdateInfo;
            Assert.NotNull(um.UpdateInfo);
            Assert.AreEqual(um.AvailableVersion.ToString(), "9.9.9.0");
        }
示例#16
0
 /// <summary>
 ///if we are building a model for CLI mode, then we don't want to start an updateManager
 ///for now, building an updatemanager instance requires finding Dynamo install location
 ///which if we are running on mac os or *nix will use different logic then SandboxLookup 
 /// </summary>
 private static IUpdateManager InitializeUpdateManager()
 {
     var cfg = UpdateManagerConfiguration.GetSettings(new SandboxLookUp());
     var um = new Dynamo.Updates.UpdateManager(cfg);
     Debug.Assert(cfg.DynamoLookUp != null);
     return um;
 }
示例#17
0
        public void UpdateCheckReturnsNothingWhenNoVersionsAvailable()
        {
            var updateRequest = new Mock<IAsynchronousRequest>();
            updateRequest.Setup(ur => ur.Data).Returns(UpdateManagerTestHelpers.noData);
            var um = new DynUpdateManager(NewConfiguration());
            um.UpdateDataAvailable(updateRequest.Object);

            Assert.Null(um.UpdateInfo);
        }
示例#18
0
        public void ConfigurationRedirection()
        {
            //Inject test config to UpdateManager instance, using reflection.
            var config = new UpdateManagerConfiguration()
            {
                DownloadSourcePath = DOWNLOAD_SOURCE_PATH_S,
                SignatureSourcePath = SIGNATURE_SOURCE_PATH_S
            };

            var um = new DynUpdateManager(config);
            Assert.IsNotNull(um);
        
            var updateRequest = new Mock<IAsynchronousRequest>();
            updateRequest.Setup(ur => ur.Data)
                .Returns(UpdateManagerTestHelpers.updateAvailableData);
            um.UpdateDataAvailable(updateRequest.Object);

            // Spoof a download completion by setting the downloaded update info to the update info
            um.DownloadedUpdateInfo = um.UpdateInfo;
            Assert.NotNull(um.UpdateInfo);
            Assert.AreEqual("9.9.9.0", um.AvailableVersion.ToString());
            Assert.AreEqual(DOWNLOAD_SOURCE_PATH_S, um.UpdateInfo.VersionInfoURL);
            Assert.AreEqual(
                SIGNATURE_SOURCE_PATH_S + @"DynamoInstall9.9.9.sig",
                um.UpdateInfo.SignatureURL);
        }
示例#19
0
        public void UpdateCheckReturnsNothingWhenNotConnected()
        {
            var updateRequest = new Mock<IAsynchronousRequest>();
            updateRequest.Setup(ur => ur.Data).Returns(string.Empty);

            var um = new DynUpdateManager(NewConfiguration());
            um.UpdateDataAvailable(updateRequest.Object);

            Assert.Null(um.UpdateInfo);
        }
示例#20
0
        public void UpdateCheckReturnsNothingWhenGivenBadData()
        {
            // Here we simulate some xml that is returned that is well-formed
            // but not what we are looking for. This is the case often when you
            // are logging into a network that requires an additional login, like
            // hotel wi-fi. In this case, the ListBucketResult element will not 
            // be found in the xml and we'll get null UpdateInfo.

            var updateRequest = new Mock<IAsynchronousRequest>();
            updateRequest.Setup(ur => ur.Data).Returns(UpdateManagerTestHelpers.badData);

            var um = new DynUpdateManager(NewConfiguration());
            um.UpdateDataAvailable(updateRequest.Object);

            Assert.Null(um.UpdateInfo);
        }
示例#21
0
        public void NoUpdateIsAvailableWhenHigherVersionDynamoIsInstalled()
        {
            var lookup = new Mock<DynamoLookUp>();
            lookup.Setup(l => l.GetDynamoInstallLocations()).Returns(new[] { "A" });
            lookup.Setup(l => l.GetDynamoVersion(It.IsAny<string>()))
                .Returns<string>(s => Version.Parse("9.9.9.0"));

            var um = new DynUpdateManager(NewConfiguration(false, false, lookup.Object));
            Assert.IsNotNull(um);

            DynUpdateManager.CheckForProductUpdate(um);
            um.DownloadedUpdateInfo = um.UpdateInfo;

            Assert.IsNull(um.UpdateInfo);
            Assert.IsFalse(um.IsUpdateAvailable);
        }
示例#22
0
        public void NoUpdateAvailableWhenUpdateInfoIsNotYetDownloaded()
        {
            var updateManager = new DynUpdateManager(NewConfiguration());

            Assert.IsFalse(updateManager.IsUpdateAvailable);
        }
示例#23
0
 public void NoUpdateAvailableWhenUpdateInfoIsNotYetDownloaded()
 {
     var updateManager = new DynUpdateManager(NewConfiguration());
     
     Assert.IsFalse(updateManager.IsUpdateAvailable);
 }