public virtual void StartEditPackageRequest(Package p, EditPackageVersionRequest request, User editingUser)
        {
            PackageEdit edit = new PackageEdit
            {
                // Description
                User         = editingUser,
                Authors      = request.Authors,
                Copyright    = request.Copyright,
                Description  = request.Description,
                IconUrl      = request.IconUrl,
                LicenseUrl   = p.LicenseUrl, // Our current policy is not to allow editing the license URL, so just clone it from its previous value.
                ProjectUrl   = request.ProjectUrl,
                ReleaseNotes = request.ReleaseNotes,
                RequiresLicenseAcceptance = request.RequiresLicenseAcceptance,
                Summary = request.Summary,
                Tags    = request.Tags,
                Title   = request.VersionTitle,

                // Other
                Package    = p,
                Timestamp  = DateTime.UtcNow,
                TriedCount = 0,
            };

            EntitiesContext.Set <PackageEdit>().Add(edit);
            // Note: EditPackageRequests are completed asynchronously by the worker role.
        }
Ejemplo n.º 2
0
        public void ApplyEdit(PackageEdit edit, string hashAlgorithm, string hash, long packageFileSize)
        {
            // before we modify this package, record its state in history
            PackageHistories.Add(new PackageHistory(this));

            Title                     = edit.Title;
            FlattenedAuthors          = edit.Authors;
            Copyright                 = edit.Copyright;
            Description               = edit.Description;
            IconUrl                   = edit.IconUrl;
            LicenseUrl                = edit.LicenseUrl;
            ProjectUrl                = edit.ProjectUrl;
            ReleaseNotes              = edit.ReleaseNotes;
            RequiresLicenseAcceptance = edit.RequiresLicenseAcceptance;
            Summary                   = edit.Summary;
            Tags = edit.Tags;
            User = edit.User;

            Hash            = hash;
            HashAlgorithm   = hashAlgorithm;
            PackageFileSize = packageFileSize;

            var now = DateTime.UtcNow;

            LastUpdated = now;
            LastEdited  = now;
        }
        public EditPackageVersionRequest(Package package, PackageEdit pendingMetadata)
        {
            var metadata = pendingMetadata ?? new PackageEdit
            {
                Authors      = package.FlattenedAuthors,
                Copyright    = package.Copyright,
                Description  = package.Description,
                IconUrl      = package.IconUrl,
                LicenseUrl   = package.LicenseUrl,
                ProjectUrl   = package.ProjectUrl,
                ReleaseNotes = package.ReleaseNotes,
                RequiresLicenseAcceptance = package.RequiresLicenseAcceptance,
                Summary = package.Summary,
                Tags    = package.Tags,
                Title   = package.Title,
            };

            Authors      = metadata.Authors;
            Copyright    = metadata.Copyright;
            Description  = metadata.Description;
            IconUrl      = metadata.IconUrl;
            LicenseUrl   = metadata.LicenseUrl;
            ProjectUrl   = metadata.ProjectUrl;
            ReleaseNotes = metadata.ReleaseNotes;
            RequiresLicenseAcceptance = metadata.RequiresLicenseAcceptance;
            Summary      = metadata.Summary;
            Tags         = metadata.Tags;
            VersionTitle = metadata.Title;
        }
Ejemplo n.º 4
0
        public virtual void StartEditPackageRequest(Package p, EditPackageVersionRequest request, User editingUser)
        {
            PackageEdit edit = new PackageEdit
            {
                // Description
                User = editingUser,
                Authors = request.Authors,
                Copyright = request.Copyright,
                Description = request.Description,
                IconUrl = request.IconUrl,
                LicenseUrl = p.LicenseUrl, // Our current policy is not to allow editing the license URL, so just clone it from its previous value.
                ProjectUrl = request.ProjectUrl,
                ReleaseNotes = request.ReleaseNotes,
                RequiresLicenseAcceptance = request.RequiresLicenseAcceptance,
                Summary = request.Summary,
                Tags = request.Tags,
                Title = request.VersionTitle,

                // Other
                Package = p,
                Timestamp = DateTime.UtcNow,
                TriedCount = 0,
            };

            EntitiesContext.Set<PackageEdit>().Add(edit);
            // Note: EditPackageRequests are completed asynchronously by the worker role.
        }
 public EditPackageVersionRequest(Package package, PackageEdit pendingMetadata)
 {
     var metadata = pendingMetadata ?? new PackageEdit
     {
         Authors = package.FlattenedAuthors,
         Copyright = package.Copyright,
         Description = package.Description,
         IconUrl = package.IconUrl,
         LicenseUrl = package.LicenseUrl,
         ProjectUrl = package.ProjectUrl,
         ReleaseNotes = package.ReleaseNotes,
         RequiresLicenseAcceptance = package.RequiresLicenseAcceptance,
         Summary = package.Summary,
         Tags = package.Tags,
         Title = package.Title,
     };
     Authors = metadata.Authors;
     Copyright = metadata.Copyright;
     Description = metadata.Description;
     IconUrl = metadata.IconUrl;
     LicenseUrl = metadata.LicenseUrl;
     ProjectUrl = metadata.ProjectUrl;
     ReleaseNotes = metadata.ReleaseNotes;
     RequiresLicenseAcceptance = metadata.RequiresLicenseAcceptance;
     Summary = metadata.Summary;
     Tags = metadata.Tags;
     VersionTitle = metadata.Title;
 }
Ejemplo n.º 6
0
        public virtual void StartEditPackageRequest(Package package, EditPackageVersionReadMeRequest request, User editingUser)
        {
            var edit = new PackageEdit
            {
                // No longer change these fields as they are no longer editable.
                // To be removed in a next wave of package immutability implementation.
                // (when no pending edits left to be processed in the db)
                Authors      = package.FlattenedAuthors,
                Copyright    = package.Copyright,
                Description  = package.Description,
                IconUrl      = package.IconUrl,
                LicenseUrl   = package.LicenseUrl,
                ProjectUrl   = package.ProjectUrl,
                ReleaseNotes = package.ReleaseNotes,
                RequiresLicenseAcceptance = package.RequiresLicenseAcceptance,
                Summary = package.Summary,
                Tags    = package.Tags,
                Title   = package.Title,

                // Readme
                ReadMeState = request.ReadMeState,

                // Other
                User       = editingUser,
                Package    = package,
                Timestamp  = DateTime.UtcNow,
                TriedCount = 0,
            };

            EntitiesContext.Set <PackageEdit>().Add(edit);
            // Note: EditPackageRequests are completed asynchronously by the worker role.
        }
        public virtual void StartEditPackageRequest(Package p, EditPackageVersionRequest request, User editingUser)
        {
            if (PackageNamingConflictValidator.TitleConflictsWithExistingRegistrationId(p.PackageRegistration.Id, request.VersionTitle))
            {
                throw new EntityException(Strings.TitleMatchesExistingRegistration, request.VersionTitle);
            }

            PackageEdit edit = new PackageEdit
            {
                // Description
                User         = editingUser,
                Authors      = request.Authors,
                Copyright    = request.Copyright,
                Description  = request.Description,
                IconUrl      = request.IconUrl,
                LicenseUrl   = p.LicenseUrl, // Our current policy is not to allow editing the license URL, so just clone it from its previous value.
                ProjectUrl   = request.ProjectUrl,
                ReleaseNotes = request.ReleaseNotes,
                RequiresLicenseAcceptance = request.RequiresLicenseAcceptance,
                Summary     = request.Summary,
                Tags        = request.Tags,
                Title       = request.VersionTitle,
                ReadMeState = request.ReadMeState,

                // Other
                Package    = p,
                Timestamp  = DateTime.UtcNow,
                TriedCount = 0,
            };

            EntitiesContext.Set <PackageEdit>().Add(edit);
            // Note: EditPackageRequests are completed asynchronously by the worker role.
        }
            public void ApplyPackageEditUpdatesPackage()
            {
                var p = new Package
                {
                    Title            = "OldTitle",
                    Description      = "OldDescription",
                    Summary          = "OldSummary",
                    Tags             = "OldTags",
                    FlattenedAuthors = "OldAuthors",
                    Copyright        = "OldCopyright",
                    ReleaseNotes     = "OldReleaseNotes",
                    Hash             = "OldHash",
                    HashAlgorithm    = "SHA512",
                    PackageFileSize  = 0,
                };

                var pe = new PackageEdit
                {
                    Title        = "NewTitle",
                    Description  = "NewDescription",
                    Summary      = "NewSummary",
                    Tags         = "NewTags",
                    Authors      = "NewAuthors",
                    Copyright    = "NewCopyright",
                    ReleaseNotes = "NewReleaseNotes",
                };

                p.PackageEdits.Add(pe);
                p.ApplyEdit(pe, "SHA1024", "NewHash", 1);

                Assert.Equal(1, p.PackageHistories.Count);
                var h = p.PackageHistories.ElementAt(0);

                Assert.Equal("OldTitle", h.Title);
                Assert.Equal("OldDescription", h.Description);
                Assert.Equal("OldSummary", h.Summary);
                Assert.Equal("OldTags", h.Tags);
                Assert.Equal("OldAuthors", h.Authors);
                Assert.Equal("OldCopyright", h.Copyright);
                Assert.Equal("OldReleaseNotes", h.ReleaseNotes);
                Assert.Equal("SHA512", h.HashAlgorithm);
                Assert.Equal("OldHash", h.Hash);
                Assert.Equal(0, h.PackageFileSize);

                Assert.Equal("NewTitle", p.Title);
                Assert.Equal("NewDescription", p.Description);
                Assert.Equal("NewSummary", p.Summary);
                Assert.Equal("NewTags", p.Tags);
                Assert.Equal("NewAuthors", p.FlattenedAuthors);
                Assert.Equal("NewCopyright", p.Copyright);
                Assert.Equal("NewReleaseNotes", p.ReleaseNotes);
                Assert.Equal("SHA1024", p.HashAlgorithm);
                Assert.Equal("NewHash", p.Hash);
                Assert.Equal(1, p.PackageFileSize);

                Assert.Equal(1, p.PackageEdits.Count); // It has to be deleted from the ObjectContext anyway so no point trying to delete it as part of ApplyEdit.
            }
Ejemplo n.º 9
0
            public void ApplyPackageEditUpdatesPackage()
            {
                var p = new Package
                {
                    Title = "OldTitle",
                    Description = "OldDescription",
                    Summary = "OldSummary",
                    Tags = "OldTags",
                    FlattenedAuthors = "OldAuthors",
                    Copyright = "OldCopyright",
                    ReleaseNotes = "OldReleaseNotes",
                    Hash = "OldHash",
                    HashAlgorithm = "SHA512",
                    PackageFileSize = 0,
                };

                var pe = new PackageEdit
                {
                    Title = "NewTitle",
                    Description = "NewDescription",
                    Summary = "NewSummary",
                    Tags = "NewTags",
                    Authors = "NewAuthors",
                    Copyright = "NewCopyright",
                    ReleaseNotes = "NewReleaseNotes",
                };

                p.PackageEdits.Add(pe);
                p.ApplyEdit(pe, "SHA1024", "NewHash", 1);

                Assert.Equal(1, p.PackageHistories.Count);
                var h = p.PackageHistories.ElementAt(0);
                Assert.Equal("OldTitle", h.Title);
                Assert.Equal("OldDescription", h.Description);
                Assert.Equal("OldSummary", h.Summary);
                Assert.Equal("OldTags", h.Tags);
                Assert.Equal("OldAuthors", h.Authors);
                Assert.Equal("OldCopyright", h.Copyright);
                Assert.Equal("OldReleaseNotes", h.ReleaseNotes);
                Assert.Equal("SHA512", h.HashAlgorithm);
                Assert.Equal("OldHash", h.Hash);
                Assert.Equal(0, h.PackageFileSize);

                Assert.Equal("NewTitle", p.Title);
                Assert.Equal("NewDescription", p.Description);
                Assert.Equal("NewSummary", p.Summary);
                Assert.Equal("NewTags", p.Tags);
                Assert.Equal("NewAuthors", p.FlattenedAuthors);
                Assert.Equal("NewCopyright", p.Copyright);
                Assert.Equal("NewReleaseNotes", p.ReleaseNotes);
                Assert.Equal("SHA1024", p.HashAlgorithm);
                Assert.Equal("NewHash", p.Hash);
                Assert.Equal(1, p.PackageFileSize);

                Assert.Equal(1, p.PackageEdits.Count); // It has to be deleted from the ObjectContext anyway so no point trying to delete it as part of ApplyEdit.
            }
Ejemplo n.º 10
0
        public void ReadMeState_WhenInternalIsStringReturnsState(string internalValue, PackageEditReadMeState expectedState)
        {
            // Arrange & Act
            var edit = new PackageEdit {
                ReadMeStateInternal = internalValue
            };

            // Assert
            Assert.Equal(expectedState, edit.ReadMeState);
        }
Ejemplo n.º 11
0
        public void ReadMeState_WhenSetToChangedSavesInternalAsString(PackageEditReadMeState changedState, string expectedInternalValue)
        {
            // Arrange & Act
            var edit = new PackageEdit {
                ReadMeStateInternal = null
            };

            edit.ReadMeState = changedState;

            // Assert
            Assert.Equal(expectedInternalValue, edit.ReadMeStateInternal);
        }
Ejemplo n.º 12
0
        public void ReadMeState_WhenSetToUnchangedSavesInternalAsNull()
        {
            // Arrange & Act
            var edit = new PackageEdit {
                ReadMeStateInternal = "changed"
            };

            edit.ReadMeState = PackageEditReadMeState.Unchanged;

            // Assert
            Assert.Null(edit.ReadMeStateInternal);
        }
Ejemplo n.º 13
0
 public void SetPendingMetadata(PackageEdit pendingMetadata)
 {
     HasPendingMetadata = true;
     Authors = pendingMetadata.Authors;
     Copyright = pendingMetadata.Copyright;
     Description = pendingMetadata.Description;
     IconUrl = pendingMetadata.IconUrl;
     LicenseUrl = pendingMetadata.LicenseUrl;
     ProjectUrl = pendingMetadata.ProjectUrl;
     ReleaseNotes = pendingMetadata.ReleaseNotes;
     Tags = pendingMetadata.Tags.ToStringSafe().Split(new[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);
     Title = pendingMetadata.Title;
 }
Ejemplo n.º 14
0
        public void ApplyEdit(PackageEdit edit, string hashAlgorithm, string hash, long packageFileSize)
        {
            // before we modify this package, record its state in history
            PackageHistories.Add(new PackageHistory(this));

            Title = edit.Title;
            FlattenedAuthors = edit.Authors;
            Copyright = edit.Copyright;
            Description = edit.Description;
            IconUrl = edit.IconUrl;
            LicenseUrl = edit.LicenseUrl;
            ProjectUrl = edit.ProjectUrl;
            ReleaseNotes = edit.ReleaseNotes;
            RequiresLicenseAcceptance = edit.RequiresLicenseAcceptance;
            Summary = edit.Summary;
            Tags = edit.Tags;
            User = edit.User;

            Hash = hash;
            HashAlgorithm = hashAlgorithm;
            PackageFileSize = packageFileSize;

            var now = DateTime.UtcNow;
            LastUpdated = now;
            LastEdited = now;
        }