Skip to content

Commit fb2722c

Browse files
committed
Refine error messages for Move-AzureRmResource
1 parent 6853156 commit fb2722c

File tree

5 files changed

+153
-3
lines changed

5 files changed

+153
-3
lines changed

src/ResourceManager/Resources/Commands.ResourceManager/Cmdlets/Implementation/Resource/MoveAzureResourceCmdlet.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,19 @@ private void RunCmdlet()
105105
.Where(resourceGroupId => !string.IsNullOrWhiteSpace(resourceGroupId))
106106
.DistinctArray(StringComparer.InvariantCultureIgnoreCase);
107107

108-
var sourceResourceGroup = sourceResourceGroups.SingleOrDefault();
109-
110-
if (sourceResourceGroup == null)
108+
var count = sourceResourceGroups.Count();
109+
if (count == 0)
110+
{
111+
throw new InvalidOperationException("At least one valid resource Id must be provided.");
112+
}
113+
else if (count > 1)
111114
{
112115
throw new InvalidOperationException(
113116
string.Format("The resources being moved must all reside in the same resource group. The resources: {0}", resourceIdsToUse.ConcatStrings(", ")));
114117
}
115118

119+
var sourceResourceGroup = sourceResourceGroups.Single();
120+
116121
var destinationResourceGroup = ResourceIdUtility.GetResourceId(
117122
subscriptionId: this.DestinationSubscriptionId,
118123
resourceGroupName: this.DestinationResourceGroupName,

src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,9 @@
556556
<None Include="SessionRecords\Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceTests\TestMoveAResourceTest.json">
557557
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
558558
</None>
559+
<None Include="SessionRecords\Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceTests\TestMoveResourceFailed.json">
560+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
561+
</None>
559562
<None Include="SessionRecords\Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceTests\TestSetAResourceTest.json">
560563
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
561564
</None>

src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ public void TestMoveAResourceTest()
9191
ResourcesController.NewInstance.RunPsTest("Test-MoveAResource");
9292
}
9393

94+
[Fact]
95+
[Trait(Category.AcceptanceType, Category.CheckIn)]
96+
public void TestMoveResourceFailed()
97+
{
98+
ResourcesController.NewInstance.RunPsTest("Test-MoveResourceFailed");
99+
}
100+
94101
[Fact]
95102
[Trait(Category.AcceptanceType, Category.CheckIn)]
96103
public void TestSetAResourceTest()

src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourceTests.ps1

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,23 @@ function Test-MoveAResource
245245
Assert-AreEqual $movedResource.ResourceType $resource.ResourceType
246246
}
247247

248+
<#
249+
.SYNOPSIS
250+
Tests moving a resource but failed.
251+
#>
252+
function Test-MoveResourceFailed
253+
{
254+
#Move a resource through pipeline while no resource is sent
255+
$exceptionMessage = "At least one valid resource Id must be provided.";
256+
Assert-Throws { Get-AzureRmResource | Where-Object { $PSItem.Name -eq "NonExistingResource" } | Move-AzureRmResource -DestinationResourceGroupName "AnyResourceGroup" } $exceptionMessage
257+
258+
#Move two resources from two resource groups
259+
$resourceId1 = "/subscriptions/fb3a3d6b-44c8-44f5-88c9-b20917c9b96b/resourceGroups/tianorg1/providers/Microsoft.Storage/storageAccounts/temp1"
260+
$resourceId2 = "/subscriptions/fb3a3d6b-44c8-44f5-88c9-b20917c9b96b/resourceGroups/tianorg2/providers/Microsoft.Storage/storageAccounts/temp1"
261+
$exceptionMessage = "The resources being moved must all reside in the same resource group. The resources: *"
262+
Assert-ThrowsLike { Move-AzureRmResource -DestinationResourceGroupName "AnyGroup" -ResourceId @($resourceId1, $resourceId2) } $exceptionMessage
263+
}
264+
248265
<#
249266
.SYNOPSIS
250267
Tests setting a resource.

src/ResourceManager/Resources/Commands.Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceTests/TestMoveResourceFailed.json

Lines changed: 118 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)