private async Task RunPackageValidatorAsync( PackageValidatorContext queuedContext, CancellationToken token) { var feedPackage = queuedContext.Package; Logger.LogInformation("Running PackageValidator on PackageValidatorContext for {PackageId} {PackageVersion}.", feedPackage.Id, feedPackage.Version); var catalogEntries = queuedContext.CatalogEntries; var existingStatus = await _statusService.GetAsync(feedPackage, token); if (catalogEntries != null && existingStatus?.ValidationResult?.CatalogEntries != null && CompareCatalogEntries(catalogEntries, existingStatus.ValidationResult.CatalogEntries)) { // A newer catalog entry of this package has already been validated. Logger.LogInformation("A newer catalog entry of {PackageId} {PackageVersion} has already been processed ({OldCommitTimeStamp} < {NewCommitTimeStamp}).", feedPackage.Id, feedPackage.Version, catalogEntries.Max(c => c.CommitTimeStamp), existingStatus.ValidationResult.CatalogEntries.Max(c => c.CommitTimeStamp)); return; } var context = new PackageValidatorContext(feedPackage, catalogEntries); var result = await _packageValidator.ValidateAsync(context, _client, token); await _notificationService.OnPackageValidationFinishedAsync(result, token); var status = new PackageMonitoringStatus(result); PackageMonitoringStatusAccessConditionHelper.UpdateFromExisting(status, existingStatus); await _statusService.UpdateAsync(status, token); }
public void UpdateFromExistingUpdatesExistingStatus(PackageState previousState, AccessCondition accessCondition, PackageState newState) { // Arrange var feedPackageIdentity = new FeedPackageIdentity("howdy", "3.4.6"); var existingStatus = PackageMonitoringStatusTestUtility.CreateStatusWithPackageValidationResult( feedPackageIdentity.Id, feedPackageIdentity.Version, PackageMonitoringStatusTestUtility.GetTestResultFromPackageState(previousState)); existingStatus.AccessCondition = accessCondition; var newStatus = PackageMonitoringStatusTestUtility.CreateStatusWithPackageValidationResult( feedPackageIdentity.Id, feedPackageIdentity.Version, PackageMonitoringStatusTestUtility.GetTestResultFromPackageState(newState)); // Act PackageMonitoringStatusAccessConditionHelper.UpdateFromExisting(newStatus, existingStatus); // Assert foreach (var state in Enum.GetValues(typeof(PackageState)).Cast <PackageState>()) { PackageMonitoringStatusTestUtility.AssertAccessCondition( state == previousState ? accessCondition : AccessCondition.GenerateIfNotExistsCondition(), newStatus.ExistingState[state]); } }
public void FromContentReturnsEmptyIfNullETag() { var content = new StringStorageContentWithETag("content", null); PackageMonitoringStatusTestUtility.AssertAccessCondition( AccessCondition.GenerateEmptyCondition(), PackageMonitoringStatusAccessConditionHelper.FromContent(content)); }
public void FromContentReturnsMatchIfETag() { var eTag = "etag"; var content = new StringStorageContentWithETag("content", eTag); PackageMonitoringStatusTestUtility.AssertAccessCondition( AccessCondition.GenerateIfMatchCondition(eTag), PackageMonitoringStatusAccessConditionHelper.FromContent(content)); }
public void FromUnknownReturnsEmptyCondition() { PackageMonitoringStatusTestUtility.AssertAccessCondition( AccessCondition.GenerateEmptyCondition(), PackageMonitoringStatusAccessConditionHelper.FromUnknown()); }