コード例 #1
0
        public async Task AddPackageAsync_WithValidVersion_PopulatesStorageWithNupkgAndNuspec(string version)
        {
            var catalogToDnxStorage        = new MemoryStorage();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker             = new DnxMaker(catalogToDnxStorageFactory);
            var normalizedVersion = NuGetVersionUtility.NormalizeVersion(version);

            using (var nupkgStream = CreateFakePackageStream(_nupkgData))
            {
                var dnxEntry = await maker.AddPackageAsync(nupkgStream, _nuspecData, _packageId, version, CancellationToken.None);

                var expectedNuspec    = new Uri($"{catalogToDnxStorage.BaseAddress}{_packageId}/{normalizedVersion}/{_packageId}.nuspec");
                var expectedNupkg     = new Uri($"{catalogToDnxStorage.BaseAddress}{_packageId}/{normalizedVersion}/{_packageId}.{normalizedVersion}.nupkg");
                var storageForPackage = (MemoryStorage)catalogToDnxStorageFactory.Create(_packageId);

                Assert.Equal(expectedNuspec, dnxEntry.Nuspec);
                Assert.Equal(expectedNupkg, dnxEntry.Nupkg);
                Assert.Equal(2, catalogToDnxStorage.Content.Count);
                Assert.Equal(2, storageForPackage.Content.Count);

                Verify(catalogToDnxStorage, expectedNupkg, _nupkgData, _expectedCacheControl, _expectedPackageContentType);
                Verify(catalogToDnxStorage, expectedNuspec, _nuspecData, _expectedCacheControl, _expectedNuspecContentType);
                Verify(storageForPackage, expectedNupkg, _nupkgData, _expectedCacheControl, _expectedPackageContentType);
                Verify(storageForPackage, expectedNuspec, _nuspecData, _expectedCacheControl, _expectedNuspecContentType);
            }
        }
コード例 #2
0
        public async Task UpdatePackageVersionIndexAsync_WithMultipleVersions_SortsVersion()
        {
            var unorderedVersions = new[]
            {
                NuGetVersion.Parse("3.0.0"),
                NuGetVersion.Parse("1.1.0"),
                NuGetVersion.Parse("1.0.0"),
                NuGetVersion.Parse("1.0.1"),
                NuGetVersion.Parse("2.0.0"),
                NuGetVersion.Parse("1.0.2")
            };
            var catalogToDnxStorage        = new MemoryStorage();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker = new DnxMaker(catalogToDnxStorageFactory);

            await maker.UpdatePackageVersionIndexAsync(_packageId, v => v.UnionWith(unorderedVersions), CancellationToken.None);

            var storageForPackage = (MemoryStorage)catalogToDnxStorageFactory.Create(_packageId);
            var indexJsonUri      = new Uri(storageForPackage.BaseAddress, "index.json");
            var indexJson         = await storageForPackage.LoadAsync(indexJsonUri, CancellationToken.None);

            var indexObject = JObject.Parse(indexJson.GetContentString());
            var versions    = indexObject["versions"].ToObject <string[]>();

            Assert.Equal(1, catalogToDnxStorage.Content.Count);
            Assert.Equal(1, storageForPackage.Content.Count);
            Assert.Collection(
                versions,
                version => Assert.Equal(unorderedVersions[2].ToNormalizedString(), version),
                version => Assert.Equal(unorderedVersions[3].ToNormalizedString(), version),
                version => Assert.Equal(unorderedVersions[5].ToNormalizedString(), version),
                version => Assert.Equal(unorderedVersions[1].ToNormalizedString(), version),
                version => Assert.Equal(unorderedVersions[4].ToNormalizedString(), version),
                version => Assert.Equal(unorderedVersions[0].ToNormalizedString(), version));
        }
コード例 #3
0
        public async Task UpdatePackageVersionIndexAsync_WhenLastVersionRemoved_RemovesIndex()
        {
            var version                    = NuGetVersion.Parse("1.0.0");
            var catalogToDnxStorage        = new MemoryStorage();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker = new DnxMaker(catalogToDnxStorageFactory);

            await maker.UpdatePackageVersionIndexAsync(_packageId, v => v.Add(version), CancellationToken.None);

            var storageForPackage = (MemoryStorage)catalogToDnxStorageFactory.Create(_packageId);
            var indexJsonUri      = new Uri(storageForPackage.BaseAddress, "index.json");
            var indexJson         = await storageForPackage.LoadAsync(indexJsonUri, CancellationToken.None);

            Assert.NotNull(indexJson);
            Assert.Equal(1, catalogToDnxStorage.Content.Count);
            Assert.Equal(1, storageForPackage.Content.Count);

            await maker.UpdatePackageVersionIndexAsync(_packageId, v => v.Remove(version), CancellationToken.None);

            indexJson = await storageForPackage.LoadAsync(indexJsonUri, CancellationToken.None);

            Assert.Null(indexJson);
            Assert.Equal(0, catalogToDnxStorage.Content.Count);
            Assert.Equal(0, storageForPackage.Content.Count);
        }
コード例 #4
0
        public async Task UpdatePackageVersionIndexAsync_WithValidVersion_CreatesIndex(string version)
        {
            var catalogToDnxStorage        = new MemoryStorage();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker             = new DnxMaker(catalogToDnxStorageFactory);
            var normalizedVersion = NuGetVersionUtility.NormalizeVersion(version);

            await maker.UpdatePackageVersionIndexAsync(_packageId, v => v.Add(NuGetVersion.Parse(version)), CancellationToken.None);

            var storageForPackage = (MemoryStorage)catalogToDnxStorageFactory.Create(_packageId);
            var indexJsonUri      = new Uri(storageForPackage.BaseAddress, "index.json");
            var indexJson         = await storageForPackage.LoadAsync(indexJsonUri, CancellationToken.None);

            var indexObject     = JObject.Parse(indexJson.GetContentString());
            var versions        = indexObject["versions"].ToObject <string[]>();
            var expectedContent = GetExpectedIndexJsonContent(normalizedVersion);

            Assert.Equal(1, catalogToDnxStorage.Content.Count);
            Assert.Equal(1, storageForPackage.Content.Count);

            Verify(catalogToDnxStorage, indexJsonUri, expectedContent, _expectedPackageVersionIndexJsonCacheControl, _expectedPackageVersionIndexJsonContentType);
            Verify(storageForPackage, indexJsonUri, expectedContent, _expectedPackageVersionIndexJsonCacheControl, _expectedPackageVersionIndexJsonContentType);

            Assert.Equal(new[] { normalizedVersion }, versions);
        }
コード例 #5
0
        public async Task AddPackageAsync_WithStorage_WithIStorage_PopulatesStorageWithNupkgAndNuspec(string version)
        {
            var catalogToDnxStorage        = new AzureStorageStub();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker             = new DnxMaker(catalogToDnxStorageFactory);
            var normalizedVersion = NuGetVersionUtility.NormalizeVersion(version);
            var sourceStorage     = new AzureStorageStub();

            var dnxEntry = await maker.AddPackageAsync(
                sourceStorage,
                _nuspecData,
                _packageId,
                normalizedVersion,
                CancellationToken.None);

            var expectedNuspecUri = new Uri($"{catalogToDnxStorage.BaseAddress}{_packageId}/{normalizedVersion}/{_packageId}.nuspec");
            var expectedNupkgUri  = new Uri($"{catalogToDnxStorage.BaseAddress}{_packageId}/{normalizedVersion}/{_packageId}.{normalizedVersion}.nupkg");
            var expectedSourceUri = new Uri(sourceStorage.BaseAddress, $"{_packageId}.{normalizedVersion}.nupkg");
            var storageForPackage = (MemoryStorage)catalogToDnxStorageFactory.Create(_packageId);

            Assert.Equal(expectedNuspecUri, dnxEntry.Nuspec);
            Assert.Equal(expectedNupkgUri, dnxEntry.Nupkg);
            Assert.Equal(2, catalogToDnxStorage.Content.Count);
            Assert.Equal(2, storageForPackage.Content.Count);

            Verify(catalogToDnxStorage, expectedNupkgUri, expectedSourceUri.AbsoluteUri, _expectedCacheControl, _expectedPackageContentType);
            Verify(catalogToDnxStorage, expectedNuspecUri, _nuspecData, _expectedCacheControl, _expectedNuspecContentType);
            Verify(storageForPackage, expectedNupkgUri, expectedSourceUri.AbsoluteUri, _expectedCacheControl, _expectedPackageContentType);
            Verify(storageForPackage, expectedNuspecUri, _nuspecData, _expectedCacheControl, _expectedNuspecContentType);
        }
コード例 #6
0
ファイル: DnxMakerTests.cs プロジェクト: nikhgup/NuGet.Jobs
        public async Task AddPackageAsync_WithStorage_WhenEmbeddedIconPresent_SavesIcon(string iconFilename, string expectedContentType)
        {
            const string version         = "1.2.3";
            const string imageContent    = "Test image data";
            var          imageDataBuffer = Encoding.UTF8.GetBytes(imageContent);

            var catalogToDnxStorage        = new AzureStorageStub();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker             = new DnxMaker(catalogToDnxStorageFactory, Mock.Of <ITelemetryService>(), Mock.Of <ILogger>());
            var sourceStorageMock = new Mock <IAzureStorage>();

            using (var nupkgStream = await CreateNupkgStreamWithIcon(iconFilename, imageDataBuffer))
            {
                var cloudBlobMock = new Mock <ICloudBlockBlob>();
                cloudBlobMock
                .Setup(cb => cb.GetStreamAsync(It.IsAny <CancellationToken>()))
                .ReturnsAsync(nupkgStream);

                sourceStorageMock
                .Setup(ss => ss.GetCloudBlockBlobReferenceAsync(It.IsAny <Uri>()))
                .ReturnsAsync(cloudBlobMock.Object);

                await maker.AddPackageAsync(sourceStorageMock.Object, _nuspecData, _packageId, version, iconFilename, CancellationToken.None);

                var expectedIconUrl = new Uri($"{catalogToDnxStorage.BaseAddress}{_packageId}/{version}/icon");
                Verify(catalogToDnxStorage, expectedIconUrl, imageContent, _expectedCacheControl, expectedContentType);
            }
        }
コード例 #7
0
        public void GetRelativeAddressNupkg_WhenVersionIsNullOrEmpty_Throws(string version)
        {
            var exception = Assert.Throws <ArgumentException>(
                () => DnxMaker.GetRelativeAddressNupkg(id: "a", version: version));

            Assert.Equal("version", exception.ParamName);
            Assert.StartsWith("The argument must not be null or empty.", exception.Message);
        }
コード例 #8
0
        public async Task HasPackageInIndexAsync_WhenPackageIdAndVersionDoNotExist_ReturnsFalse()
        {
            var catalogToDnxStorage        = new MemoryStorage();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker             = new DnxMaker(catalogToDnxStorageFactory);
            var storageForPackage = (MemoryStorage)catalogToDnxStorageFactory.Create(_packageId);

            var hasPackageInIndex = await maker.HasPackageInIndexAsync(storageForPackage, _packageId, "1.0.0", CancellationToken.None);

            Assert.False(hasPackageInIndex);
        }
コード例 #9
0
ファイル: DnxMakerTests.cs プロジェクト: nikhgup/NuGet.Jobs
        public async Task HasPackageInIndexAsync_WhenPackageIdExistsButVersionDoesNotExist_ReturnsFalse()
        {
            var catalogToDnxStorage        = new MemoryStorage();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker = new DnxMaker(catalogToDnxStorageFactory, Mock.Of <ITelemetryService>(), Mock.Of <ILogger>());

            await maker.UpdatePackageVersionIndexAsync(_packageId, v => v.Add(NuGetVersion.Parse("1.0.0")), CancellationToken.None);

            var storageForPackage = (MemoryStorage)catalogToDnxStorageFactory.Create(_packageId);

            var hasPackageInIndex = await maker.HasPackageInIndexAsync(storageForPackage, _packageId, "2.0.0", CancellationToken.None);

            Assert.False(hasPackageInIndex);
        }
コード例 #10
0
        public async Task UpdatePackageVersionIndexAsync_WithNoVersions_DoesNotCreateIndex()
        {
            var catalogToDnxStorage        = new MemoryStorage();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker = new DnxMaker(catalogToDnxStorageFactory);

            await maker.UpdatePackageVersionIndexAsync(_packageId, v => { }, CancellationToken.None);

            var storageForPackage = (MemoryStorage)catalogToDnxStorageFactory.Create(_packageId);
            var indexJsonUri      = new Uri(storageForPackage.BaseAddress, "index.json");
            var indexJson         = await storageForPackage.LoadAsync(indexJsonUri, CancellationToken.None);

            Assert.Null(indexJson);
            Assert.Equal(0, catalogToDnxStorage.Content.Count);
            Assert.Equal(0, storageForPackage.Content.Count);
        }
コード例 #11
0
        public async Task HasPackageInIndexAsync_WhenPackageIdAndVersionExist_ReturnsTrue()
        {
            var catalogToDnxStorage        = new MemoryStorage();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker = new DnxMaker(catalogToDnxStorageFactory);

            const string version = "1.0.0";

            await maker.UpdatePackageVersionIndexAsync(_packageId, v => v.Add(NuGetVersion.Parse(version)), CancellationToken.None);

            var storageForPackage = (MemoryStorage)catalogToDnxStorageFactory.Create(_packageId);

            var hasPackageInIndex = await maker.HasPackageInIndexAsync(storageForPackage, _packageId, version, CancellationToken.None);

            Assert.True(hasPackageInIndex);
        }
コード例 #12
0
ファイル: DnxMakerTests.cs プロジェクト: nikhgup/NuGet.Jobs
        public async Task AddPackageAsync_WhenEmbeddedIconPresent_SavesIcon(string iconFilename, string expectedContentType)
        {
            const string version         = "1.2.3";
            const string imageContent    = "Test image data";
            var          imageDataBuffer = Encoding.UTF8.GetBytes(imageContent);

            var catalogToDnxStorage        = new MemoryStorage();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker = new DnxMaker(catalogToDnxStorageFactory, Mock.Of <ITelemetryService>(), Mock.Of <ILogger>());

            using (var nupkgStream = await CreateNupkgStreamWithIcon(iconFilename, imageDataBuffer))
            {
                await maker.AddPackageAsync(nupkgStream, _nuspecData, _packageId, version, iconFilename, CancellationToken.None);

                var expectedIconUrl = new Uri($"{catalogToDnxStorage.BaseAddress}{_packageId}/{version}/icon");
                Verify(catalogToDnxStorage, expectedIconUrl, imageContent, _expectedCacheControl, expectedContentType);
            }
        }
コード例 #13
0
        public async Task DeletePackageAsync_WithValidVersion_RemovesNupkgAndNuspecFromStorage(string version)
        {
            var catalogToDnxStorage        = new MemoryStorage();
            var catalogToDnxStorageFactory = new TestStorageFactory(name => catalogToDnxStorage.WithName(name));
            var maker = new DnxMaker(catalogToDnxStorageFactory);

            using (var nupkgStream = CreateFakePackageStream(_nupkgData))
            {
                var dnxEntry = await maker.AddPackageAsync(nupkgStream, _nuspecData, _packageId, version, CancellationToken.None);

                var storageForPackage = (MemoryStorage)catalogToDnxStorageFactory.Create(_packageId);

                Assert.Equal(2, catalogToDnxStorage.Content.Count);
                Assert.Equal(2, storageForPackage.Content.Count);

                await maker.DeletePackageAsync(_packageId, version, CancellationToken.None);

                Assert.Equal(0, catalogToDnxStorage.Content.Count);
                Assert.Equal(0, storageForPackage.Content.Count);
            }
        }