Example #1
0
 public void SearchRemotePackagesTest()
 {
     string wd = string.Empty;
     Uri registry = null;
     NpmFactory factory = new MockNpmFactory();
     NpmPackageManager target = new NpmPackageManager(factory, wd, registry);
     string searchTerms = "search1";
     List<NpmSearchResultPackage> expected = MockTestData.SearchResult1Expected();
     IEnumerable<INpmSearchResultPackage> actual;
     actual = target.SearchRemotePackages(searchTerms);
     Assert.IsNotNull(actual);
     Assert.AreEqual(expected.Count, actual.Count());
     int index = 0;
     foreach (INpmSearchResultPackage actualItem in actual)
     {
         Assert.AreEqual(expected[index], actualItem, "item value differs");
         index++;
     }
 }
Example #2
0
 public void InstallPackageTest()
 {
     string wd = "c:\\root\\project1";
     Uri registry = null;
     NpmFactory factory = new MockNpmFactory();
     NpmPackageManager target = new NpmPackageManager(factory, wd, registry);
     NpmPackage package = new NpmPackage("install1", null);
     target.InstallPackage(package);
     Assert.IsTrue(true);   // no exception thrown
 }
Example #3
0
 public void IsPackageInstalledFailTest()
 {
     string wd = "c:\\root\\project2";
     Uri registry = null;
     NpmFactory factory = new MockNpmFactory();
     NpmPackageManager target = new NpmPackageManager(factory, wd, registry);
     NpmPackage package = MockTestData.List1MatchInstalledPackage();
     NpmInstalledPackage expected = null;
     INpmInstalledPackage actual;
     actual = target.IsPackageInstalled(package);
     if (expected == null)
     {
         Assert.AreEqual(expected, actual);
     }
     else
     {
         Assert.IsNotNull(actual);
         Assert.AreEqual(expected, actual, "item value differs");
     }
 }
Example #4
0
 public void GetInstalledPackagesEmptyTest()
 {
     string wd = "c:\\root\\empty1";
     Uri registry = null;
     NpmFactory factory = new MockNpmFactory();
     NpmPackageManager target = new NpmPackageManager(factory, wd, registry);
     List<NpmInstalledPackage> expected = MockTestData.ListEmptyExpected();
     IEnumerable<INpmInstalledPackage> actual;
     actual = target.GetInstalledPackages();
     Assert.IsNotNull(actual);
     Assert.AreEqual(expected.Count, actual.Count());
     int index = 0;
     foreach (NpmInstalledPackage actualItem in actual)
     {
         Assert.AreEqual(expected[index], actualItem, "item value differs");
         index++;
     }
 }
Example #5
0
 public void GetPackagesWithUpdatesTest()
 {
     string wd = "c:\\root\\update1";
     Uri registry = null;
     NpmFactory factory = new MockNpmFactory();
     NpmPackageManager target = new NpmPackageManager(factory, wd, registry);
     List<NpmPackageDependency> expected = MockTestData.Outdated1Expected();
     IEnumerable<INpmPackageDependency> actual;
     actual = target.GetPackagesWithUpdates();
     Assert.IsNotNull(actual);
     Assert.AreEqual(expected.Count, actual.Count());
     int index = 0;
     foreach (INpmPackageDependency actualItem in actual)
     {
         Assert.AreEqual(expected[index], actualItem, "item value differs");
         index++;
     }
 }
Example #6
0
 public void InstallPackageFailureTest()
 {
     string wd = "c:\\root\\project1";
     Uri registry = null;
     NpmFactory factory = new MockNpmFactory();
     NpmPackageManager target = new NpmPackageManager(factory, wd, registry);
     NpmPackage package = new NpmPackage("bogusmod", null);
     NpmException expected = MockTestData.ErrorInstallExpected();
     try
     {
         target.InstallPackage(package);
         Assert.Fail("Expected exception");
     }
     catch (NpmException ex)
     {
         Assert.IsNotNull(ex);
         Assert.AreEqual(expected.Message, ex.Message);
         Assert.AreEqual(expected.NpmCode, ex.NpmCode);
         Assert.AreEqual(expected.NpmErrno, ex.NpmErrno);
         Assert.AreEqual(expected.NpmFile, ex.NpmFile);
         Assert.AreEqual(expected.NpmPath, ex.NpmPath);
         Assert.AreEqual(expected.NpmType, ex.NpmType);
         Assert.AreEqual(expected.NpmSyscall, ex.NpmSyscall);
         Assert.AreEqual(expected.NpmSystem, ex.NpmSystem);
         Assert.AreEqual(expected.NpmCommand, ex.NpmCommand);
         Assert.AreEqual(expected.NpmNodeVersion, ex.NpmNodeVersion);
         Assert.AreEqual(expected.NpmNpmVersion, ex.NpmNpmVersion);
         Assert.AreEqual(expected.NpmMessage, ex.NpmMessage);
         Assert.AreEqual(expected.NpmArguments, ex.NpmArguments);
         Assert.AreEqual(expected.NpmCwd, ex.NpmCwd);
         Assert.AreEqual(expected.NpmVerbose, ex.NpmVerbose);
     }
 }
Example #7
0
 /// <summary>
 /// Execute UninstallPackage
 /// </summary>
 /// <param name="npm">NpmPackageManager instance</param>
 /// <param name="name">name of package</param>
 private static void DoUninstall(NpmPackageManager npm, string name)
 {
     NpmPackage pkg = new NpmPackage(name, null);
     npm.UninstallPackage(pkg);
 }
Example #8
0
 public void NpmPackageManagerConstructorTest1()
 {
     string wd = string.Empty;
     Uri registry = null;
     NpmPackageManager target = new NpmPackageManager(wd, registry);
     Assert.IsNotNull(target);
     Assert.IsInstanceOfType(target, typeof(NpmPackageManager));
 }
Example #9
0
 public void NpmPackageManagerConstructorTest2()
 {
     string wd = string.Empty; // TODO: Initialize to an appropriate value
     NpmPackageManager target = new NpmPackageManager(wd);
     Assert.IsNotNull(target);
     Assert.IsInstanceOfType(target, typeof(NpmPackageManager));
 }
Example #10
0
        /// <summary>
        /// Exercise the NpmPackageManager class
        /// </summary>
        /// <param name="wd">working directory path</param>
        /// <param name="installPath">node installation path</param>
        /// <param name="module">module name to use</param>
        /// <returns>true or false</returns>
        public static bool RunSample(string wd, string installPath, string module)
        {
            NpmPackageManager npm = new NpmPackageManager(wd);
            if (npm == null)
            {
                Console.WriteLine("Failed to create NpmPackageManager");
                return false;
            }

            npm.NpmClient.InstallPath = installPath;

            bool quit = false;
            ShowUsage();
            while (!quit)
            {
                try
                {
                    Console.Write(">: ");
                    string cmd = Console.ReadLine();
                    char[] seps = new char[] { ' ' };
                    string[] tokens = cmd.Split(seps, StringSplitOptions.RemoveEmptyEntries);
                    int numTokens = tokens.Length;
                    if (numTokens > 0)
                    {
                        switch (tokens[0].ToLower())
                        {
                            case "q":
                                quit = true;
                                break;

                            case "list":
                                DoList(npm);
                                break;

                            case "install":
                                if (numTokens > 1)
                                {
                                    DoInstall(npm, tokens[1]);
                                }
                                else
                                {
                                    Console.WriteLine("install needs name of package");
                                }

                                break;

                            case "uninstall":
                                if (numTokens > 1)
                                {
                                    DoUninstall(npm, tokens[1]);
                                }
                                else
                                {
                                    Console.WriteLine("uninstall needs name of package");
                                }

                                break;

                            case "find":
                                if (numTokens > 1)
                                {
                                    DoFind(npm, tokens[1]);
                                }
                                else
                                {
                                    Console.WriteLine("find needs search term");
                                }

                                break;

                            case "depends":
                                DoDepends(npm);
                                break;

                            case "update":
                                if (numTokens > 1)
                                {
                                    DoUpdate(npm, tokens[1]);
                                }
                                else
                                {
                                    Console.WriteLine("update needs name of package");
                                }

                                break;

                            default:
                                ShowUsage();
                                break;
                        }
                    }
                }
                catch (NpmException ex)
                {
                    Console.WriteLine("Npm failed with exception.");
                    Console.WriteLine("Message: " + ex.Message);
                    if (ex.InnerException != null)
                    {
                        Console.WriteLine("Inner message: " + ex.InnerException.Message);
                    }
                    else
                    {
                        if (ex.NpmCode != null)
                        {
                            Console.WriteLine("Code: " + ex.NpmCode);
                        }

                        if (ex.NpmCommand != null)
                        {
                            Console.WriteLine("calling: " + ex.NpmCommand);
                        }
                    }
                }
            }

            return true;
        }
Example #11
0
        /// <summary>
        /// Exercise the NpmPackageManager class
        /// </summary>
        /// <param name="wd">working directory path</param>
        /// <param name="installPath">node installation path</param>
        /// <param name="module">module name to use</param>
        /// <returns>true or false</returns>
        public static bool RunSample(string wd, string installPath, string module)
        {
            try
            {
                NpmPackageManager npm = new NpmPackageManager(wd);
                if (npm == null)
                {
                    Console.WriteLine("Failed to create NpmPackageManager");
                    return false;
                }

                npm.NpmClient.InstallPath = installPath;
                INpmSearchResultPackage found = null;
                IEnumerable<INpmSearchResultPackage> searchResults = npm.SearchRemotePackages(module);
                if (searchResults != null)
                {
                    foreach (INpmSearchResultPackage result in searchResults)
                    {
                        if (result.Name == module)
                        {
                            found = result;
                            break;
                        }
                    }
                }

                if (found == null)
                {
                    Console.WriteLine("SearchRemotePackages failed to find '{0}'", module);
                    return false;
                }

                // install module as a dependency
                npm.InstallPackage(found);

                // list packages at parent
                IEnumerable<INpmInstalledPackage> installedPkg = npm.GetInstalledPackages();
                if (installedPkg == null)
                {
                    Console.WriteLine("GetInstalledPackages failed for {0}", found.Name);
                    return false;
                }

                // there should be at least 1 item since we installed one
                if (installedPkg.Count() == 0)
                {
                    Console.WriteLine("There are no packages listed");
                    return false;
                }

                // now call update
                npm.UpdatePackage(found);

                IEnumerable<INpmPackageDependency> outdated = npm.FindDependenciesToBeInstalled(found);
                if (outdated != null && outdated.Count() > 0)
                {
                    Console.WriteLine("Expected no outdated entry after update of {0}", module);
                    return false;
                }

                npm.UninstallPackage(installedPkg.First());

                Console.WriteLine("Success! {0} was installed and uninstalled.", module);
                return true;
            }
            catch (NpmException ex)
            {
                Console.WriteLine("Npm failed with exception.");
                Console.WriteLine("Message: " + ex.Message);
                if (ex.InnerException != null)
                {
                    Console.WriteLine("Inner message: " + ex.InnerException.Message);
                }
                else
                {
                    if (ex.NpmCode != null)
                    {
                        Console.WriteLine("Code: " + ex.NpmCode);
                    }

                    if (ex.NpmCommand != null)
                    {
                        Console.WriteLine("calling: " + ex.NpmCommand);
                    }
                }

                return false;
            }
        }
Example #12
0
 /// <summary>
 /// Execute UpdatePackage
 /// </summary>
 /// <param name="npm">NpmPackageManager instance</param>
 /// <param name="name">name of package</param>
 private static void DoUpdate(NpmPackageManager npm, string name)
 {
     NpmPackage pkg = new NpmPackage(name, null);
     npm.UpdatePackage(pkg);
 }
Example #13
0
 /// <summary>
 /// Execute GetPackagesWithUpdates
 /// </summary>
 /// <param name="npm">NpmPackageManager instance</param>
 private static void DoDepends(NpmPackageManager npm)
 {
     IEnumerable<INpmPackageDependency> pkgs;
     pkgs = npm.GetPackagesWithUpdates();
     foreach (INpmPackageDependency pkg in pkgs)
     {
         Console.WriteLine(pkg.Name);
     }
 }
Example #14
0
 /// <summary>
 /// Execute SearchRemotePackages
 /// </summary>
 /// <param name="npm">NpmPackageManager instance</param>
 /// <param name="term">search term</param>
 private static void DoFind(NpmPackageManager npm, string term)
 {
     IEnumerable<INpmSearchResultPackage> searchResults = npm.SearchRemotePackages(term);
     if (searchResults != null)
     {
         foreach (INpmSearchResultPackage result in searchResults)
         {
             Console.WriteLine(result.Name);
         }
     }
 }
Example #15
0
 public void UpdatePackageTest()
 {
     string wd = "c:\\root\\update1";
     Uri registry = null;
     NpmFactory factory = new MockNpmFactory();
     NpmPackageManager target = new NpmPackageManager(factory, wd, registry);
     NpmPackage package = new NpmPackage("underscore", null);
     target.UpdatePackage(package);
     Assert.IsTrue(true);    // no exception thrown
 }
Example #16
0
 public void FindDependenciesToBeInstalledMultiTest()
 {
     string wd = "c:\\root\\outdatedmulti";
     Uri registry = null;
     NpmFactory factory = new MockNpmFactory();
     NpmPackageManager target = new NpmPackageManager(factory, wd, registry);
     NpmPackage package = new NpmPackage("outdatedparent", null);
     List<NpmPackageDependency> expected = MockTestData.OutdatedMultiExpected();
     IEnumerable<INpmPackageDependency> actual;
     actual = target.FindDependenciesToBeInstalled(package);
     Assert.IsNotNull(actual);
     Assert.AreEqual(expected.Count, actual.Count());
     int index = 0;
     foreach (INpmPackageDependency actualItem in actual)
     {
         Assert.AreEqual(expected[index], actualItem, "item value differs");
         index++;
     }
 }
Example #17
0
 public void ApiClientTest()
 {
     string wd = string.Empty;
     NpmPackageManager target = new NpmPackageManager(wd);
     INpmApi expected = (INpmApi)new NpmApi(wd);
     INpmApi actual;
     target.ApiClient = expected;
     actual = target.ApiClient;
     Assert.AreEqual(expected, actual);
 }
Example #18
0
 public void FindPackagesTest()
 {
     string wd = string.Empty;
     Uri registry = null;
     NpmFactory factory = new MockNpmFactory();
     NpmPackageManager target = new NpmPackageManager(factory, wd, registry);
     List<string> packageIds = new List<string>();
     packageIds.Add("view1");
     List<NpmRemotePackage> expected = new List<NpmRemotePackage>();
     expected.Add(MockTestData.View1Expected());
     IEnumerable<INpmRemotePackage> actual;
     actual = target.FindPackages(packageIds);
     Assert.IsNotNull(actual);
     Assert.AreEqual(expected.Count, actual.Count());
     int index = 0;
     foreach (INpmRemotePackage actualItem in actual)
     {
         Assert.AreEqual(expected[index], actualItem, "item value differs");
         index++;
     }
 }
Example #19
0
 public void NpmPackageManagerConstructorTest()
 {
     NpmFactory factory = new MockNpmFactory();
     string wd = string.Empty;
     Uri registry = null;
     NpmPackageManager target = new NpmPackageManager(factory, wd, registry);
     Assert.IsNotNull(target);
     Assert.IsInstanceOfType(target, typeof(NpmPackageManager));
 }
Example #20
0
        /// <summary>
        /// Execute GetInstalledPackages
        /// </summary>
        /// <param name="npm">NpmPackageManager instance</param>
        private static void DoList(NpmPackageManager npm)
        {
            IEnumerable<INpmInstalledPackage> installedPkg = npm.GetInstalledPackages();
            if (installedPkg == null || installedPkg.Count() == 0)
            {
                Console.WriteLine("GetInstalledPackages returned nothing");
                return;
            }

            foreach (INpmInstalledPackage pkg in installedPkg)
            {
                Console.WriteLine(pkg.Name);
            }
        }