public static string GetManifestDigestSha( this IManifestToolService manifestToolService, ManifestMediaType mediaType, string tag, bool isDryRun) { IEnumerable <JObject> tagManifests = manifestToolService.Inspect(tag, isDryRun).OfType <JObject>(); string digest; bool hasSupportedMediaType = false; if (hasSupportedMediaType |= mediaType.HasFlag(ManifestMediaType.ManifestList)) { digest = GetDigestOfMediaType( tag, tagManifests, ManifestToolService.ManifestListMediaType, throwIfNull: mediaType == ManifestMediaType.ManifestList && !isDryRun); if (digest != null) { return(digest); } } if (hasSupportedMediaType |= mediaType.HasFlag(ManifestMediaType.Manifest)) { return(GetDigestOfMediaType( tag, tagManifests, ManifestToolService.ManifestMediaType, throwIfNull: !isDryRun)); } if (!hasSupportedMediaType) { throw new ArgumentException($"Unsupported media type: '{mediaType}'.", nameof(mediaType)); } return(null); }
public void GetManifestDigestSha(string tag, ManifestMediaType mediaType, string expectedDigestSha, Type expectedExceptionType = null) { Mock <IManifestToolService> manifestToolService = new Mock <IManifestToolService>(); manifestToolService .Setup(o => o.Inspect("tag1", false)) .Returns(ManifestToolServiceHelper.CreateTagManifest(ManifestToolService.ManifestMediaType, ManifestDigest)); manifestToolService .Setup(o => o.Inspect("tag2", false)) .Returns(ManifestToolServiceHelper.CreateTagManifest(ManifestToolService.ManifestListMediaType, ManifestListDigest)); if (expectedExceptionType is null) { string digestSha = ManifestToolServiceExtensions.GetManifestDigestSha( manifestToolService.Object, mediaType, tag, false); Assert.Equal(expectedDigestSha, digestSha); } else { Assert.Throws(expectedExceptionType, () => { ManifestToolServiceExtensions.GetManifestDigestSha( manifestToolService.Object, mediaType, tag, false); }); } }