Skip to content

Commit c346b92

Browse files
authored
Merge pull request #4 from yayi0512/users/yayi/miaadsupport-powershell-gremlin/cassandra/mongomi
Adding PS Gremlin Cassandra and Mongo role def/assignment commands
2 parents bf9aaf8 + 23f5317 commit c346b92

File tree

70 files changed

+29664
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+29664
-1
lines changed

src/CosmosDB/CosmosDB.Test/ScenarioTests/CassandraOperationsTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,12 @@ public void TestCassandraMigrateThroughputCmdlets()
5050
{
5151
TestRunner.RunTestScript("Test-CassandraMigrateThroughputCmdlets");
5252
}
53+
54+
[Fact]
55+
[Trait(Category.AcceptanceType, Category.CheckIn)]
56+
public void TestCassandraRoleCmdlets()
57+
{
58+
TestRunner.RunTestScript("Test-CassandraRoleCmdlets");
59+
}
5360
}
5461
}

src/CosmosDB/CosmosDB.Test/ScenarioTests/CassandraOperationsTests.ps1

Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,4 +424,208 @@ function Validate-EqualSchemaObjects($obj1, $obj2)
424424
Validate-EqualPartitionKeys $obj1.PartitionKeys[$i] $obj2.PartitionKeys[$i]
425425
$i = $i + 1
426426
}
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+
}
427631
}

src/CosmosDB/CosmosDB.Test/ScenarioTests/GremlinOperationsTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,5 +78,12 @@ public void TestGremlinInAccountRestoreOperationsSharedRUResourcesCmdlets()
7878
{
7979
TestRunner.RunTestScript("Test-GremlinInAccountRestoreOperationsSharedRUResourcesCmdlets");
8080
}
81+
82+
[Fact]
83+
[Trait(Category.AcceptanceType, Category.CheckIn)]
84+
public void TestGremlinRoleCmdlets()
85+
{
86+
TestRunner.RunTestScript("Test-GremlinRoleCmdlets");
87+
}
8188
}
8289
}

0 commit comments

Comments
 (0)