diff --git a/Modules/VMware.vSphere.SsoAdmin/src/VMware.vSphere.SsoAdmin.Client/VMware.vSphere.SsoAdminClient.Tests/IntegrationTests.cs b/Modules/VMware.vSphere.SsoAdmin/src/VMware.vSphere.SsoAdmin.Client/VMware.vSphere.SsoAdminClient.Tests/IntegrationTests.cs index b769e4c..0ed5620 100644 --- a/Modules/VMware.vSphere.SsoAdmin/src/VMware.vSphere.SsoAdmin.Client/VMware.vSphere.SsoAdminClient.Tests/IntegrationTests.cs +++ b/Modules/VMware.vSphere.SsoAdmin/src/VMware.vSphere.SsoAdmin.Client/VMware.vSphere.SsoAdminClient.Tests/IntegrationTests.cs @@ -97,6 +97,23 @@ namespace VMware.vSphere.SsoAdminClient.Tests Assert.AreEqual("localos", actual[0].Domain); } + [Test] + public void GetPersonUsersInGroup() { + // Arrange + var ssoAdminClient = new SsoAdminClient(_vc, _user, _password, new AcceptAllX509CertificateValidator()); + + // Act + var actual = ssoAdminClient.GetPersonUsersInGroup("", new Group { + Name = "Administrators", + Domain = "vsphere.local" + }).ToArray(); + + // Assert + Assert.NotNull(actual); + Assert.GreaterOrEqual(actual.Length, 1); + Assert.AreEqual("vsphere.local", actual[0].Domain); + } + [Test] public void AddRemoveUserFromGroup() { // Arrange diff --git a/Modules/VMware.vSphere.SsoAdmin/src/VMware.vSphere.SsoAdmin.Client/VMware.vSphere.SsoAdminClient/SsoAdminClient.cs b/Modules/VMware.vSphere.SsoAdmin/src/VMware.vSphere.SsoAdmin.Client/VMware.vSphere.SsoAdminClient/SsoAdminClient.cs index 35b698f..97efb2f 100644 --- a/Modules/VMware.vSphere.SsoAdmin/src/VMware.vSphere.SsoAdmin.Client/VMware.vSphere.SsoAdminClient/SsoAdminClient.cs +++ b/Modules/VMware.vSphere.SsoAdmin/src/VMware.vSphere.SsoAdmin.Client/VMware.vSphere.SsoAdminClient/SsoAdminClient.cs @@ -229,6 +229,40 @@ namespace VMware.vSphere.SsoAdminClient } + public IEnumerable GetPersonUsersInGroup(string searchString, DataTypes.Group group) { + // Create Authorization Invocation Context + var authorizedInvocationContext = + CreateAuthorizedInvocationContext(); + + // Invoke SSO Admin FindPersonUsersAsync operation + var personUsers = authorizedInvocationContext. + InvokeOperation(() => + _ssoAdminBindingClient.FindPersonUsersInGroupAsync( + new ManagedObjectReference { + type = "SsoAdminPrincipalDiscoveryService", + Value = "principalDiscoveryService" + }, + new SsoPrincipalId { + name = group.Name, + domain = group.Domain + }, + searchString, + int.MaxValue)).Result.returnval; + + if (personUsers != null) { + foreach (var personUser in personUsers) { + yield return new PersonUser(this) { + Name = personUser.id.name, + Domain = personUser.id.domain, + Description = personUser.details.description, + FirstName = personUser.details.firstName, + LastName = personUser.details.lastName, + EmailAddress = personUser.details.emailAddress + }; + } + } + } + public void DeleteLocalUser( PersonUser principal) {