public void CanGetExtensionTypeVersionAndImage()
        {
            using (var context = FluentMockContext.Start(GetType().FullName))
            {
                var azure           = TestHelper.CreateRollupClient();
                var extensionImages =
                    azure.VirtualMachineExtensionImages
                    .ListByRegion(Region.USEast);

                string dockerExtensionPublisherName = "Microsoft.Azure.Extensions";
                string dockerExtensionImageTypeName = "DockerExtension";

                // Lookup Azure docker extension publisher
                //
                var publishers =
                    azure.VirtualMachineExtensionImages
                    .Publishers
                    .ListByRegion(Region.USEast);

                IVirtualMachinePublisher azureDockerExtensionPublisher = publishers
                                                                         .Where(publisher => publisher.Name.Equals(dockerExtensionPublisherName, StringComparison.OrdinalIgnoreCase))
                                                                         .FirstOrDefault();
                Assert.NotNull(azureDockerExtensionPublisher);

                // Lookup Azure docker extension type
                //
                var extensionImageTypes = azureDockerExtensionPublisher.ExtensionTypes;
                Assert.True(extensionImageTypes.List().Count() > 0);
                var dockerExtensionImageType = extensionImageTypes
                                               .List()
                                               .Where(imageType => imageType.Name.Equals(dockerExtensionImageTypeName, StringComparison.OrdinalIgnoreCase))
                                               .FirstOrDefault();
                Assert.NotNull(dockerExtensionImageType);

                Assert.NotNull(dockerExtensionImageType.Id);
                Assert.Equal(dockerExtensionImageType.Name, dockerExtensionImageTypeName, ignoreCase: true);
                Assert.Equal("eastus", dockerExtensionImageType.RegionName, ignoreCase: true);
                Assert.EndsWith("/Providers/Microsoft.Compute/Locations/eastus/Publishers/Microsoft.Azure.Extensions/ArtifactTypes/VMExtension/Types/DockerExtension".ToLower(), dockerExtensionImageType.Id
                                .ToLower()
                                );
                Assert.NotNull(dockerExtensionImageType.Publisher);
                Assert.Equal(dockerExtensionImageType.Publisher.Name, dockerExtensionPublisherName, ignoreCase: true);

                // Fetch Azure docker extension versions
                //
                var extensionImageVersions = dockerExtensionImageType.Versions;
                Assert.True(extensionImageVersions.List().Count() > 0);

                IVirtualMachineExtensionImageVersion extensionImageFirstVersion = extensionImageVersions.List().FirstOrDefault();
                Assert.NotNull(extensionImageFirstVersion);
                String versionName = extensionImageFirstVersion.Name;
                Assert.EndsWith(("/Providers/Microsoft.Compute/Locations/eastus/Publishers/Microsoft.Azure.Extensions/ArtifactTypes/VMExtension/Types/DockerExtension/Versions/" + versionName).ToLower(), extensionImageFirstVersion.Id
                                .ToLower()
                                );
                Assert.NotNull(extensionImageFirstVersion.Type);

                // Fetch the Azure docker extension image
                //
                var dockerExtensionImage = extensionImageFirstVersion.GetImage();

                Assert.Equal("eastus", dockerExtensionImage.RegionName, ignoreCase: true);
                Assert.Equal(dockerExtensionImage.PublisherName, dockerExtensionPublisherName, ignoreCase: true);
                Assert.Equal(dockerExtensionImage.TypeName, dockerExtensionImageTypeName, ignoreCase: true);
                Assert.Equal(dockerExtensionImage.VersionName, versionName, ignoreCase: true);
                Assert.True(dockerExtensionImage.OSType == OperatingSystemTypes.Linux || dockerExtensionImage.OSType == OperatingSystemTypes.Windows);
            }
        }
 ///GENMHASH:F79343A72AA4295A5E1D16B5530DD18B:34FB4BF5848191FF7F26FBB50A9F1E95
 internal VirtualMachineOffersImpl(IVirtualMachineImagesOperations innerCollection, IVirtualMachinePublisher publisher)
 {
     this.publisher       = publisher;
     this.innerCollection = innerCollection;
 }
 ///GENMHASH:BC226EF2EAB4AB4B0C4E94FED5D962F0:D11D3C231EE92D6F7F22BDA2782F6427
 internal VirtualMachineExtensionImageTypesImpl(IVirtualMachineExtensionImagesOperations client, IVirtualMachinePublisher publisher)
 {
     this.client    = client;
     this.publisher = publisher;
 }
 ///GENMHASH:2EFBA576A3195EDB2F27440330CF3856:B4E2AB9962FF6934486C326E46FDA9B8
 internal VirtualMachineOfferImpl(IVirtualMachinePublisher publisher, string offer, IVirtualMachineImagesOperations client)
 {
     this.publisher = publisher;
     this.offerName = offer;
     skus           = new VirtualMachineSkusImpl(this, client);
 }