Skip to content

Commit 98014e0

Browse files
author
makharch
committed
Added output type fix and updated tests
Changes from PR Azure#15125
1 parent cc484e5 commit 98014e0

File tree

4 files changed

+46
-14
lines changed

4 files changed

+46
-14
lines changed

src/ResourceGraph/ResourceGraph.Test/ScenarioTests/ResourceGraphQueryTests.ps1

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ Run simple query
1919
function Search-AzureRmGraph-Query
2020
{
2121
$queryResult = Search-AzGraph 'Resources | where tags != "" | project id, tags, properties | limit 2'
22-
23-
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResult
22+
23+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResult
2424
Assert-Null $queryResult.SkipToken
2525
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResult.Data
2626
Assert-AreEqual 2 $queryResult.Data.Count
@@ -55,7 +55,7 @@ function Search-AzureRmGraph-PagedQuery
5555
# Page size was artificially set to 2 rows
5656
$queryResult = Search-AzGraph "project id" -First 3 -Skip 2
5757

58-
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResult
58+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResult
5959
Assert-IsInstance System.String $queryResult.SkipToken
6060
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResult.Data
6161
Assert-AreEqual 3 $queryResult.Data.Count
@@ -95,17 +95,17 @@ function Search-AzureRmGraph-Subscriptions
9595
$queryResultOneSub = Search-AzGraph $query -Subscription $testSubId
9696
$queryResultMultipleSubs = Search-AzGraph $query -Subscription @($testSubId, $nonExsitentTestSubId)
9797

98-
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultSubsFromContext
98+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResultSubsFromContext
9999
Assert-Null $queryResultSubsFromContext.SkipToken
100100
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultSubsFromContext.Data
101101
Assert-AreEqual $testSubId $queryResultSubsFromContext.Data.subscriptionId
102102

103-
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultOneSub
103+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResultOneSub
104104
Assert-Null $queryResultOneSub.SkipToken
105105
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultOneSub.Data
106106
Assert-AreEqual $testSubId $queryResultOneSub.Data.subscriptionId
107107

108-
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultMultipleSubs
108+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResultMultipleSubs
109109
Assert-Null $queryResultMultipleSubs.SkipToken
110110
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultMultipleSubs.Data
111111
Assert-AreEqual $testSubId $queryResultMultipleSubs.Data.subscriptionId
@@ -126,12 +126,12 @@ function Search-AzureRmGraph-ManagementGroups
126126
$queryResultOneMg = Search-AzGraph $query -ManagementGroup $testMgId1
127127
$queryResultMultipleMgs = Search-AzGraph $query -ManagementGroup @($testMgId1, $testMgId2, $nonExistentTestMgId) -AllowPartialScope
128128

129-
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultOneMg
129+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResultOneMg
130130
Assert-Null $queryResultOneMg.SkipToken
131131
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultOneMg.Data
132132
Assert-AreEqual $testSubId $queryResultOneMg.Data.subscriptionId
133133

134-
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultMultipleMgs
134+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResultMultipleMgs
135135
Assert-Null $queryResultMultipleMgs.SkipToken
136136
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultMultipleMgs.Data
137137
Assert-AreEqual $testSubId $queryResultMultipleMgs.Data.subscriptionId
@@ -145,7 +145,7 @@ function Search-AzureRmGraph-SkipTokenQuery
145145
{
146146
$queryResult = Search-AzGraph "project id, properties" -SkipToken "ew0KICAiJGlkIjogIjEiLA0KICAiTWF4Um93cyI6IDMsDQogICJSb3dzVG9Ta2lwIjogMywNCiAgIkt1c3RvQ2x1c3RlclVybCI6ICJodHRwczovL2FyZy1ldXMtc2l4LXNmLmFyZy5jb3JlLndpbmRvd3MubmV0Ig0KfQ=="
147147

148-
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResult
148+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse[PSObject] $queryResult
149149
Assert-IsInstance System.String $queryResult.SkipToken
150150
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResult.Data
151151
Assert-AreEqual 3 $queryResult.Data.Count

src/ResourceGraph/ResourceGraph/Az.ResourceGraph.psd1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ FormatsToProcess = 'ResourceGraph.format.ps1xml',
7070
'ResourceGraph.Autorest\Az.ResourceGraph.format.ps1xml'
7171

7272
# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
73-
NestedModules = @('Az.ResourceGraph.psm1',
73+
NestedModules = @('Microsoft.Azure.PowerShell.Cmdlets.ResourceGraph.dll',
7474
'ResourceGraph.Autorest\Az.ResourceGraph.psm1')
7575

7676
# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.

src/ResourceGraph/ResourceGraph/Cmdlets/SearchAzureRmGraph.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ namespace Microsoft.Azure.Commands.ResourceGraph.Cmdlets
2727
/// Search-AzGraph cmdlet
2828
/// </summary>
2929
/// <seealso cref="Microsoft.Azure.Commands.ResourceGraph.Utilities.ResourceGraphBaseCmdlet" />
30-
[Cmdlet(VerbsCommon.Search, ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "Graph", DefaultParameterSetName = "SubscriptionScopedQuery"), OutputType(typeof(PSResourceGraphResponse))]
30+
[Cmdlet(VerbsCommon.Search, ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "Graph", DefaultParameterSetName = "SubscriptionScopedQuery"), OutputType(typeof(PSResourceGraphResponse<PSObject>))]
3131
public class SearchAzureRmGraph : ResourceGraphBaseCmdlet
3232
{
3333
/// <summary>
@@ -160,7 +160,7 @@ public override void ExecuteCmdlet()
160160
}
161161
}
162162

163-
var psResourceGraphResponse = new PSResourceGraphResponse();
163+
var psResourceGraphResponse = new PSResourceGraphResponse<PSObject>();
164164
QueryResponse response = null;
165165

166166
var resultTruncated = false;

src/ResourceGraph/ResourceGraph/Models/PSResourceGraphResponse.cs

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,49 @@
1414

1515
namespace Microsoft.Azure.Commands.ResourceGraph.Models
1616
{
17+
using System.Collections;
1718
using System.Collections.Generic;
18-
using System.Management.Automation;
1919
using Microsoft.WindowsAzure.Commands.Common.Attributes;
2020

21-
public class PSResourceGraphResponse
21+
public class PSResourceGraphResponse<PSObject> : IList<PSObject>
2222
{
2323
[Ps1Xml(Target = ViewControl.List)]
2424
public string SkipToken { get; set; }
2525

2626
[Ps1Xml(Target = ViewControl.List)]
2727
public IList<PSObject> Data { get; set; }
28+
public PSObject this[int index] { get => Data[index]; set => Data[index] = value; }
2829

30+
public IEnumerator<PSObject> GetEnumerator()
31+
{
32+
return Data.GetEnumerator();
33+
}
34+
35+
IEnumerator IEnumerable.GetEnumerator()
36+
{
37+
return GetEnumerator();
38+
}
39+
40+
public bool IsReadOnly => Data.IsReadOnly;
41+
42+
public int Count => Data.Count;
43+
44+
public void Add(PSObject value) => Data.Add(value);
45+
46+
public void Clear() => Data.Clear();
47+
48+
public bool Contains(PSObject value) => Data.Contains(value);
49+
50+
public void CopyTo(PSObject[] array, int index) => Data.CopyTo(array, index);
51+
52+
public int IndexOf(PSObject value) => Data.IndexOf(value);
53+
54+
public void Insert(int index, PSObject value) => Data.Insert(index, value);
55+
56+
public void Remove(PSObject value) => Data.Remove(value);
57+
58+
public void RemoveAt(int index) => Data.RemoveAt(index);
59+
60+
bool ICollection<PSObject>.Remove(PSObject item) => Data.Remove(item);
2961
}
3062
}

0 commit comments

Comments
 (0)