コード例 #1
0
        public async Task GetByStateNoResults()
        {
            // Arrange
            var statusService = new PackageMonitoringStatusService(
                new MemoryStorageFactory(),
                new Mock <ILogger <PackageMonitoringStatusService> >().Object);

            // Act & Assert
            foreach (var state in Enum.GetValues(typeof(PackageState)).Cast <PackageState>())
            {
                var statuses = await statusService.GetAsync(state, CancellationToken.None);

                Assert.Empty(statuses);
            }
        }
        public async Task GetByStateNoResults()
        {
            // Arrange
            var statusService = new PackageMonitoringStatusService(
                new MemoryStorageFactory(),
                new Mock <ILogger <PackageMonitoringStatusService> >().Object);

            // Act
            var validStatuses = await statusService.GetAsync(PackageState.Valid, CancellationToken.None);

            var invalidStatuses = await statusService.GetAsync(PackageState.Invalid, CancellationToken.None);

            // Assert
            Assert.Empty(validStatuses);
            Assert.Empty(invalidStatuses);
        }
        public async Task GetByPackageNoResults()
        {
            // Arrange
            var statusService = new PackageMonitoringStatusService(
                new MemoryStorageFactory(),
                new Mock <ILogger <PackageMonitoringStatusService> >().Object);

            var desiredPackageId      = "missingpackage";
            var desiredPackageVersion = "9.1.1";

            // Act
            var status = await statusService.GetAsync(new FeedPackageIdentity(desiredPackageId, desiredPackageVersion), CancellationToken.None);

            // Assert
            Assert.Null(status);
        }
        public async Task UpdateDeletesOldStatuses()
        {
            // Arrange
            var feedPackageIdentity = new FeedPackageIdentity("howdy", "3.4.6");
            var packageFileName     = GetPackageFileName(feedPackageIdentity.Id, feedPackageIdentity.Version);

            var packageValidationResult = new PackageValidationResult(
                new PackageIdentity(feedPackageIdentity.Id, new NuGetVersion(feedPackageIdentity.Version)),
                null,
                null,
                Enumerable.Empty <AggregateValidationResult>());
            var status = new PackageMonitoringStatus(packageValidationResult);

            var storageFactory = new MemoryStorageFactory();

            var statusService = new PackageMonitoringStatusService(
                storageFactory,
                new Mock <ILogger <PackageMonitoringStatusService> >().Object);

            foreach (var state in Enum.GetNames(typeof(PackageState)))
            {
                var storage = storageFactory.Create(state.ToLowerInvariant());
                await storage.SaveAsync(storage.ResolveUri(packageFileName), new StringStorageContent("{}"), CancellationToken.None);

                Assert.True(storage.Exists(packageFileName));
            }

            // Act
            await statusService.UpdateAsync(status, CancellationToken.None);

            // Assert
            foreach (var state in Enum.GetNames(typeof(PackageState)))
            {
                var storage = storageFactory.Create(state.ToLowerInvariant());

                if ((PackageState)Enum.Parse(typeof(PackageState), state) == status.State)
                {
                    Assert.True(storage.Exists(packageFileName));
                }
                else
                {
                    Assert.False(storage.Exists(packageFileName));
                }
            }

            AssertStatus(status, await statusService.GetAsync(feedPackageIdentity, CancellationToken.None));
        }
        public async Task GetByState()
        {
            // Arrange
            var statusService = new PackageMonitoringStatusService(
                new MemoryStorageFactory(),
                new Mock <ILogger <PackageMonitoringStatusService> >().Object);

            var expectedValidStatuses = new PackageMonitoringStatus[]
            {
                CreateStatusWithPackageValidationResult("newtonsoft.json", "9.0.2", new ValidationResult[] { CreateValidationResult(TestResult.Pass, null) }),
                CreateStatusWithPackageValidationResult("a.b", "1.2.3", new ValidationResult[] { CreateValidationResult(TestResult.Pass, null) }),
                CreateStatusWithPackageValidationResult("newtonsoft.json", "6.0.8", new ValidationResult[] { CreateValidationResult(TestResult.Skip, null) }),
                CreateStatusWithPackageValidationResult("a.b", "0.8.9", new ValidationResult[] { CreateValidationResult(TestResult.Skip, null) })
            };

            var expectedInvalidStatuses = new PackageMonitoringStatus[]
            {
                CreateStatusWithPackageValidationResult("jQuery", "3.1.2", new ValidationResult[] { CreateValidationResult(TestResult.Fail, new ValidationException("malarky!")) }),
                CreateStatusWithPackageValidationResult("EntityFramework", "6.1.2", new ValidationResult[] { CreateValidationResult(TestResult.Fail, new ValidationException("absurd!")) }),
                CreateStatusWithException("NUnit", "3.6.1")
            };

            foreach (var expectedValidStatus in expectedValidStatuses)
            {
                await statusService.UpdateAsync(expectedValidStatus, CancellationToken.None);
            }
            foreach (var expectedInvalidStatus in expectedInvalidStatuses)
            {
                await statusService.UpdateAsync(expectedInvalidStatus, CancellationToken.None);
            }

            // Act
            var validStatuses = await statusService.GetAsync(PackageState.Valid, CancellationToken.None);

            var invalidStatuses = await statusService.GetAsync(PackageState.Invalid, CancellationToken.None);

            // Assert
            AssertAll(
                expectedValidStatuses.OrderBy(s => s.Package.Id).ThenBy(s => s.Package.Version),
                validStatuses.OrderBy(s => s.Package.Id).ThenBy(s => s.Package.Version),
                AssertStatus);
            AssertAll(
                expectedInvalidStatuses.OrderBy(s => s.Package.Id).ThenBy(s => s.Package.Version),
                invalidStatuses.OrderBy(s => s.Package.Id).ThenBy(s => s.Package.Version),
                AssertStatus);
        }
コード例 #6
0
        public async Task GetByPackageWithPackageValidationResult()
        {
            // Arrange
            var statusService = new PackageMonitoringStatusService(
                new MemoryStorageFactory(),
                new Mock <ILogger <PackageMonitoringStatusService> >().Object);

            var undesiredStatuses = new PackageMonitoringStatus[]
            {
                PackageMonitoringStatusTestUtility.CreateStatusWithPackageValidationResult(
                    "json.newtonsoft",
                    "1.0.9",
                    TestResult.Pass),
                PackageMonitoringStatusTestUtility.CreateStatusWithPackageValidationResult(
                    "json.newtonsoft.json",
                    "1.0.9.1",
                    TestResult.Fail),
                PackageMonitoringStatusTestUtility.CreateStatusWithPackageValidationResult(
                    "j.n.j",
                    "1.9.1",
                    TestResult.Skip),
                PackageMonitoringStatusTestUtility.CreateStatusWithPackageValidationResult(
                    "newtonsoft.json",
                    "9.0.2",
                    TestResult.Pass)
            };

            var desiredPackageId      = "newtonsoft.json";
            var desiredPackageVersion = "9.0.1";
            var desiredStatus         = PackageMonitoringStatusTestUtility.CreateStatusWithPackageValidationResult(
                desiredPackageId,
                desiredPackageVersion,
                TestResult.Pass);

            await statusService.UpdateAsync(desiredStatus, CancellationToken.None);

            await Task.WhenAll(undesiredStatuses.Select(s => statusService.UpdateAsync(s, CancellationToken.None)));

            // Act
            var status = await statusService.GetAsync(new FeedPackageIdentity(desiredPackageId, desiredPackageVersion), CancellationToken.None);

            // Assert
            PackageMonitoringStatusTestUtility.AssertStatus(desiredStatus, status);
        }