@@ -424,4 +424,208 @@ function Validate-EqualSchemaObjects($obj1, $obj2)
424
424
Validate- EqualPartitionKeys $obj1.PartitionKeys [$i ] $obj2.PartitionKeys [$i ]
425
425
$i = $i + 1
426
426
}
427
+ }
428
+
429
+ <#
430
+ . SYNOPSIS
431
+ Test Cassandra Roles cmdlets using all parameter sets
432
+ #>
433
+ function Test-CassandraRoleCmdlets
434
+ {
435
+ $AccountName = " yayi-cassandra-test-1"
436
+ $rgName = " yayi-test"
437
+ $location = " UK South"
438
+ $locations = @ ()
439
+ $locations += New-AzCosmosDBLocationObject - LocationName " UK South" - FailoverPriority 0 - IsZoneRedundant 0
440
+
441
+ $CassandraName = " cassandra1"
442
+ $CassandraName2 = " cassandra2"
443
+ $apiKind = " Cassandra"
444
+ $ThroughputValue = 500
445
+ $consistencyLevel = " Session"
446
+ $UpdatedThroughputValue = 600
447
+
448
+ $subscriptionId = " 80be3961-0521-4a0a-8570-5cd5a4e2f98c" # $(getVariable "SubscriptionId")
449
+
450
+ $PrincipalId = " 5059f4fb-8e7e-4f41-9ca0-37bbaea765ea"
451
+ $PrincipalId2 = " 15859188-ae55-4f6d-8f07-ac19a1ae8e7f"
452
+
453
+ $RoleName = " roleDefinitionName12"
454
+ $RoleName2 = " roleDefinitionName2"
455
+ $RoleName3 = " roleDefinitionName3"
456
+ $RoleName4 = " roleDefinitionName4"
457
+ $RoleName5 = " roleDefinitionName5"
458
+ $RoleName6 = " roleDefinitionName6"
459
+
460
+ $DataActionRead = " Microsoft.DocumentDB/databaseAccounts/cassandra/containers/entities/read"
461
+ $DataActionCreate = " Microsoft.DocumentDB/databaseAccounts/cassandra/containers/entities/create"
462
+ $DataActionReplace = " Microsoft.DocumentDB/databaseAccounts/cassandra/containers/entities/replace"
463
+ $DataActionInvalid = " Microsoft.DocumentDB/databaseAccounts/cassandra/containers/entities/invalid-action"
464
+
465
+ $Scope = " /"
466
+ $FullyQualifiedScope = " /subscriptions/$subscriptionId /resourceGroups/$rgName /providers/Microsoft.DocumentDB/databaseAccounts/$AccountName "
467
+ $Scope2 = " /subscriptions/$subscriptionId /resourceGroups/$rgName /providers/Microsoft.DocumentDB/databaseAccounts/$AccountName /dbs/dbName"
468
+
469
+ $RoleDefinitionId = " df31c3a1-20f5-4ff1-bdd0-5e0782617e22"
470
+ $FullyQualifiedRoleDefinitionId = " /subscriptions/$subscriptionId /resourceGroups/$rgName /providers/Microsoft.DocumentDB/databaseAccounts/$AccountName /cassandraRoleDefinitions/df31c3a1-20f5-4ff1-bdd0-5e0782617e22"
471
+ $RoleDefinitionId2 = " a36e56a5-9afc-4819-aa78-3a8083a3ee74"
472
+ $FullyQualifiedRoleDefinitionId2 = " /subscriptions/$subscriptionId /resourceGroups/$rgName /providers/Microsoft.DocumentDB/databaseAccounts/$AccountName /cassandraRoleDefinitions/a36e56a5-9afc-4819-aa78-3a8083a3ee74"
473
+ $RoleDefinitionId3 = " 9ee200b5-73fd-4779-b36a-e2a31f9244f3"
474
+ $FullyQualifiedRoleDefinitionId3 = " /subscriptions/$subscriptionId /resourceGroups/$rgName /providers/Microsoft.DocumentDB/databaseAccounts/$AccountName /cassandraRoleDefinitions/9ee200b5-73fd-4779-b36a-e2a31f9244f3"
475
+ $RoleDefinitionId6 = " 7ff311a6-73fd-4779-b36a-e2a31f9244f3"
476
+
477
+ $RoleAssignmentId = " a2ccaf94-3c39-4728-b892-95edeef0e754"
478
+ $FullyQualifiedRoleAssignmentId = " /subscriptions/$subscriptionId /resourceGroups/$rgName /providers/Microsoft.DocumentDB/databaseAccounts/$AccountName /cassandraRoleAssignments/a2ccaf94-3c39-4728-b892-95edeef0e754"
479
+ $RoleAssignmentId2 = " 8f3f78c4-a8df-4088-9cbb-a3947e27076b"
480
+ $FullyQualifiedRoleAssignmentId2 = " /subscriptions/$subscriptionId /resourceGroups/$rgName /providers/Microsoft.DocumentDB/databaseAccounts/$AccountName /cassandraRoleAssignments/8f3f78c4-a8df-4088-9cbb-a3947e27076b"
481
+ $RoleAssignmentId3 = " e7a0b8a5-b381-495d-a020-5467c534e619"
482
+ $FullyQualifiedRoleAssignmentId3 = " /subscriptions/$subscriptionId /resourceGroups/$rgName /providers/Microsoft.DocumentDB/databaseAccounts/$AccountName /cassandraRoleAssignments/e7a0b8a5-b381-495d-a020-5467c534e619"
483
+
484
+
485
+ Try {
486
+
487
+ $DatabaseAccount = Get-AzCosmosDBAccount - Name $AccountName - ResourceGroupName $rgName
488
+
489
+ # update non-existing role definition, role assignment
490
+ Try {
491
+ $UpdatedRoleDefinition = Update-AzCosmosDBCassandraRoleDefinition - Type " CustomRole" - RoleName " RoleName3" - DataAction $DataActionCreate - AssignableScope $Scope2 - Id " 00000000-0000-0000-0000-000000000000" - AccountName $AccountName - ResourceGroupName $rgName
492
+ }
493
+ Catch {
494
+ Assert-AreEqual $_.Exception.Message (" Role Definition with Id [00000000-0000-0000-0000-000000000000] does not exist." )
495
+ }
496
+ Try {
497
+ $UpdatedRoleAssignment = Update-AzCosmosDBCassandraRoleAssignment - RoleDefinitionName " RoleName4" - Id " 11111111-1111-1111-1111-111111111111" - AccountName $AccountName - ResourceGroupName $rgName
498
+ }
499
+ Catch {
500
+ Assert-AreEqual $_.Exception.Message (" Role Assignment with Name [RoleName4] does not exist." )
501
+ }
502
+
503
+ # role def tests
504
+ # create a new role definition - using parent object and permission
505
+ $Permissions = New-AzCosmosDBPermission - DataAction $DataActionRead
506
+ $NewRoleDefinitionFromParentObject = New-AzCosmosDBCassandraRoleDefinition - Type " CustomRole" - RoleName $RoleName - Permission $Permissions - AssignableScope $Scope - Id $RoleDefinitionId - ParentObject $DatabaseAccount
507
+ Assert-AreEqual $NewRoleDefinitionFromParentObject.RoleName $RoleName
508
+ Assert-AreEqual $NewRoleDefinitionFromParentObject.Type " CustomRole"
509
+ Assert-AreEqual $NewRoleDefinitionFromParentObject.Id $FullyQualifiedRoleDefinitionId
510
+ Assert-NotNull $NewRoleDefinitionFromParentObject.AssignableScopes
511
+ Assert-NotNull $NewRoleDefinitionFromParentObject.Permissions
512
+
513
+ # create a new role definition - using fields and data actions
514
+ $NewRoleDefinitionFromFields = New-AzCosmosDBCassandraRoleDefinition - Type " CustomRole" - RoleName $RoleName2 - DataAction $DataActionCreate - AssignableScope $Scope2 - Id $RoleDefinitionId2 - AccountName $AccountName - ResourceGroupName $rgName
515
+ Assert-AreEqual $NewRoleDefinitionFromFields.RoleName $RoleName2
516
+ Assert-AreEqual $NewRoleDefinitionFromFields.Type " CustomRole"
517
+ Assert-AreEqual $NewRoleDefinitionFromFields.Id $FullyQualifiedRoleDefinitionId2
518
+ Assert-NotNull $NewRoleDefinitionFromFields.AssignableScopes
519
+ Assert-NotNull $NewRoleDefinitionFromFields.Permissions
520
+
521
+ $NewRoleDefinitionFromFields2 = New-AzCosmosDBCassandraRoleDefinition - Type " CustomRole" - RoleName $RoleName3 - DataAction $DataActionCreate - AssignableScope $Scope - Id $RoleDefinitionId3 - AccountName $AccountName - ResourceGroupName $rgName
522
+ Assert-AreEqual $NewRoleDefinitionFromFields2.RoleName $RoleName3
523
+ Assert-AreEqual $NewRoleDefinitionFromFields2.Type " CustomRole"
524
+ Assert-AreEqual $NewRoleDefinitionFromFields2.Id $FullyQualifiedRoleDefinitionId3
525
+ Assert-NotNull $NewRoleDefinitionFromFields2.AssignableScopes
526
+ Assert-NotNull $NewRoleDefinitionFromFields2.Permissions
527
+
528
+ # get a role definition
529
+ $RoleDefinition = Get-AzCosmosDBCassandraRoleDefinition - AccountName $AccountName - ResourceGroupName $rgName - Id $RoleDefinitionId
530
+ Assert-AreEqual $RoleDefinition.RoleName $RoleName
531
+ Assert-AreEqual $RoleDefinition.Type " CustomRole"
532
+ Assert-NotNull $RoleDefinition.AssignableScopes
533
+ Assert-NotNull $RoleDefinition.Permissions
534
+
535
+ # update role definition by parent object and data actions
536
+ $UpdatedRoleDefinition = Update-AzCosmosDBCassandraRoleDefinition - Type " CustomRole" - RoleName $RoleName4 - DataAction $DataActionReplace - AssignableScope $Scope - Id $RoleDefinitionId - ParentObject $DatabaseAccount
537
+ Assert-AreEqual $UpdatedRoleDefinition.Id $FullyQualifiedRoleDefinitionId
538
+ Assert-AreEqual $UpdatedRoleDefinition.RoleName $RoleName4
539
+ Assert-NotNull $UpdatedRoleDefinition.AssignableScopes
540
+ Assert-NotNull $UpdatedRoleDefinition.Permissions
541
+
542
+ # update role definition by fields and permissions
543
+ $UpdatedRoleDefinition = Update-AzCosmosDBCassandraRoleDefinition - Type " CustomRole" - RoleName $RoleName5 - Permission $Permissions - AssignableScope $Scope - AccountName $AccountName - ResourceGroupName $rgName - Id $RoleDefinitionId
544
+ Assert-AreEqual $UpdatedRoleDefinition.Id $FullyQualifiedRoleDefinitionId
545
+ Assert-AreEqual $UpdatedRoleDefinition.RoleName $RoleName5
546
+ Assert-NotNull $UpdatedRoleDefinition.AssignableScopes
547
+ Assert-NotNull $UpdatedRoleDefinition.Permissions
548
+
549
+ # list Role Definitions
550
+ $ListRoleDefinitions = Get-AzCosmosDBCassandraRoleDefinition - AccountName $AccountName - ResourceGroupName $rgName
551
+ Assert-NotNull $ListRoleDefinitions
552
+
553
+ # role assignment tests
554
+ # create a new role assignment from name
555
+ $NewRoleAssignmentFromName = New-AzCosmosDBCassandraRoleAssignment - RoleDefinitionName $RoleName5 - Scope $Scope - PrincipalId $PrincipalId - Id $RoleAssignmentId2 - AccountName $AccountName - ResourceGroupName $rgName
556
+ Assert-AreEqual $NewRoleAssignmentFromName.RoleDefinitionId $FullyQualifiedRoleDefinitionId
557
+ Assert-AreEqual $NewRoleAssignmentFromName.Scope $FullyQualifiedScope
558
+ Assert-AreEqual $NewRoleAssignmentFromName.PrincipalId $PrincipalId
559
+ Assert-AreEqual $NewRoleAssignmentFromName.Id $FullyQualifiedRoleAssignmentId2
560
+
561
+ # create a new role assignment from parent object
562
+ $NewRoleAssignmentFromParentObject = New-AzCosmosDBCassandraRoleAssignment - ParentObject $NewRoleDefinitionFromFields2 - Scope $Scope - PrincipalId $PrincipalId2 - Id $RoleAssignmentId3
563
+ Assert-AreEqual $NewRoleAssignmentFromParentObject.RoleDefinitionId $FullyQualifiedRoleDefinitionId3
564
+ Assert-AreEqual $NewRoleAssignmentFromParentObject.Scope $FullyQualifiedScope
565
+ Assert-AreEqual $NewRoleAssignmentFromParentObject.PrincipalId $PrincipalId2
566
+ Assert-AreEqual $NewRoleAssignmentFromParentObject.Id $FullyQualifiedRoleAssignmentId3
567
+
568
+ # create a new role assignment from Id
569
+ $NewRoleAssignmentFromId3 = New-AzCosmosDBCassandraRoleAssignment - RoleDefinitionId $RoleDefinitionId - Scope $Scope - PrincipalId $PrincipalId - AccountName $AccountName - ResourceGroupName $rgName - Id $RoleAssignmentId
570
+ Assert-AreEqual $NewRoleAssignmentFromId3.RoleDefinitionId $FullyQualifiedRoleDefinitionId
571
+ Assert-AreEqual $NewRoleAssignmentFromId3.Scope $FullyQualifiedScope
572
+ Assert-AreEqual $NewRoleAssignmentFromId3.PrincipalId $PrincipalId
573
+ Assert-NotNull $NewRoleAssignmentFromId3.Id
574
+
575
+ # get a role assignment
576
+ $RoleAssignment = Get-AzCosmosDBCassandraRoleAssignment - AccountName $AccountName - ResourceGroupName $rgName - Id $RoleAssignmentId
577
+ Assert-AreEqual $RoleAssignment.RoleDefinitionId $FullyQualifiedRoleDefinitionId
578
+ Assert-AreEqual $RoleAssignment.Scope $FullyQualifiedScope
579
+ Assert-AreEqual $RoleAssignment.PrincipalId $PrincipalId
580
+ Assert-AreEqual $RoleAssignment.Id $FullyQualifiedRoleAssignmentId
581
+
582
+ # update role assignment by role definition name
583
+ $UpdatedRoleAssignment = Update-AzCosmosDBCassandraRoleAssignment - RoleDefinitionName $RoleName3 - Id $RoleAssignmentId - AccountName $AccountName - ResourceGroupName $rgName
584
+ Assert-AreEqual $UpdatedRoleAssignment.RoleDefinitionId $FullyQualifiedRoleDefinitionId3
585
+ Assert-AreEqual $UpdatedRoleAssignment.Scope $FullyQualifiedScope
586
+ Assert-AreEqual $UpdatedRoleAssignment.PrincipalId $PrincipalId
587
+ Assert-AreEqual $UpdatedRoleAssignment.Id $FullyQualifiedRoleAssignmentId
588
+
589
+ # update role assignmnent by role definition id
590
+ $UpdatedRoleAssignment = Update-AzCosmosDBCassandraRoleAssignment - RoleDefinitionId $RoleDefinitionId - Id $RoleAssignmentId - AccountName $AccountName - ResourceGroupName $rgName
591
+ Assert-AreEqual $UpdatedRoleAssignment.RoleDefinitionId $FullyQualifiedRoleDefinitionId
592
+ Assert-AreEqual $UpdatedRoleAssignment.Scope $FullyQualifiedScope
593
+ Assert-AreEqual $UpdatedRoleAssignment.PrincipalId $PrincipalId
594
+ Assert-AreEqual $UpdatedRoleAssignment.Id $FullyQualifiedRoleAssignmentId
595
+
596
+ # update role assignmnent by input object
597
+ $UpdatedRoleAssignment.RoleDefinitionId = $FullyQualifiedRoleDefinitionId3
598
+ $UpdatedRoleAssignment = Update-AzCosmosDBCassandraRoleAssignment - InputObject $UpdatedRoleAssignment
599
+ Assert-AreEqual $UpdatedRoleAssignment.RoleDefinitionId $FullyQualifiedRoleDefinitionId3
600
+ Assert-AreEqual $UpdatedRoleAssignment.Scope $FullyQualifiedScope
601
+ Assert-AreEqual $UpdatedRoleAssignment.PrincipalId $PrincipalId
602
+ Assert-AreEqual $UpdatedRoleAssignment.Id $FullyQualifiedRoleAssignmentId
603
+
604
+ # update role assignmnent by parent object
605
+ $UpdatedRoleAssignment = Update-AzCosmosDBCassandraRoleAssignment - Id $RoleAssignmentId - ParentObject $UpdatedRoleDefinition
606
+ Assert-AreEqual $UpdatedRoleAssignment.RoleDefinitionId $FullyQualifiedRoleDefinitionId
607
+ Assert-AreEqual $UpdatedRoleAssignment.Scope $FullyQualifiedScope
608
+ Assert-AreEqual $UpdatedRoleAssignment.PrincipalId $PrincipalId
609
+ Assert-AreEqual $UpdatedRoleAssignment.Id $FullyQualifiedRoleAssignmentId
610
+
611
+ # list Role Assignments
612
+ $ListRoleAssignments = Get-AzCosmosDBCassandraRoleAssignment - AccountName $AccountName - ResourceGroupName $rgName
613
+ Assert-NotNull $ListRoleAssignments
614
+
615
+ # check for correct error propagation
616
+ $PermissionsInvalid = New-AzCosmosDBPermission - DataAction $DataActionInvalid
617
+ $ScriptBlockRoleDef = { New-AzCosmosDBCassandraRoleDefinition - Type " CustomRole" - RoleName $RoleName6 - Permission $PermissionsInvalid - AssignableScope $Scope - Id $RoleDefinitionId6 - ParentObject $DatabaseAccount }
618
+ Assert-ThrowsContains $ScriptBlockRoleDef " BadRequest"
619
+ }
620
+ Finally {
621
+ $DatabaseAccount = Get-AzCosmosDBAccount - Name $AccountName - ResourceGroupName $rgName
622
+
623
+ Remove-AzCosmosDBCassandraRoleAssignment - AccountName $AccountName - ResourceGroupName $rgName - Id $RoleAssignmentId
624
+ Remove-AzCosmosDBCassandraRoleAssignment - AccountName $AccountName - ResourceGroupName $rgName - Id $RoleAssignmentId2
625
+ Remove-AzCosmosDBCassandraRoleAssignment - ParentObject $DatabaseAccount - Id $RoleAssignmentId3
626
+
627
+ Remove-AzCosmosDBCassandraRoleDefinition - ParentObject $DatabaseAccount - Id $RoleDefinitionId
628
+ Remove-AzCosmosDBCassandraRoleDefinition - ParentObject $DatabaseAccount - Id $RoleDefinitionId2
629
+ Remove-AzCosmosDBCassandraRoleDefinition - ParentObject $DatabaseAccount - Id $RoleDefinitionId3
630
+ }
427
631
}
0 commit comments