Microsoft.Azure.Commands.Resources.Test.GetAzureProviderCmdletTests.GetsResourceProviderTests C# (CSharp) Method

GetsResourceProviderTests() private method

private GetsResourceProviderTests ( ) : void
return void
        public void GetsResourceProviderTests()
        {
            //setup return values
            const string RegisteredProviderNamespace = "Providers.Test1";
            const string UnregisteredProviderNamespace = "Providers.Test2";

            const string ResourceTypeName = "TestResource1";

            var unregisteredProvider = new Provider
            {
                NamespaceProperty = UnregisteredProviderNamespace,
                RegistrationState = "Unregistered",
                ResourceTypes = new[]
                {
                    new ProviderResourceType
                    {
                        Locations = new[] {"West US", "East US", "South US"},
                        ResourceType = "TestResource2"
                    }
                }
            };

            var listResult = new List<Provider>()
            {
                new Provider
                {
                    NamespaceProperty = RegisteredProviderNamespace,
                    RegistrationState = ResourceManagerSdkClient.RegisteredStateName,
                    ResourceTypes = new[]
                    {
                        new ProviderResourceType
                        {
                            Locations = new[] { "West US", "East US" },
                            //Name = ResourceTypeName,
                        }
                    }
                },
                unregisteredProvider,
            };
            var pagableResult = new Page<Provider>();
            pagableResult.SetItemValue<Provider>(listResult);
            var result = new AzureOperationResponse<IPage<Provider>>()
            {
                Body = pagableResult
            };
            this.providerOperationsMock
                .Setup(f => f.ListWithHttpMessagesAsync(null, null, null, It.IsAny<CancellationToken>()))
                .Returns(() => Task.FromResult(result));

            var locationList = new List<Location>
            {
                new Location
                {
                    Name = "southus",
                    DisplayName = "South US",
                }
            };
            var pagableLocations = new Page<Location>();
            pagableLocations.SetItemValue<Location>(locationList);
            var locationsResult = new AzureOperationResponse<IEnumerable<Location>>()
            {
                Body = pagableLocations
            };
            this.subscriptionsOperationsMock
                .Setup(f => f.ListLocationsWithHttpMessagesAsync(It.IsAny<string>(), null, It.IsAny<CancellationToken>()))
                .Returns(() => Task.FromResult(locationsResult));


            // 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(ResourceManagerSdkClient.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.GetWithHttpMessagesAsync(It.IsAny<string>(), null, null, It.IsAny<CancellationToken>()))
              .Returns((Task.FromResult(new AzureOperationResponse<Provider>()
              {
                  Body = unregisteredProvider
              })));

            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();
        }