예제 #1
0
        public void preparing_updates_calls_proper_subsystems_publishes_msg_at_the_end()
        {
            // return the same - might stop working if some of the code is gonna be put to verify download };
            var modulePacakge = new ModulePackage {ModuleManifest = _moduleManifest};

            ModulesRepository.Setup(x => x.GetModule(It.Is<string>(y => y == _moduleName)))
                .Returns(modulePacakge)
                .Verifiable("This package should be downloaded");

            EventAggregator.Setup(x => x.Publish(It.IsAny<NomadUpdatesReadyMessage>()))
                .Callback<NomadUpdatesReadyMessage>(msg =>
                                                        {
                                                            Assert.IsFalse(msg.Error);
                                                            Assert.AreEqual(1,msg.ModuleManifests.Count);
                                                            Assert.AreSame(modulePacakge.ModuleManifest,
                                                                           msg.ModuleManifests[0]);
                                                        })
                .Verifiable("This message should be published upon exit");

            NomadUpdater.PrepareUpdate(new List<ModuleManifest>()
                                                                       {
                                                                           _moduleManifest
                                                                       });

            EventAggregator.Verify();
            ModulesRepository.Verify();
            Assert.AreEqual(UpdaterStatus.Prepared, NomadUpdater.Status);
        }
예제 #2
0
        public void zip_packager_unzips_the_file_properly()
        {
            string zipFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"res\test.zip");

            var modulePackage = new ModulePackage
                {
                    ModuleManifest =
                        new ModuleManifest(),
                    ModuleZip =
                        File.ReadAllBytes(zipFile)
                };

            // get the zip packager
            IModulePackager packager = new ModulePackager();

            // set up directory
            string targetDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,@"Updater\Zip\");
            if(Directory.Exists(targetDirectory))
                Directory.Delete(targetDirectory,true);

            Directory.CreateDirectory(targetDirectory);

            // perform test
            packager.PerformUpdates(targetDirectory,modulePackage);

            // assert test
            Assert.IsTrue(File.Exists(Path.Combine(targetDirectory, "readme")));
        }
예제 #3
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="module"></param>
 /// <returns></returns>
 /// TODO: this method probably should not be public!
 public bool AddModule(ModulePackage module)
 {
     try
     {
         var name = module.ModuleManifest.ModuleName;
         var manifestFile = GetManifestPath(name);
         var zipFile = GetZipPath(name);
         var manifestData = XmlSerializerHelper.Serialize(module.ModuleManifest);
         File.WriteAllBytes(manifestFile, manifestData);
         File.WriteAllBytes(zipFile, module.ModuleZip);
         return true;
     }
     catch
     {
         return false;
     }
 }
예제 #4
0
        private static ModulePackage GetPackageWithName(string moduleString)
        {
            var package = new ModulePackage
                              {
                                  ModuleZip = new byte[] {0xFf},
                                  ModuleManifest = new ModuleManifest
                                                       {
                                                           ModuleName = moduleString,
                                                       }
                              };

            return package;
        }