Ejemplo n.º 1
0
 protected virtual void PushPackageToCIRepository(
     SolutionPackageBase solutionPackage,
     List <SolutionPackageBase> solutionDependencies,
     NuGetSolutionPackageService packagingService)
 {
     PushPackageToCIRepository(solutionPackage, solutionDependencies, packagingService, UseLocaNuGet);
 }
Ejemplo n.º 2
0
        private void Can_Unpack_Internal(
            NuGetSolutionPackageService packagingService,
            Action <SolutionPackageBase> basePackageAction,
            Action <SolutionPackageBase, SolutionPackageBase> action)
        {
            var solutionPackage = CreateNewSolutionPackage(packagingService);

            if (basePackageAction != null)
            {
                basePackageAction(solutionPackage);
            }

            var nuGetPackage = packagingService.Pack(solutionPackage);

            Assert.IsNotNull(nuGetPackage);
            Assert.IsTrue(nuGetPackage.Length > 0);

            var filePath = GetTempNuGetFilePath();

            packagingService.PackToFile(solutionPackage, filePath);

            // unpacking and checking props
            using (var streamReader = File.OpenRead(filePath))
            {
                var unpackedSolutionPackage = packagingService.Unpack(streamReader) as SolutionPackageBase;
                action(solutionPackage, unpackedSolutionPackage);
            }
        }
Ejemplo n.º 3
0
 protected virtual void PushPackageToCIRepository(
     SolutionPackageBase solutionPackage,
     NuGetSolutionPackageService packagingService
     )
 {
     PushPackageToCIRepository(solutionPackage, null, packagingService);
 }
Ejemplo n.º 4
0
        private void Can_Pack_Internal(NuGetSolutionPackageService packagingService)
        {
            var solutionPackage = CreateNewSolutionPackage(packagingService);
            var nuGetPackage    = packagingService.Pack(solutionPackage);

            // mem stream
            Assert.IsNotNull(nuGetPackage);
            Assert.IsTrue(nuGetPackage.Length > 0);

            var filePath = GetTempNuGetFilePath();

            packagingService.PackToFile(solutionPackage, filePath);

            Assert.IsTrue(File.Exists(filePath));
        }
Ejemplo n.º 5
0
        private void Can_Push_Internal(NuGetSolutionPackageService packagingService)
        {
            WithCINuGetContext((apiUrl, apiKey, repoUrl) =>
            {
                var solutionPackage = CreateNewSolutionPackage(packagingService);

                UpdatePackageVersion(solutionPackage);
                packagingService.Push(solutionPackage, apiUrl, apiKey);

                var ciRepo    = PackageRepositoryFactory.Default.CreateRepository(repoUrl);
                var ciPackage = ciRepo.FindPackageSafe(solutionPackage.Id);

                Assert.IsNotNull(ciPackage);

                Trace.WriteLine(string.Format("Found package:[{0}]", ciPackage));
            });
        }
Ejemplo n.º 6
0
        protected virtual void PushPackageToCIRepository(
            SolutionPackageBase solutionPackage,
            List <SolutionPackageBase> solutionDependencies,
            NuGetSolutionPackageService packagingService,
            bool useLocal
            )
        {
            IPackageRepository repo = null;

            if (solutionDependencies != null)
            {
                foreach (var soutionDependency in solutionDependencies)
                {
                    if (useLocal)
                    {
                        var filePath = Path.Combine(LocalNuGetRepositoryFolderPath,
                                                    String.Format("{0}.{1}.nupkg", soutionDependency.Id, soutionDependency.Version));
                        packagingService.PackToFile(soutionDependency, filePath);
                    }
                    else
                    {
                        WithCINuGetContext((apiUrl, apiKey, repoUrl) =>
                        {
                            packagingService.Push(soutionDependency, apiUrl, apiKey);
                        });
                    }
                }
            }

            if (useLocal)
            {
                var filePath = Path.Combine(LocalNuGetRepositoryFolderPath,
                                            String.Format("{0}.{1}.nupkg", solutionPackage.Id, solutionPackage.Version));
                packagingService.PackToFile(solutionPackage, filePath);
            }
            else
            {
                WithCINuGetContext((apiUrl, apiKey, repoUrl) =>
                {
                    packagingService.Push(solutionPackage, apiUrl, apiKey);
                });
            }
        }
Ejemplo n.º 7
0
        protected virtual SolutionPackageBase CreateNewSolutionPackage(
            NuGetSolutionPackageService service,
            Action <SolutionPackageBase> action,
            RegressinModelLevel modelLevel)
        {
            var knownPackageType = false;

            SolutionPackageBase solutionPackage = null;

            if (service is SPMeta2SolutionPackageService)
            {
                var m2package = new SolutionPackageBase();

                m2package.Name  = "SPMeta2 CI Package Name";
                m2package.Title = "SPMeta2 CI Package Title";

                m2package.Description = "SPMeta2 CI Package description";
                m2package.Id          = "MetaPack.SPMeta2.CI";
                m2package.Authors     = "SubPoint Solutions Authors";
                m2package.Company     = "SubPoint Solutions Company";
                m2package.Version     = "1.0.0.0";
                m2package.Owners      = "SubPoint Solutions Owners";

                m2package.ReleaseNotes = "ReleaseNotes";
                m2package.Summary      = "Summary";
                m2package.ProjectUrl   = "https://github.com/SubPointSolutions/metapack";
                m2package.IconUrl      = "https://github.com/SubPointSolutions/metapack/metapack.png";
                m2package.LicenseUrl   = "https://opensource.org/licenses/MIT";

                m2package.Copyright = "Some copyright here";
                m2package.Tags      = "CI SPMeta2 MetaPack Tags";

                var models = new List <ModelNode>();

                switch (modelLevel)
                {
                case RegressinModelLevel.Farm:
                    models.Add(SPMeta2Model.NewFarmModel(farm => { }));
                    break;

                case RegressinModelLevel.WebApplication:
                    models.Add(SPMeta2Model.NewWebApplicationModel(webApp => { }));
                    break;

                case RegressinModelLevel.Site:
                    models.Add(SPMeta2Model.NewSiteModel(site => { }));
                    models.Add(SPMeta2Model.NewWebModel(web => { }));
                    break;

                case RegressinModelLevel.Web:
                    models.Add(SPMeta2Model.NewWebModel(web => { }));
                    break;

                case RegressinModelLevel.Subweb:
                    models.Add(SPMeta2Model.NewWebModel(web => { }));
                    break;

                default:
                    throw new NotImplementedException(string.Format(
                                                          "Unsupported model level:[{0}] for model genaration",
                                                          modelLevel));
                }

                var index = 0;

                foreach (var model in models)
                {
                    index++;

                    var xmlContext = SPMeta2Model.ToXML(model);

                    var modelContainer = new ModelContainerBase
                    {
                        Model = Encoding.UTF8.GetBytes(xmlContext),
                    };

                    modelContainer.AdditionalOptions.Add(new OptionValue
                    {
                        Name  = DefaultOptions.Model.Order.Id,
                        Value = index.ToString()
                    });

                    m2package.AddModel(modelContainer);
                }

                m2package.AdditionalOptions.Add(new OptionValue
                {
                    Name  = DefaultOptions.SolutionToolPackage.PackageId.Id,
                    Value = "MetaPack.SPMeta2"
                });

                solutionPackage = m2package;
            }

            if (service is SharePointPnPSolutionPackageService)
            {
                var pnpPackage = new SolutionPackageBase();

                pnpPackage.Name  = "SharePointPnP CI Package Name";
                pnpPackage.Title = "SharePointPnP Package Title";

                pnpPackage.Description = "SPMeta2 CI Package description";
                pnpPackage.Id          = "MetaPack.SharePointPnP.CI";
                pnpPackage.Authors     = "SubPoint Solutions Authors";
                pnpPackage.Company     = "SubPoint Solutions Company";
                pnpPackage.Version     = "1.0.0.0";
                pnpPackage.Owners      = "SubPoint Solutions Owners";

                pnpPackage.ReleaseNotes = "ReleaseNotes";
                pnpPackage.Summary      = "Summary";
                pnpPackage.ProjectUrl   = "https://github.com/SubPointSolutions/metapack";
                pnpPackage.IconUrl      = "https://github.com/SubPointSolutions/metapack/metapack.png";
                pnpPackage.LicenseUrl   = "https://opensource.org/licenses/MIT";

                pnpPackage.Copyright = "Some copyright here";
                pnpPackage.Tags      = "CI SPMeta2 MetaPack Tags";


                // TODO
                // Zip up and set the model type
                var asmFolder = Path.GetDirectoryName(GetType().Assembly.Location);

                var foldersPath       = Path.Combine(asmFolder, @"Data/PnPTemplates/Folders");
                var openXmlFolderPath = Path.Combine(asmFolder, @"Data/PnPTemplates/OpenXML");

                foreach (var templateFolder in Directory.GetDirectories(foldersPath))
                {
                    // package up into zip
                    var templateFolderZipFile = GetTempZipFilePath();
                    ZipFile.CreateFromDirectory(templateFolder, templateFolderZipFile);

                    var modelContainer = new ModelContainerBase
                    {
                        Model = System.IO.File.ReadAllBytes(templateFolderZipFile),
                    };

                    modelContainer.AdditionalOptions.Add(new OptionValue
                    {
                        Name  = DefaultOptions.Model.Type.Id,
                        Value = "SharePointPnP.FolderZip"
                    });

                    pnpPackage.AddModel(modelContainer);
                }



                var openXmlPackages = Directory.GetFiles(openXmlFolderPath, "*.pnp");

                foreach (var file in openXmlPackages)
                {
                    var modelContainer = new ModelContainerBase
                    {
                        Model = System.IO.File.ReadAllBytes(file),
                    };

                    modelContainer.AdditionalOptions.Add(new OptionValue
                    {
                        Name  = DefaultOptions.Model.Type.Id,
                        Value = "SharePointPnP.OpenXml"
                    });

                    pnpPackage.AddModel(modelContainer);
                }

                pnpPackage.AdditionalOptions.Add(new OptionValue
                {
                    Name  = DefaultOptions.SolutionToolPackage.PackageId.Id,
                    Value = "MetaPack.SharePointPnP"
                });

                solutionPackage = pnpPackage;
            }

            if (solutionPackage == null)
            {
                throw new NotImplementedException(string.Format(
                                                      "Unknown service type:[{0}]", service.GetType()));
            }

            if (action != null)
            {
                action(solutionPackage);
            }

            return(solutionPackage);
        }
Ejemplo n.º 8
0
 protected virtual SolutionPackageBase CreateNewSolutionPackage(NuGetSolutionPackageService service,
                                                                RegressinModelLevel modelLevel)
 {
     return(CreateNewSolutionPackage(service, null, modelLevel));
 }
Ejemplo n.º 9
0
 private void Can_Unpack_Internal(
     NuGetSolutionPackageService packagingService,
     Action <SolutionPackageBase, SolutionPackageBase> action)
 {
     Can_Unpack_Internal(packagingService, null, action);
 }
Ejemplo n.º 10
0
        private void Can_Unpack_Internal_2(NuGetSolutionPackageService service)
        {
            Can_Unpack_Internal(service,
                                (rawPackage, unpackedPackage) =>
            {
                var solutionPackage         = rawPackage as SolutionPackageBase;
                var unpackedSolutionPackage = unpackedPackage as SolutionPackageBase;

                Assert.IsNotNull(solutionPackage);
                Assert.IsNotNull(unpackedSolutionPackage);

                Assert.AreEqual(solutionPackage.Name, unpackedSolutionPackage.Name);
                Assert.AreEqual(solutionPackage.Title, unpackedSolutionPackage.Title);
                Assert.AreEqual(solutionPackage.Description, unpackedSolutionPackage.Description);
                Assert.AreEqual(solutionPackage.Id, unpackedSolutionPackage.Id);
                Assert.AreEqual(solutionPackage.Authors, unpackedSolutionPackage.Authors);
                Assert.AreEqual(solutionPackage.Company, unpackedSolutionPackage.Company);
                Assert.AreEqual(solutionPackage.Version, unpackedSolutionPackage.Version);
                Assert.AreEqual(solutionPackage.Owners, unpackedSolutionPackage.Owners);

                Assert.AreEqual(solutionPackage.ReleaseNotes, unpackedSolutionPackage.ReleaseNotes);
                Assert.AreEqual(solutionPackage.Summary, unpackedSolutionPackage.Summary);

                Assert.AreEqual(solutionPackage.ProjectUrl, unpackedSolutionPackage.ProjectUrl);
                Assert.AreEqual(solutionPackage.IconUrl, unpackedSolutionPackage.IconUrl);
                Assert.AreEqual(solutionPackage.LicenseUrl, unpackedSolutionPackage.LicenseUrl);
                Assert.AreEqual(solutionPackage.Copyright, unpackedSolutionPackage.Copyright);
                Assert.AreEqual(solutionPackage.Tags, unpackedSolutionPackage.Tags);

                Assert.AreEqual(solutionPackage.Dependencies.Count, unpackedSolutionPackage.Dependencies.Count);

                foreach (var dependency in solutionPackage.Dependencies)
                {
                    var unpackedDependency =
                        unpackedSolutionPackage.Dependencies.FirstOrDefault(d => d.Id == dependency.Id);

                    Assert.AreEqual(dependency.Id, unpackedDependency.Id);
                    Assert.AreEqual(dependency.Version, unpackedDependency.Version);
                }


                if (service is SPMeta2SolutionPackageService)
                {
                    var m2package         = solutionPackage as SolutionPackageBase;
                    var m2unpackedPackage = unpackedSolutionPackage as SolutionPackageBase;

                    Assert.IsNotNull(m2package);
                    Assert.IsNotNull(m2unpackedPackage);

                    Assert.AreEqual(m2package.GetModels().Count(), m2unpackedPackage.GetModels().Count());

                    foreach (var modelContainer in m2unpackedPackage.GetModels())
                    {
                        Assert.IsNotNull(modelContainer.Model);
                        Assert.IsNotNull(modelContainer.AdditionalOptions);

                        // we should be able o unpack it
                        var modelXml = Encoding.UTF8.GetString(modelContainer.Model);

                        Assert.IsTrue(!string.IsNullOrEmpty(modelXml));

                        var m2model = SPMeta2Model.FromXML(modelXml);
                        Assert.IsNotNull(m2model);
                    }
                }

                if (service is SharePointPnPSolutionPackageService)
                {
                    var pnpPackage         = solutionPackage as SolutionPackageBase;
                    var pnpUnpackedPackage = unpackedSolutionPackage as SolutionPackageBase;

                    Assert.IsNotNull(pnpPackage);

                    Assert.IsNotNull(pnpPackage);
                    Assert.IsNotNull(pnpUnpackedPackage);

                    Assert.AreEqual(pnpPackage.GetModels().Count(), pnpUnpackedPackage.GetModels().Count());

                    foreach (var modelContainer in pnpUnpackedPackage.GetModels())
                    {
                        Assert.IsNotNull(modelContainer.Model);
                        Assert.IsNotNull(modelContainer.AdditionalOptions);
                    }
                }
            });
        }
Ejemplo n.º 11
0
        private void Can_Unpack_SolutionPackage_WithOrderedModel_Internal(NuGetSolutionPackageService s)
        {
            Can_Unpack_Internal(s,
                                prePackagedSolution =>
            {
                // clean models
                var models = prePackagedSolution.GetModels().ToArray();

                foreach (var model in models)
                {
                    prePackagedSolution.RemoveModel(model);
                }


                var firstModel = new ModelContainerBase();
                firstModel.AdditionalOptions.Add(new OptionValue
                {
                    Name  = DefaultOptions.Model.Order.Id,
                    Value = "100"
                });

                var secondModel = new ModelContainerBase();
                secondModel.AdditionalOptions.Add(new OptionValue
                {
                    Name  = DefaultOptions.Model.Order.Id,
                    Value = "200"
                });

                var thirdModel = new ModelContainerBase();
                thirdModel.AdditionalOptions.Add(new OptionValue
                {
                    Name  = DefaultOptions.Model.Order.Id,
                    Value = "300"
                });

                prePackagedSolution.AddModel(secondModel);
                prePackagedSolution.AddModel(firstModel);
                prePackagedSolution.AddModel(thirdModel);
            },
                                (rawPackage, unpackedPackage) =>
            {
                var solutionPackage         = rawPackage as SolutionPackageBase;
                var unpackedSolutionPackage = unpackedPackage as SolutionPackageBase;

                Assert.IsNotNull(solutionPackage);

                // these should be ordred by Order flag
                var models = unpackedPackage.GetModels();

                var orderValues = models.Select(m =>
                {
                    var orderValue = m.AdditionalOptions
                                     .FirstOrDefault(o => o.Name == DefaultOptions.Model.Order.Id);

                    return(int.Parse(orderValue.Value));
                }).ToArray();

                for (var index = 0; index < orderValues.Count() - 1; index++)
                {
                    var firstOrder  = orderValues[index];
                    var secondOrder = orderValues[index + 1];

                    Assert.IsTrue(firstOrder <= secondOrder);
                }

                // must be array of int-s
            });
        }