public void GetsResourceProviderTests() { // setup return values const string RegisteredProviderNamespace = "Providers.Test1"; const string UnregisteredProviderNamespace = "Providers.Test2"; const string ResourceTypeName = "TestResource1"; var unregisteredProvider = new Provider { Namespace = UnregisteredProviderNamespace, RegistrationState = "Unregistered", ResourceTypes = new[] { new ProviderResourceType { Locations = new[] {"West US", "East US", "South US"}, Name = "TestResource2" } } }; var result = new ProviderListResult { NextLink = null, Providers = new[] { new Provider { Namespace = RegisteredProviderNamespace, RegistrationState = ResourcesClient.RegisteredStateName, ResourceTypes = new[] { new ProviderResourceType { Locations = new[] { "West US", "East US" }, Name = ResourceTypeName, } } }, unregisteredProvider, } }; this.providerOperationsMock .Setup(f => f.ListAsync(It.IsAny<ProviderListParameters>(), It.IsAny<CancellationToken>())) .Returns(() => Task.FromResult(result)); // 1. List only registered providers this.commandRuntimeMock .Setup(m => m.WriteObject(It.IsAny<object>())) .Callback((object obj) => { Assert.IsType<PSResourceProvider[]>(obj); var providers = (PSResourceProvider[])obj; Assert.Equal(1, providers.Length); var provider = providers.Single(); Assert.Equal(RegisteredProviderNamespace, provider.ProviderNamespace); Assert.Equal(ResourcesClient.RegisteredStateName, provider.RegistrationState); Assert.Equal(1, provider.ResourceTypes.Length); var resourceType = provider.ResourceTypes.Single(); Assert.Equal(ResourceTypeName, resourceType.ResourceTypeName); Assert.Equal(2, resourceType.Locations.Length); }); this.cmdlet.ParameterSetOverride = GetAzureProviderCmdlet.ListAvailableParameterSet; this.cmdlet.ExecuteCmdlet(); this.VerifyListCallPatternAndReset(); // 2. List all providers this.cmdlet.ListAvailable = true; this.commandRuntimeMock .Setup(m => m.WriteObject(It.IsAny<object>())) .Callback((object obj) => { Assert.IsType<PSResourceProvider[]>(obj); var providers = (PSResourceProvider[])obj; Assert.Equal(2, providers.Length); }); this.cmdlet.ExecuteCmdlet(); this.VerifyListCallPatternAndReset(); // 3. List a single provider by name this.cmdlet.ProviderNamespace = UnregisteredProviderNamespace; this.providerOperationsMock .Setup(f => f.GetAsync(It.IsAny<string>(), It.IsAny<CancellationToken>())) .Returns(() => Task.FromResult(new ProviderGetResult { Provider = unregisteredProvider, RequestId = "requestId", StatusCode = HttpStatusCode.OK, })); this.commandRuntimeMock .Setup(m => m.WriteObject(It.IsAny<object>())) .Callback((object obj) => { Assert.IsType<PSResourceProvider[]>(obj); var providers = (PSResourceProvider[])obj; Assert.Equal(1, providers.Length); var provider = providers.Single(); Assert.Equal(UnregisteredProviderNamespace, provider.ProviderNamespace); }); this.cmdlet.ParameterSetOverride = GetAzureProviderCmdlet.IndividualProviderParameterSet; this.cmdlet.ExecuteCmdlet(); this.VerifyGetCallPatternAndReset(); // 4. List only registered providers with location this.cmdlet.Location = "South US"; this.cmdlet.ListAvailable = false; this.cmdlet.ProviderNamespace = null; this.commandRuntimeMock .Setup(m => m.WriteObject(It.IsAny<object>())) .Callback((object obj) => { Assert.IsType<PSResourceProvider[]>(obj); var providers = (PSResourceProvider[])obj; Assert.Equal(0, providers.Length); }); this.cmdlet.ParameterSetOverride = GetAzureProviderCmdlet.ListAvailableParameterSet; this.cmdlet.ExecuteCmdlet(); this.VerifyListCallPatternAndReset(); // 5. List all providers this.cmdlet.ListAvailable = true; this.cmdlet.Location = "South US"; this.cmdlet.ProviderNamespace = null; this.commandRuntimeMock .Setup(m => m.WriteObject(It.IsAny<object>())) .Callback((object obj) => { var providers = (PSResourceProvider[])obj; Assert.Equal(0, providers.Length); var provider = providers.Single(); Assert.Equal(UnregisteredProviderNamespace, provider.ProviderNamespace); Assert.Equal(1, provider.ResourceTypes.Length); var resourceType = provider.ResourceTypes.Single(); Assert.Equal(ResourceTypeName, resourceType.ResourceTypeName); }); this.cmdlet.ExecuteCmdlet(); this.VerifyListCallPatternAndReset(); }
private static bool IsProviderRegistered(ProviderListResult providers, string @namespace) { foreach (Provider p in providers.Providers) { if (p.Namespace.ToLower().Equals(@namespace.ToLower())) { return p.RegistrationState.ToLower().Equals("registered"); } } return false; }