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 async Task UpdateDeletesOldStatuses(PackageState?previousState) { // Arrange var feedPackageIdentity = new FeedPackageIdentity("howdy", "3.4.6"); 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); var etag = "theETag"; foreach (var state in Enum.GetValues(typeof(PackageState)).Cast <PackageState>()) { if (previousState != state) { status.ExistingState[state] = AccessCondition.GenerateIfNotExistsCondition(); continue; } var content = new StringStorageContentWithETag("{}", etag); await SaveToStorage(storageFactory, state, feedPackageIdentity, content); status.ExistingState[state] = AccessCondition.GenerateIfMatchCondition(etag); } // Act await statusService.UpdateAsync(status, CancellationToken.None); // Assert foreach (var state in Enum.GetValues(typeof(PackageState)).Cast <PackageState>()) { Assert.Equal( state == status.State, DoesPackageExists(storageFactory, state, feedPackageIdentity)); } PackageMonitoringStatusTestUtility.AssertStatus( status, await statusService.GetAsync(feedPackageIdentity, CancellationToken.None)); }
protected override async Task OnSaveAsync(Uri resourceUri, StorageContent content, CancellationToken cancellationToken) { if (content is StringStorageContentWithAccessCondition accessConditionContent) { // Verify the access condition of this request. var accessCondition = accessConditionContent.AccessCondition; AssertAccessCondition(resourceUri, accessCondition); } if (content is StringStorageContent stringStorageContent && !(content is StringStorageContentWithETag)) { // Give this content an ETag content = new StringStorageContentWithETag( stringStorageContent.Content, Guid.NewGuid().ToString(), stringStorageContent.ContentType, stringStorageContent.CacheControl); } Content[resourceUri] = content; using (var memoryStream = new MemoryStream()) { var contentStream = content.GetContentStream(); await contentStream.CopyToAsync(memoryStream); if (contentStream.CanSeek) { contentStream.Position = 0; } ContentBytes[resourceUri] = memoryStream.ToArray(); } ListMock[resourceUri] = CreateStorageListItem(resourceUri); }