Skip to content

Commit d1888e3

Browse files
fenwicktmakharchVeryEarly
authored
Changed output of ResourceGraph cmdlet to a custom class (Azure#14789)
* Changed output to a custom class with Data and SkipToken properties * updated change log * Update src/ResourceGraph/ResourceGraph/ChangeLog.md Co-authored-by: makharch <[email protected]> Co-authored-by: Yabo Hu <[email protected]>
1 parent c7fb708 commit d1888e3

File tree

12 files changed

+266
-274
lines changed

12 files changed

+266
-274
lines changed

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

Lines changed: 93 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -18,30 +18,32 @@ Run simple query
1818
#>
1919
function Search-AzureRmGraph-Query
2020
{
21-
$queryResult = Search-AzGraph "project id, tags, properties | limit 2"
22-
23-
Assert-IsInstance Object[] $queryResult
24-
Assert-AreEqual 2 $queryResult.Count
25-
26-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[0]
27-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[1]
28-
Assert-PropertiesCount 4 $queryResult[0]
29-
Assert-PropertiesCount 4 $queryResult[1]
30-
31-
Assert-IsInstance String $queryResult[0].id
32-
Assert-IsInstance String $queryResult[1].id
33-
Assert-IsInstance String $queryResult[0].ResourceId
34-
Assert-IsInstance String $queryResult[1].ResourceId
35-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[0].tags
36-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[1].tags
37-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[0].properties
38-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[1].properties
21+
$queryResult = Search-AzGraph 'Resources | where tags != "" | project id, tags, properties | limit 2'
22+
23+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResult
24+
Assert-Null $queryResult.SkipToken
25+
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResult.Data
26+
Assert-AreEqual 2 $queryResult.Data.Count
27+
28+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[0]
29+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[1]
30+
Assert-PropertiesCount 4 $queryResult.Data[0]
31+
Assert-PropertiesCount 4 $queryResult.Data[1]
32+
33+
Assert-IsInstance String $queryResult.Data[0].id
34+
Assert-IsInstance String $queryResult.Data[1].id
35+
Assert-IsInstance String $queryResult.Data[0].ResourceId
36+
Assert-IsInstance String $queryResult.Data[1].ResourceId
37+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[0].tags
38+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[1].tags
39+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[0].properties
40+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[1].properties
3941

40-
Assert-AreEqual $queryResult[0].id $queryResult[0].ResourceId
41-
Assert-AreEqual $queryResult[1].id $queryResult[1].ResourceId
42+
Assert-AreEqual $queryResult.Data[0].id $queryResult.Data[0].ResourceId
43+
Assert-AreEqual $queryResult.Data[1].id $queryResult.Data[1].ResourceId
4244

43-
Assert-PropertiesCount 2 $queryResult[0].properties
44-
Assert-PropertiesCount 4 $queryResult[1].properties
45+
Assert-PropertiesCount 7 $queryResult.Data[0].properties
46+
Assert-PropertiesCount 7 $queryResult.Data[1].properties
4547
}
4648

4749
<#
@@ -52,29 +54,31 @@ function Search-AzureRmGraph-PagedQuery
5254
{
5355
# Page size was artificially set to 2 rows
5456
$queryResult = Search-AzGraph "project id" -First 3 -Skip 2
55-
56-
Assert-IsInstance Object[] $queryResult
57-
Assert-AreEqual 3 $queryResult.Count
5857

59-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[0]
60-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[1]
61-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[2]
58+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResult
59+
Assert-IsInstance System.String $queryResult.SkipToken
60+
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResult.Data
61+
Assert-AreEqual 3 $queryResult.Data.Count
62+
63+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[0]
64+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[1]
65+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[2]
6266

63-
Assert-PropertiesCount 2 $queryResult[0]
64-
Assert-PropertiesCount 2 $queryResult[1]
65-
Assert-PropertiesCount 2 $queryResult[2]
67+
Assert-PropertiesCount 2 $queryResult.Data[0]
68+
Assert-PropertiesCount 2 $queryResult.Data[1]
69+
Assert-PropertiesCount 2 $queryResult.Data[2]
6670

67-
Assert-IsInstance String $queryResult[0].id
68-
Assert-IsInstance String $queryResult[1].id
69-
Assert-IsInstance String $queryResult[2].id
71+
Assert-IsInstance String $queryResult.Data[0].id
72+
Assert-IsInstance String $queryResult.Data[1].id
73+
Assert-IsInstance String $queryResult.Data[2].id
7074

71-
Assert-IsInstance String $queryResult[0].ResourceId
72-
Assert-IsInstance String $queryResult[1].ResourceId
73-
Assert-IsInstance String $queryResult[2].ResourceId
75+
Assert-IsInstance String $queryResult.Data[0].ResourceId
76+
Assert-IsInstance String $queryResult.Data[1].ResourceId
77+
Assert-IsInstance String $queryResult.Data[2].ResourceId
7478

75-
Assert-True { $queryResult[0].id.Length -gt 0 }
76-
Assert-True { $queryResult[1].id.Length -gt 0 }
77-
Assert-True { $queryResult[2].id.Length -gt 0 }
79+
Assert-True { $queryResult.Data[0].id.Length -gt 0 }
80+
Assert-True { $queryResult.Data[1].id.Length -gt 0 }
81+
Assert-True { $queryResult.Data[2].id.Length -gt 0 }
7882
}
7983

8084
<#
@@ -83,22 +87,28 @@ Run query with subscriptions explicitly passed
8387
#>
8488
function Search-AzureRmGraph-Subscriptions
8589
{
86-
$testSubId = "eaab1166-1e13-4370-a951-6ed345a48c15"
90+
$testSubId = "82506e98-9fdb-41f5-ab67-031005041a26"
8791
$nonExsitentTestSubId = "000b1166-1e13-4370-a951-6ed345a48c16"
8892
$query = "distinct subscriptionId | order by subscriptionId asc"
8993

90-
$queryResultTenant = Search-AzGraph $query
94+
$queryResultSubsFromContext = Search-AzGraph $query
9195
$queryResultOneSub = Search-AzGraph $query -Subscription $testSubId
9296
$queryResultMultipleSubs = Search-AzGraph $query -Subscription @($testSubId, $nonExsitentTestSubId)
93-
94-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResultTenant
95-
Assert-AreEqual $testSubId $queryResultTenant.subscriptionId
9697

97-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResultOneSub
98-
Assert-AreEqual $testSubId $queryResultOneSub.subscriptionId
99-
100-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResultMultipleSubs
101-
Assert-AreEqual $testSubId $queryResultMultipleSubs.subscriptionId
98+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultSubsFromContext
99+
Assert-Null $queryResultSubsFromContext.SkipToken
100+
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultSubsFromContext.Data
101+
Assert-AreEqual $testSubId $queryResultSubsFromContext.Data.subscriptionId
102+
103+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultOneSub
104+
Assert-Null $queryResultOneSub.SkipToken
105+
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultOneSub.Data
106+
Assert-AreEqual $testSubId $queryResultOneSub.Data.subscriptionId
107+
108+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultMultipleSubs
109+
Assert-Null $queryResultMultipleSubs.SkipToken
110+
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultMultipleSubs.Data
111+
Assert-AreEqual $testSubId $queryResultMultipleSubs.Data.subscriptionId
102112
}
103113

104114
<#
@@ -107,24 +117,24 @@ Run query with management groups explicitly passed
107117
#>
108118
function Search-AzureRmGraph-ManagementGroups
109119
{
110-
$testSubId = "eaab1166-1e13-4370-a951-6ed345a48c15"
111-
$testMgId1 = "f686d426-8d16-42db-81b7-ab578e110ccd"
120+
$testSubId = "82506e98-9fdb-41f5-ab67-031005041a26"
121+
$testMgId1 = "72f988bf-86f1-41af-91ab-2d7cd011db47"
112122
$testMgId2 = "makharchMg"
113123
$nonExistentTestMgId = "nonExistentMg"
114124
$query = "distinct subscriptionId | order by subscriptionId asc"
115125

116-
$queryResultTenant = Search-AzGraph $query
117126
$queryResultOneMg = Search-AzGraph $query -ManagementGroup $testMgId1
118127
$queryResultMultipleMgs = Search-AzGraph $query -ManagementGroup @($testMgId1, $testMgId2, $nonExistentTestMgId) -AllowPartialScope
119128

120-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResultTenant
121-
Assert-AreEqual $testSubId $queryResultTenant.subscriptionId
129+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultOneMg
130+
Assert-Null $queryResultOneMg.SkipToken
131+
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultOneMg.Data
132+
Assert-AreEqual $testSubId $queryResultOneMg.Data.subscriptionId
122133

123-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResultOneMg
124-
Assert-AreEqual $testSubId $queryResultOneMg.subscriptionId
125-
126-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResultMultipleMgs
127-
Assert-AreEqual $testSubId $queryResultMultipleMgs.subscriptionId
134+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResultMultipleMgs
135+
Assert-Null $queryResultMultipleMgs.SkipToken
136+
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResultMultipleMgs.Data
137+
Assert-AreEqual $testSubId $queryResultMultipleMgs.Data.subscriptionId
128138
}
129139

130140
<#
@@ -133,28 +143,30 @@ Run simple query with the skip token
133143
#>
134144
function Search-AzureRmGraph-SkipTokenQuery
135145
{
136-
$queryResult = Search-AzGraph "project id, properties" -SkipToken "ew0KICAiJGlkIjogIjEiLA0KICAiTWF4Um93cyI6IDMsDQogICJSb3dzVG9Ta2lwIjogNiwNCiAgIkt1c3RvQ2x1c3RlclVybCI6ICJodHRwczovL2FybXRvcG9sb2d5Lmt1c3RvLndpbmRvd3MubmV0Ig0KfQ=="
137-
138-
Assert-IsInstance Object[] $queryResult
139-
Assert-AreEqual 3 $queryResult.Count
140-
141-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[0]
142-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[1]
143-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[2]
144-
145-
Assert-IsInstance String $queryResult[0].id
146-
Assert-IsInstance String $queryResult[1].id
147-
Assert-IsInstance String $queryResult[2].id
148-
Assert-IsInstance String $queryResult[0].ResourceId
149-
Assert-IsInstance String $queryResult[1].ResourceId
150-
Assert-IsInstance String $queryResult[2].ResourceId
151-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[0].properties
152-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[1].properties
153-
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult[2].properties
146+
$queryResult = Search-AzGraph "project id, properties" -SkipToken "ew0KICAiJGlkIjogIjEiLA0KICAiTWF4Um93cyI6IDMsDQogICJSb3dzVG9Ta2lwIjogMywNCiAgIkt1c3RvQ2x1c3RlclVybCI6ICJodHRwczovL2FyZy1ldXMtc2l4LXNmLmFyZy5jb3JlLndpbmRvd3MubmV0Ig0KfQ=="
147+
148+
Assert-IsInstance Microsoft.Azure.Commands.ResourceGraph.Models.PSResourceGraphResponse $queryResult
149+
Assert-IsInstance System.String $queryResult.SkipToken
150+
Assert-IsInstance System.Collections.Generic.List[PSObject] $queryResult.Data
151+
Assert-AreEqual 3 $queryResult.Data.Count
152+
153+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[0]
154+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[1]
155+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[2]
156+
157+
Assert-IsInstance String $queryResult.Data[0].id
158+
Assert-IsInstance String $queryResult.Data[1].id
159+
Assert-IsInstance String $queryResult.Data[2].id
160+
Assert-IsInstance String $queryResult.Data[0].ResourceId
161+
Assert-IsInstance String $queryResult.Data[1].ResourceId
162+
Assert-IsInstance String $queryResult.Data[2].ResourceId
163+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[0].properties
164+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[1].properties
165+
Assert-IsInstance System.Management.Automation.PSCustomObject $queryResult.Data[2].properties
154166

155-
Assert-AreEqual $queryResult[0].id $queryResult[0].ResourceId
156-
Assert-AreEqual $queryResult[1].id $queryResult[1].ResourceId
157-
Assert-AreEqual $queryResult[2].id $queryResult[2].ResourceId
167+
Assert-AreEqual $queryResult.Data[0].id $queryResult.Data[0].ResourceId
168+
Assert-AreEqual $queryResult.Data[1].id $queryResult.Data[1].ResourceId
169+
Assert-AreEqual $queryResult.Data[2].id $queryResult.Data[2].ResourceId
158170
}
159171

160172
<#

0 commit comments

Comments
 (0)