@@ -256,6 +256,39 @@ public async Task AddAzureFunctionsProject_WiresUpHttpsEndpointCorrectly_WhenOnl
256
256
) ;
257
257
}
258
258
259
+ [ Fact ]
260
+ public async Task AddAzureFunctionsProject_CanGetStorageManifestSuccessfully ( )
261
+ {
262
+ using var builder = TestDistributedApplicationBuilder . Create ( DistributedApplicationOperation . Publish ) ;
263
+
264
+ // hardcoded sha256 to make the storage name deterministic
265
+ builder . Configuration [ "AppHost:Sha256" ] = "634f8" ;
266
+ var project = builder . AddAzureFunctionsProject < TestProjectWithHttpsNoPort > ( "funcapp" ) ;
267
+
268
+ var app = builder . Build ( ) ;
269
+
270
+ var model = app . Services . GetRequiredService < DistributedApplicationModel > ( ) ;
271
+
272
+ await ExecuteBeforeStartHooksAsync ( app , default ) ;
273
+
274
+ var storage = Assert . Single ( model . Resources . OfType < AzureProvisioningResource > ( ) . Where ( r => r . Name == $ "funcstorage634f8") ) ;
275
+
276
+ var ( storageManifest , _) = await GetManifestWithBicep ( storage ) ;
277
+
278
+ var expectedRolesManifest =
279
+ """
280
+ {
281
+ "type": "azure.bicep.v0",
282
+ "path": "funcstorage634f8.module.bicep",
283
+ "params": {
284
+ "principalType": "",
285
+ "principalId": ""
286
+ }
287
+ }
288
+ """ ;
289
+ Assert . Equal ( expectedRolesManifest , storageManifest . ToString ( ) ) ;
290
+ }
291
+
259
292
[ Fact ]
260
293
public async Task AddAzureFunctionsProject_WorksWithAddAzureContainerAppsInfrastructure ( )
261
294
{
@@ -312,21 +345,21 @@ param principalId string
312
345
scope: funcstorage634f8
313
346
}
314
347
315
- resource funcstorage634f8_StorageQueueDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
316
- name: guid(funcstorage634f8.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88 '))
348
+ resource funcstorage634f8_StorageTableDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
349
+ name: guid(funcstorage634f8.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3 '))
317
350
properties: {
318
351
principalId: principalId
319
- roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88 ')
352
+ roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3 ')
320
353
principalType: 'ServicePrincipal'
321
354
}
322
355
scope: funcstorage634f8
323
356
}
324
-
325
- resource funcstorage634f8_StorageTableDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
326
- name: guid(funcstorage634f8.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3 '))
357
+
358
+ resource funcstorage634f8_StorageQueueDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
359
+ name: guid(funcstorage634f8.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88 '))
327
360
properties: {
328
361
principalId: principalId
329
- roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3 ')
362
+ roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88 ')
330
363
principalType: 'ServicePrincipal'
331
364
}
332
365
scope: funcstorage634f8
@@ -593,21 +626,21 @@ param principalId string
593
626
scope: funcstorage634f8
594
627
}
595
628
596
- resource funcstorage634f8_StorageQueueDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
597
- name: guid(funcstorage634f8.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88 '))
629
+ resource funcstorage634f8_StorageTableDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
630
+ name: guid(funcstorage634f8.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3 '))
598
631
properties: {
599
632
principalId: principalId
600
- roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88 ')
633
+ roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3 ')
601
634
principalType: 'ServicePrincipal'
602
635
}
603
636
scope: funcstorage634f8
604
637
}
605
638
606
- resource funcstorage634f8_StorageTableDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
607
- name: guid(funcstorage634f8.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3 '))
639
+ resource funcstorage634f8_StorageQueueDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
640
+ name: guid(funcstorage634f8.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88 '))
608
641
properties: {
609
642
principalId: principalId
610
- roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3 ')
643
+ roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88 ')
611
644
principalType: 'ServicePrincipal'
612
645
}
613
646
scope: funcstorage634f8
0 commit comments