private VaultGetResponse CreateVault(KeyVaultManagementClient mgmtClient, string location, string tenantId,
                                             ServicePrincipalGetResult servicePrincipal)
        {
            var createResponse = mgmtClient.Vaults.CreateOrUpdate(
                resourceGroupName: rgName,
                vaultName: vaultName,
                parameters: new VaultCreateOrUpdateParameters
            {
                Location   = location,
                Tags       = new Dictionary <string, string>(),
                Properties = new VaultProperties
                {
                    EnabledForDeployment = true,
                    Sku = new Sku {
                        Family = "A", Name = "Premium"
                    },
                    TenantId       = Guid.Parse(tenantId),
                    VaultUri       = "",
                    AccessPolicies = new[]
                    {
                        new AccessPolicyEntry
                        {
                            TenantId             = Guid.Parse(tenantId),
                            ObjectId             = Guid.Parse(servicePrincipal.ServicePrincipal.ObjectId),
                            PermissionsToKeys    = new string[] { "all" },
                            PermissionsToSecrets = new string[] { "all" }
                        }
                    }
                }
            }
                );

            return(createResponse);
        }
        public void QueryServicePrincipalTest()
        {
            using (UndoContext context = UndoContext.Current)
            {
                context.Start();
                var client = (new GraphTestBase()).GraphClient;

                //test general 'list'
                var servicePrincipals = client.ServicePrincipal.List(null);
                Assert.NotNull(servicePrincipals);
                Assert.NotNull(servicePrincipals.StatusCode == HttpStatusCode.OK);
                Assert.NotNull(servicePrincipals.ServicePrincipals);

                string testServicePrincipalName = servicePrincipals.ServicePrincipals.ElementAt(0).ServicePrincipalNames[0];
                string testObjcetId             = servicePrincipals.ServicePrincipals.ElementAt(0).ObjectId;

                //test query by 'service principal name'
                ServicePrincipalListResult listResult       = client.ServicePrincipal.GetByServicePrincipalName(testServicePrincipalName);
                ServicePrincipal           servicePrincipal = listResult.ServicePrincipals[0];

                Assert.True(listResult.ServicePrincipals.Count == 1);
                Assert.True(listResult.StatusCode == HttpStatusCode.OK);
                Assert.NotNull(servicePrincipal);
                Assert.True(servicePrincipal.ObjectId == testObjcetId);
                Assert.NotNull(servicePrincipal.DisplayName);
                Assert.NotNull(servicePrincipal.ObjectType);
                Assert.True(servicePrincipal.ServicePrincipalNames.Contains(testServicePrincipalName));

                //test query by 'object id'
                ServicePrincipalGetResult getResult = client.ServicePrincipal.Get(testObjcetId);
                servicePrincipal = getResult.ServicePrincipal;

                Assert.NotNull(getResult);
                Assert.True(getResult.StatusCode == HttpStatusCode.OK);
                Assert.NotNull(getResult.ServicePrincipal);
                Assert.True(servicePrincipal.ObjectId == testObjcetId);
                Assert.NotNull(servicePrincipal.DisplayName);
                Assert.NotNull(servicePrincipal.ObjectType);
                Assert.True(servicePrincipal.ServicePrincipalNames.Contains(testServicePrincipalName));

                //test query by 'displayName'
                listResult       = client.ServicePrincipal.List(servicePrincipal.DisplayName);
                servicePrincipal = listResult.ServicePrincipals[0];

                Assert.NotNull(listResult);
                Assert.True(listResult.StatusCode == HttpStatusCode.OK);
                Assert.True(servicePrincipal.ObjectId == testObjcetId);
                Assert.NotNull(servicePrincipal.DisplayName);
                Assert.NotNull(servicePrincipal.ObjectType);
                Assert.True(servicePrincipal.ServicePrincipalNames.Contains(testServicePrincipalName));
            }
        }
        //Get ApplicationId for the given ObjectId.
        private Guid GetApplicationId()
        {
            Guid tenantId = GetTenantId(AadTenantId);

            SubscriptionCloudCredentials cred        = AzureSession.AuthenticationFactory.GetSubscriptionCloudCredentials(DefaultProfile.Context);
            GraphRbacManagementClient    graphClient = new GraphRbacManagementClient(tenantId.ToString(), cred);

            ServicePrincipalGetResult res = graphClient.ServicePrincipal.Get(ObjectId.ToString());

            var applicationId = Guid.Empty;

            Guid.TryParse(res.ServicePrincipal.AppId, out applicationId);
            Debug.Assert(applicationId != Guid.Empty);
            return(applicationId);
        }