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