29
29
using Microsoft . Azure . Commands . Profile . Models ;
30
30
using Microsoft . Azure . Subscriptions . Models ;
31
31
using Hyak . Common ;
32
+ using System . Management . Automation ;
32
33
33
34
namespace Microsoft . Azure . Commands . ResourceManager . Common . Test
34
35
{
@@ -69,6 +70,93 @@ private static RMProfileClient SetupTestEnvironment(List<string> tenants, params
69
70
return new RMProfileClient ( profile ) ;
70
71
}
71
72
73
+ [ Fact ]
74
+ [ Trait ( Category . AcceptanceType , Category . CheckIn ) ]
75
+ public void SpecifyTenantAndSubscriptionIdSucceed ( )
76
+ {
77
+ var tenants = new List < string > { DefaultTenant . ToString ( ) } ;
78
+ var firstList = new List < string > { DefaultSubscription . ToString ( ) , Guid . NewGuid ( ) . ToString ( ) } ;
79
+ var secondList = new List < string > { Guid . NewGuid ( ) . ToString ( ) } ;
80
+ var client = SetupTestEnvironment ( tenants , firstList , secondList ) ;
81
+
82
+ ( ( MockTokenAuthenticationFactory ) AzureSession . AuthenticationFactory ) . TokenProvider = ( account , environment , tenant ) =>
83
+ new MockAccessToken
84
+ {
85
+
86
+ LoginType = LoginType . OrgId ,
87
+ AccessToken = "bbb" ,
88
+ TenantId = DefaultTenant . ToString ( )
89
+ } ;
90
+
91
+ var azureRmProfile = client . Login (
92
+ Context . Account ,
93
+ Context . Environment ,
94
+ DefaultTenant . ToString ( ) ,
95
+ DefaultSubscription . ToString ( ) ,
96
+ null ,
97
+ null ) ;
98
+ }
99
+
100
+ [ Fact ]
101
+ [ Trait ( Category . AcceptanceType , Category . CheckIn ) ]
102
+ public void SubscriptionIdNotExist ( )
103
+ {
104
+ var tenants = new List < string > { DefaultTenant . ToString ( ) } ;
105
+ var firstList = new List < string > { Guid . NewGuid ( ) . ToString ( ) } ;
106
+ var client = SetupTestEnvironment ( tenants , firstList ) ;
107
+
108
+ ( ( MockTokenAuthenticationFactory ) AzureSession . AuthenticationFactory ) . TokenProvider = ( account , environment , tenant ) =>
109
+ new MockAccessToken
110
+ {
111
+
112
+ LoginType = LoginType . OrgId ,
113
+ AccessToken = "bbb" ,
114
+ TenantId = DefaultTenant . ToString ( )
115
+ } ;
116
+
117
+ var getAsyncResponses = new Queue < Func < GetSubscriptionResult > > ( ) ;
118
+ getAsyncResponses . Enqueue ( ( ) =>
119
+ {
120
+ throw new CloudException ( "InvalidAuthenticationTokenTenant: The access token is from the wrong issuer" ) ;
121
+ } ) ;
122
+ MockSubscriptionClientFactory . SetGetAsyncResponses ( getAsyncResponses ) ;
123
+
124
+ Assert . Throws < PSInvalidOperationException > ( ( ) => client . Login (
125
+ Context . Account ,
126
+ Context . Environment ,
127
+ null ,
128
+ DefaultSubscription . ToString ( ) ,
129
+ null ,
130
+ null ) ) ;
131
+ }
132
+
133
+ [ Fact ]
134
+ [ Trait ( Category . AcceptanceType , Category . CheckIn ) ]
135
+ public void SpecifyTenantAndNotExistingSubscriptionId ( )
136
+ {
137
+ var tenants = new List < string > { DefaultTenant . ToString ( ) } ;
138
+ var firstList = new List < string > { Guid . NewGuid ( ) . ToString ( ) , Guid . NewGuid ( ) . ToString ( ) } ;
139
+ var secondList = new List < string > { Guid . NewGuid ( ) . ToString ( ) } ;
140
+ var client = SetupTestEnvironment ( tenants , firstList , secondList ) ;
141
+
142
+ ( ( MockTokenAuthenticationFactory ) AzureSession . AuthenticationFactory ) . TokenProvider = ( account , environment , tenant ) =>
143
+ new MockAccessToken
144
+ {
145
+
146
+ LoginType = LoginType . OrgId ,
147
+ AccessToken = "bbb" ,
148
+ TenantId = DefaultTenant . ToString ( )
149
+ } ;
150
+
151
+ Assert . Throws < PSInvalidOperationException > ( ( ) => client . Login (
152
+ Context . Account ,
153
+ Context . Environment ,
154
+ DefaultTenant . ToString ( ) ,
155
+ DefaultSubscription . ToString ( ) ,
156
+ null ,
157
+ null ) ) ;
158
+ }
159
+
72
160
[ Fact ]
73
161
[ Trait ( Category . AcceptanceType , Category . CheckIn ) ]
74
162
public void SubscriptionIdNotInFirstTenant ( )
@@ -126,16 +214,23 @@ public void SubscriptionNameNotInFirstTenant()
126
214
var listAsyncResponses = new Queue < Func < SubscriptionListResult > > ( ) ;
127
215
listAsyncResponses . Enqueue ( ( ) =>
128
216
{
129
- var sub = new Subscription
217
+ var sub1 = new Subscription
130
218
{
131
219
Id = DefaultSubscription . ToString ( ) ,
132
220
SubscriptionId = DefaultSubscription . ToString ( ) ,
133
221
DisplayName = DefaultSubscriptionName ,
134
- State = "enabled" ,
222
+ State = "enabled"
223
+ } ;
224
+ var sub2 = new Subscription
225
+ {
226
+ Id = subscriptionInSecondTenant ,
227
+ SubscriptionId = subscriptionInSecondTenant ,
228
+ DisplayName = MockSubscriptionClientFactory . GetSubscriptionNameFromId ( subscriptionInSecondTenant ) ,
229
+ State = "enabled"
135
230
} ;
136
231
return new SubscriptionListResult
137
232
{
138
- Subscriptions = new List < Subscription > { sub }
233
+ Subscriptions = new List < Subscription > { sub1 , sub2 }
139
234
} ;
140
235
} ) ;
141
236
MockSubscriptionClientFactory . SetListAsyncResponses ( listAsyncResponses ) ;
@@ -145,7 +240,7 @@ public void SubscriptionNameNotInFirstTenant()
145
240
Context . Environment ,
146
241
null ,
147
242
null ,
148
- "sub name" ,
243
+ MockSubscriptionClientFactory . GetSubscriptionNameFromId ( subscriptionInSecondTenant ) ,
149
244
null ) ;
150
245
}
151
246
0 commit comments