public async Task DeletesReadmeFromPublicStorageOnDbUpdateFailure(EmbeddedReadmeFileType readmeFileType, PackageStatus originalStatus, bool expectedDelete)
            {
                Package.PackageStatusKey   = originalStatus;
                Package.EmbeddedReadmeType = readmeFileType;
                Package.HasReadMe          = true;

                var expected = new Exception("Everything failed");

                PackageServiceMock
                .Setup(ps => ps.UpdateStatusAsync(Package, PackageStatus.Available, true))
                .Throws(expected);

                var actual = await Assert.ThrowsAsync <Exception>(
                    () => Target.SetStatusAsync(PackageValidatingEntity, ValidationSet, PackageStatus.Available));

                Assert.Same(expected, actual);

                if (expectedDelete)
                {
                    CoreReadmeFileServiceMock
                    .Verify(clfs => clfs.DeleteReadmeFileAsync(Package.Id, Package.NormalizedVersion), Times.Once);
                    CoreReadmeFileServiceMock
                    .Verify(clfs => clfs.DeleteReadmeFileAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Once);
                }
                else
                {
                    CoreReadmeFileServiceMock
                    .Verify(clfs => clfs.DeleteReadmeFileAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Never);
                }
            }
            public async Task SavesPackageReadmeFileWhenPresent(EmbeddedReadmeFileType readmeFileType, bool expectedSave)
            {
                var content = "Hello, world.";
                var stream  = new MemoryStream(Encoding.ASCII.GetBytes(content));

                Package.EmbeddedReadmeType = readmeFileType;
                Package.HasReadMe          = true;
                PackageFileServiceMock
                .Setup(x => x.DownloadPackageFileToDiskAsync(ValidationSet, SasDefinitionConfiguration.PackageStatusProcessorSasDefinition))
                .ReturnsAsync(stream);

                await Target.SetStatusAsync(PackageValidatingEntity, ValidationSet, PackageStatus.Available);

                if (expectedSave)
                {
                    CoreReadmeFileServiceMock
                    .Verify(clfs => clfs.ExtractAndSaveReadmeFileAsync(PackageValidatingEntity.EntityRecord, stream), Times.Once);
                    CoreReadmeFileServiceMock
                    .Verify(clfs => clfs.ExtractAndSaveReadmeFileAsync(It.IsAny <Package>(), It.IsAny <Stream>()), Times.Once);
                }
                else
                {
                    CoreReadmeFileServiceMock
                    .Verify(clfs => clfs.ExtractAndSaveReadmeFileAsync(It.IsAny <Package>(), It.IsAny <Stream>()), Times.Never);
                }
            }
Пример #3
0
            public async Task WillThrowIfPackageIsMissingPackageRegistration(EmbeddedReadmeFileType readmeFileType)
            {
                var service = CreateService();
                var package = new Package {
                    PackageRegistration = null, EmbeddedReadmeType = readmeFileType
                };

                var ex = await Assert.ThrowsAsync <ArgumentException>(() => service.DownloadReadmeFileAsync(package));

                Assert.StartsWith("The package is missing required data.", ex.Message);
                Assert.Equal("package", ex.ParamName);
            }
Пример #4
0
            public async Task WillUseNormalizedRegularVersionIfNormalizedVersionMissing(EmbeddedReadmeFileType readmeFileType)
            {
                var fileStorageSvc      = new Mock <ICoreFileStorageService>();
                var service             = CreateService(fileStorageService: fileStorageSvc);
                var packageRegistration = new PackageRegistration {
                    Id = "theId"
                };
                var package = new Package {
                    PackageRegistration = packageRegistration, NormalizedVersion = null, Version = "01.01.01", EmbeddedReadmeType = readmeFileType
                };

                await service.DownloadReadmeFileAsync(package);

                fileStorageSvc
                .Verify(fss => fss.GetFileAsync(CoreConstants.Folders.PackagesContentFolderName, BuildReadmeFileName("theId", "1.1.1")),
                        Times.Once);
                fileStorageSvc
                .Verify(fss => fss.GetFileAsync(It.IsAny <string>(), It.IsAny <string>()),
                        Times.Once);
            }