public async Task TryCreate_WhenOnlyOneResourceIsPresent_ReturnsThatResource(string resourceUrl, string resourceType) { var serviceEntry = new ServiceIndexEntry(new Uri(resourceUrl), resourceType, _defaultVersion); var resourceProviders = new ResourceProvider[] { CreateServiceIndexResourceV3Provider(serviceEntry), StaticHttpSource.CreateHttpSource( new Dictionary <string, string>() { { serviceEntry.Uri.AbsoluteUri, GetRepositorySignaturesResourceJson(resourceUrl) } }), _repositorySignatureResourceProvider }; var sourceRepository = new SourceRepository(_packageSource, resourceProviders); var result = await _repositorySignatureResourceProvider.TryCreate(sourceRepository, CancellationToken.None); Assert.True(result.Item1); var resource = result.Item2 as RepositorySignatureResource; Assert.NotNull(resource); Assert.Equal(_packageSource.Source, resource.Source); Assert.Single(resource.RepositoryCertificateInfos); }
public async Task TryCreate_WhenResourceIsPresent_CreatesVersionedHttpCacheEntry(string resourceUrl, string resourceType, string expectedCacheKey) { var serviceEntry = new ServiceIndexEntry(new Uri(resourceUrl), resourceType, _defaultVersion); var responses = new Dictionary <string, string>() { { serviceEntry.Uri.AbsoluteUri, GetRepositorySignaturesResourceJson(resourceUrl) } }; var httpSource = new TestHttpSource(_packageSource, responses); var resourceProviders = new ResourceProvider[] { CreateServiceIndexResourceV3Provider(serviceEntry), StaticHttpSource.CreateHttpSource(responses, httpSource: httpSource), _repositorySignatureResourceProvider }; var sourceRepository = new SourceRepository(_packageSource, resourceProviders); string actualCacheKey = null; httpSource.HttpSourceCachedRequestInspector = request => { actualCacheKey = request.CacheKey; }; var result = await _repositorySignatureResourceProvider.TryCreate(sourceRepository, CancellationToken.None); Assert.True(result.Item1); Assert.Equal(expectedCacheKey, actualCacheKey); }
public async Task TryCreate_WhenMultipleResourcesArePresent_Returns500Resource() { var serviceEntry470 = new ServiceIndexEntry(new Uri(_resourceUri470), _resourceType470, _defaultVersion); var serviceEntry490 = new ServiceIndexEntry(new Uri(_resourceUri490), _resourceType490, _defaultVersion); var serviceEntry500 = new ServiceIndexEntry(new Uri(_resourceUri500), _resourceType500, _defaultVersion); var resourceProviders = new ResourceProvider[] { CreateServiceIndexResourceV3Provider(serviceEntry470, serviceEntry490, serviceEntry500), StaticHttpSource.CreateHttpSource( new Dictionary <string, string>() { { serviceEntry470.Uri.AbsoluteUri, GetRepositorySignaturesResourceJson(serviceEntry470.Uri.AbsoluteUri) }, { serviceEntry490.Uri.AbsoluteUri, GetRepositorySignaturesResourceJson(serviceEntry490.Uri.AbsoluteUri) }, { serviceEntry500.Uri.AbsoluteUri, GetRepositorySignaturesResourceJson(serviceEntry500.Uri.AbsoluteUri) } }), _repositorySignatureResourceProvider }; var sourceRepository = new SourceRepository(_packageSource, resourceProviders); var result = await _repositorySignatureResourceProvider.TryCreate(sourceRepository, CancellationToken.None); Assert.True(result.Item1); var resource = result.Item2 as RepositorySignatureResource; Assert.NotNull(resource); Assert.Equal(_packageSource.Source, resource.Source); Assert.Single(resource.RepositoryCertificateInfos); Assert.StartsWith(serviceEntry500.Uri.AbsoluteUri, resource.RepositoryCertificateInfos.Single().ContentUrl); }
public async Task TryCreate_WhenUrlIsInvalid_Throws(string resourceUrl, string resourceType) { var serviceEntry = new ServiceIndexEntry(new Uri(resourceUrl), resourceType, _defaultVersion); var resourceProviders = new ResourceProvider[] { CreateServiceIndexResourceV3Provider(serviceEntry), StaticHttpSource.CreateHttpSource( new Dictionary <string, string>() { { serviceEntry.Uri.AbsoluteUri, GetRepositorySignaturesResourceJson(resourceUrl) } }), _repositorySignatureResourceProvider }; var sourceRepository = new SourceRepository(_packageSource, resourceProviders); var exception = await Assert.ThrowsAsync <FatalProtocolException>( () => _repositorySignatureResourceProvider.TryCreate(sourceRepository, CancellationToken.None)); Assert.Equal($"Repository Signatures resouce must be served over HTTPS. Source: {_packageSource.Source}", exception.Message); }