public async Task T011_It_can_get_resources_back_from_a_search_a_page_at_a_time() { // Arrange var it = IdmNetClientFactory.BuildClient(); var criteria = new SearchCriteria("/ObjectTypeDescription"); criteria.Selection.Add("DisplayName"); PagedSearchResults pagedSearchResults = await it.GetPagedResultsAsync(criteria, 5); PagingContext pagingContext = pagedSearchResults.PagingContext; // Act var pagedResults = await it.GetPagedResultsAsync(5, pagingContext); // Assert Assert.AreEqual(5, pagedResults.Results.Count); Assert.IsTrue(pagedResults.Results[0].DisplayName.Length > 0); Assert.AreEqual("/ObjectTypeDescription", pagedResults.PagingContext.Filter); Assert.AreEqual(10, pagedResults.PagingContext.CurrentIndex); Assert.AreEqual("Forwards", pagedResults.PagingContext.EnumerationDirection); Assert.AreEqual("9999-12-31T23:59:59.9999999", pagedResults.PagingContext.Expires); Assert.AreEqual("ObjectID", pagedResults.PagingContext.Selection[0]); Assert.AreEqual("ObjectType", pagedResults.PagingContext.Selection[1]); Assert.AreEqual("DisplayName", pagedResults.PagingContext.Selection[2]); Assert.AreEqual("DisplayName", pagedResults.PagingContext.Sorting.SortingAttributes[0].AttributeName); Assert.AreEqual(true, pagedResults.PagingContext.Sorting.SortingAttributes[0].Ascending); Assert.AreEqual(null, pagedResults.EndOfSequence); Assert.AreEqual(true, pagedResults.Items is XmlNode[]); Assert.AreEqual(5, ((XmlNode[])(pagedResults.Items)).Length); }
public async Task It_can_get_resources_even_without_an_initial_search_call_if_you_know_what_you_are_doing() { // Arrange var it = IdmNetClientFactory.BuildClient(); PagingContext pagingContext = new PagingContext { CurrentIndex = 0, Filter = "/ObjectTypeDescription", Selection = new[] { "ObjectID", "ObjectType", "DisplayName" }, Sorting = new Sorting(), EnumerationDirection = "Forwards", Expires = "9999-12-31T23:59:59.9999999" }; // Act var pagedResults = await it.GetPagedResultsAsync(5, pagingContext); // Assert Assert.AreEqual(5, pagedResults.Results.Count); Assert.IsTrue(pagedResults.Results[0].DisplayName.Length > 0); Assert.AreEqual(null, pagedResults.EndOfSequence); Assert.AreEqual(true, pagedResults.Items is XmlNode[]); Assert.AreEqual(5, ((XmlNode[])(pagedResults.Items)).Length); }
public async Task T009_It_can_delete_objects_from_Identity_Manager() { // Arrange var it = IdmNetClientFactory.BuildClient(); IdmResource toDelete = await it.PostAsync(new IdmResource { ObjectType = "Person", DisplayName = "Test User" }); // Act Message result = await it.DeleteAsync(toDelete.ObjectID); // Assert Assert.IsFalse(result.IsFault); try { await it.GetAsync(toDelete.ObjectID, new List <string> { "DisplayName" }); Assert.Fail("Should not make it here"); } catch (KeyNotFoundException) { // OK } }
private static async Task AssertReplaceOk(string attrName, string attrValue1, string attrValue2) { var it = IdmNetClientFactory.BuildClient(); IdmResource testResource = await CreateTestPerson(it); try { // Act await it.ReplaceValueAsync(testResource.ObjectID, attrName, attrValue1); await it.ReplaceValueAsync(testResource.ObjectID, attrName, attrValue2); // Assert var searchResult = await it.SearchAsync(new SearchCriteria { Filter = new Filter { Query = "/Person[ObjectID='" + testResource.ObjectID + "']" }, Selection = new List <string> { attrName } }); Assert.AreEqual(attrValue2, searchResult.First().GetAttrValue(attrName)); } finally { // Afterwards it.DeleteAsync(testResource.ObjectID); } }
public async Task CreateTheUser() { // Create the user var ouContex = new PrincipalContext(ContextType.Domain, "fimdom.lab", "CN=Users,DC=fimdom,DC=lab"); var up = new UserPrincipal(ouContex) { SamAccountName = "ApprovalTestUser01", Enabled = true }; up.SetPassword("Password1"); var sidBytes = new byte[28]; up?.Sid.GetBinaryForm(sidBytes, 0); // Create the user in identity manager IdmNetClient idmClient = IdmNetClientFactory.BuildClient(); var person = new Person { DisplayName = "Approval Test User 01", AccountName = "ApprovalTestUser01", Domain = "FIMDOM", ObjectSID = sidBytes }; var result = await idmClient.PostAsync(person); }
public async Task It_throws_an_exception_when_attempting_to_delete_an_object_that_does_not_exist() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act await it.DeleteAsync("bad object id"); }
public async Task It_throws_when_passing_a_null_resource_to_create() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act await it.PostAsync(null); }
public async Task It_throws_when_attempting_to_delete_a_null_ObjectID() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act await it.DeleteAsync(null); }
public async Task It_returns_0_records_when_no_records_match_search() { // Arrange var it = IdmNetClientFactory.BuildClient(); var searchResults = await it.SearchAsync(new SearchCriteria("/Configuration"), 25); Assert.AreEqual(0, searchResults.Count()); }
public async Task It_throws_an_exception_when_trying_to_create_an_invalid_resource() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act var newUser = new IdmResource(); await it.PostAsync(newUser); }
public async Task It_throws_an_exception_when_valid_yet_unknown_xpath_is_searched_for() { // Arrange var it = IdmNetClientFactory.BuildClient(); var criteria = new SearchCriteria("/foo"); // Act await it.SearchAsync(criteria); }
public async Task It_throws_an_exception_when_it_encounters_bad_xpath() { // Arrange var it = IdmNetClientFactory.BuildClient(); var criteria = new SearchCriteria("<3#"); // Act await it.SearchAsync(criteria); }
public static async Task MainAsync() { _json = File.ReadAllText("AttributeToObjectMapping.json"); Client = IdmNetClientFactory.BuildClient(); _objectTypes = await GetObjectTypes(); await GenerateCode(); }
public async Task It_returns_the_same_number_for_both_GetCount_and_Search() { // Arrange var it = IdmNetClientFactory.BuildClient(); int count = await it.GetCountAsync("/ConstantSpecifier"); var searchResults = await it.SearchAsync(new SearchCriteria("/ConstantSpecifier"), 25); Assert.AreEqual(count, searchResults.Count()); }
public async Task T007_It_can_return_the_number_of_matching_records_for_a_given_search() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act int result = await it.GetCountAsync("/ConstantSpecifier"); // Assert Assert.AreEqual(97, result); }
public async Task T005_It_can_get_a_resource_by_its_ObjectID() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act IdmResource result = await it.GetAsync("c51c9ef3-2de0-4d4e-b30b-c1a18e79c56e", null); // Assert Assert.AreEqual("c51c9ef3-2de0-4d4e-b30b-c1a18e79c56e", result.ObjectID); Assert.AreEqual("ObjectTypeDescription", result.ObjectType); }
public async Task T006_It_can_get_any_or_all_attributes_for_a_resource_by_its_ObjectID() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act IdmResource result = await it.GetAsync("c51c9ef3-2de0-4d4e-b30b-c1a18e79c56e", new List <string> { "*" }); // Assert Assert.AreEqual(6, result.Attributes.Count); Assert.AreEqual("c51c9ef3-2de0-4d4e-b30b-c1a18e79c56e", result.ObjectID); Assert.AreEqual("ObjectTypeDescription", result.ObjectType); Assert.AreEqual("Approval", result.DisplayName); }
public async Task T001_It_can_search_for_resources_without_specifying_a_select_or_sort() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act var results = (await it.SearchAsync(new SearchCriteria("/ObjectTypeDescription"))).ToArray(); // Assert Assert.IsTrue(results.Length >= 40); Assert.AreEqual(2, results[0].Attributes.Count); Assert.AreEqual("ObjectTypeDescription", results[0].ObjectType); Assert.AreEqual("ObjectTypeDescription", results[results.Length - 1].ObjectType); Assert.AreEqual("e1a42ced-6968-457c-b5c8-3f9a573295a6".Length, results[0].ObjectID.Length); Assert.AreEqual("e1a42ced-6968-457c-b5c8-3f9a573295a6".Length, results[1].ObjectID.Length); }
public async Task It_can_make_a_bunch_of_changes_at_the_same_time_for_a_single_resource() { // Arrange var it = IdmNetClientFactory.BuildClient(); IdmResource testResource = await CreateTestPerson(it); var changes1 = new[] { new Change(ModeType.Replace, "FirstName", "FirstNameTest"), new Change(ModeType.Replace, "LastName", "LastNameTest"), new Change(ModeType.Add, "ProxyAddressCollection", "*****@*****.**"), new Change(ModeType.Add, "ProxyAddressCollection", "*****@*****.**"), }; try { // Act Message result = await it.ChangeMultipleAttrbutes(testResource.ObjectID, changes1); // Assert Assert.IsFalse(result.IsFault); var searchResult = await it.SearchAsync(new SearchCriteria { Filter = new Filter { Query = "/Person[ObjectID='" + testResource.ObjectID + "']" }, Selection = new List <string> { "FirstName", "LastName", "ProxyAddressCollection" } }); var modifiedResource1 = searchResult.First(); Assert.AreEqual("FirstNameTest", modifiedResource1.GetAttrValue("FirstName")); Assert.AreEqual("LastNameTest", modifiedResource1.GetAttrValue("LastName")); Assert.IsTrue(modifiedResource1.GetAttrValues("ProxyAddressCollection").Contains("*****@*****.**")); Assert.IsTrue(modifiedResource1.GetAttrValues("ProxyAddressCollection").Contains("*****@*****.**")); } finally { // Afterwards it.DeleteAsync(testResource.ObjectID); } }
public async Task It_throws_an_exception_when_GetAsync_is_called_but_no_match_for_the_object_ID() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act try { IdmResource result = await it.GetAsync("c51c9ef3-f00d-4d4e-b30b-c1a18e79c56e", null); Assert.IsTrue(false, "Should have encountered a KeyNotFoundException"); } catch (KeyNotFoundException) { // Expected Exception } }
public async Task It_doesnt_add_superflous_attributes_on_create() { // Arrange var it = IdmNetClientFactory.BuildClient(); IdmResource createResult = null; try { var newUser = new IdmResource { Attributes = new List <IdmAttribute> { new IdmAttribute { Name = "ObjectType", Values = new List <string> { "Person" } }, new IdmAttribute { Name = "ObjectID", Values = new List <string> { } }, new IdmAttribute { Name = "DisplayName", Values = new List <string> { "_Test User" } }, } }; createResult = await it.PostAsync(newUser); // assert Assert.AreEqual(3, createResult.Attributes.Count); Assert.AreEqual(newUser.DisplayName, createResult.DisplayName); var result = await it.GetAsync(createResult.ObjectID, new List <string> { "DisplayName" }); Assert.AreEqual(newUser.DisplayName, result.DisplayName); } finally { // afterwards it.DeleteAsync(createResult.ObjectID); } // Act }
public async Task AllReferenceAttributes() { var client = IdmNetClientFactory.BuildClient(); var resources = await client.SearchAsync(new SearchCriteria("/AttributeTypeDescription[DataType='Reference']") { Selection = new List <string> { "Name" } }); foreach (var resource in resources) { Debug.WriteLine(resource.GetAttrValue("Name")); } }
public async Task AllObjectTypeNames() { var client = IdmNetClientFactory.BuildClient(); var objectTypesAsResources = await client.SearchAsync(new SearchCriteria("/ObjectTypeDescription") { Selection = new List <string> { "Name" } }); foreach (var resource in objectTypesAsResources) { Debug.WriteLine(resource.GetAttrValue("Name")); } }
public async Task It_can_delete_a_value_from_a_multi_valued_attribute() { // Arrange const string attrName = "ProxyAddressCollection"; const string attrValue1 = "*****@*****.**"; const string attrValue2 = "*****@*****.**"; var it = IdmNetClientFactory.BuildClient(); IdmResource testResource = await CreateTestPerson(it); try { await it.AddValueAsync(testResource.ObjectID, attrName, attrValue1); await it.AddValueAsync(testResource.ObjectID, attrName, attrValue2); // Act Message result = await it.RemoveValueAsync(testResource.ObjectID, attrName, attrValue2); // Assert Assert.IsFalse(result.IsFault); var searchResult = await it.SearchAsync(new SearchCriteria { Filter = new Filter { Query = "/Person[ObjectID='" + testResource.ObjectID + "']" }, Selection = new List <string> { "ProxyAddressCollection" } }); Assert.IsFalse(searchResult.First().GetAttrValues(attrName).Contains(attrValue2)); } finally { // Afterwards it.DeleteAsync(testResource.ObjectID); } }
public async Task It_throws_an_exception_when_you_treat_a_single_valued_attribute_as_if_it_is_multi_valued() { // Arrange const string attrName = "FirstName"; const string attrValue = "Testing"; var it = IdmNetClientFactory.BuildClient(); IdmResource testResource = await CreateTestPerson(it); // Act try { Message result = await it.AddValueAsync(testResource.ObjectID, attrName, attrValue); Assert.IsFalse(result.IsFault); } finally { // Afterwards it.DeleteAsync(testResource.ObjectID); } }
public async Task T003_It_can_search_for_resources_and_return_all_attributes_with_Select_STAR() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act var results = (await it.SearchAsync(new SearchCriteria("/BindingDescription") { Selection = new List <string> { "*" }, })).ToArray(); // Assert Assert.IsTrue(results.Length >= 40); Assert.AreEqual(10, results[0].Attributes.Count); Assert.AreEqual("Account Name", results[0].DisplayName); Assert.AreEqual("XOML", results[results.Length - 1].DisplayName); }
public async Task It_can_return_the_entire_schema_for_a_particular_object_type() { // Arrange var personOid = "6cb7e506-b4b3-4901-8b8c-ff044f14e743"; var it = IdmNetClientFactory.BuildClient(); // Act Schema result = await it.GetSchemaAsync("Person"); //// Assert Assert.AreEqual("User", result.DisplayName); Assert.IsTrue(result.CreatedTime >= new DateTime(2010, 1, 1)); Assert.AreEqual(null, result.Creator); Assert.AreEqual("This resource defines applicable policies to manage incoming requests. ", result.Description); Assert.AreEqual("Person", result.Name); Assert.AreEqual(personOid, result.ObjectID); Assert.AreEqual("ObjectTypeDescription", result.ObjectType); Assert.AreEqual(null, result.ResourceTime); Assert.AreEqual("Microsoft.ResouceManagement.PortalClient", result.UsageKeyword[0]); var expectedBindingCount = 59; Assert.IsTrue(result.BindingDescriptions.Count >= expectedBindingCount); for (int i = 0; i < expectedBindingCount; i++) { Assert.AreEqual(personOid, result.BindingDescriptions[i].BoundObjectType.ObjectID); } Assert.AreEqual("3e04bbbf-014f-413c-8d07-6276cd383be8", result.BindingDescriptions[0].BoundAttributeType.ObjectID); Assert.AreEqual(false, result.BindingDescriptions[0].Required); Assert.AreEqual("String", result.BindingDescriptions[0].BoundAttributeType.DataType); Assert.AreEqual(false, result.BindingDescriptions[0].BoundAttributeType.Multivalued); Assert.AreEqual("Account Name", result.BindingDescriptions[0].BoundAttributeType.DisplayName); Assert.AreEqual("User's log on name", result.BindingDescriptions[0].BoundAttributeType.Description); Assert.AreEqual(null, result.BindingDescriptions[0].BoundAttributeType.IntegerMaximum); Assert.AreEqual(null, result.BindingDescriptions[0].BoundAttributeType.IntegerMinimum); Assert.AreEqual("AccountName", result.BindingDescriptions[0].BoundAttributeType.Name); Assert.AreEqual(null, result.BindingDescriptions[0].BoundAttributeType.StringRegex); Assert.AreEqual("Microsoft.ResourceManagement.WebServices", result.BindingDescriptions[0].BoundAttributeType.UsageKeyword[0]); }
public async Task T002_It_can_search_for_resources_and_return_specific_attributes() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act var results = (await it.SearchAsync(new SearchCriteria("/ObjectTypeDescription") { Selection = new List <string> { "DisplayName", "Name" } })).ToArray(); // Assert Assert.IsTrue(results.Length >= 40); Assert.AreEqual(4, results[0].Attributes.Count); Assert.IsTrue(results[0].DisplayName.Length > 0); Assert.IsTrue(results[results.Length - 1].DisplayName.Length > 0); Assert.AreEqual("ActivityInformationConfiguration", results[0].GetAttrValue("Name")); Assert.IsTrue(results[1].GetAttrValue("Name").Length > 0); }
public async Task T008_It_can_create_objects_in_Identity_Manager() { // Arrange var it = IdmNetClientFactory.BuildClient(); // Act var newUser = new IdmResource { ObjectType = "Person", DisplayName = "Test User" }; IdmResource createResult = await it.PostAsync(newUser); Assert.AreEqual(newUser.DisplayName, createResult.DisplayName); // assert var result = await it.GetAsync(createResult.ObjectID, new List <string> { "DisplayName" }); Assert.AreEqual(newUser.DisplayName, result.DisplayName); // afterwards await it.DeleteAsync(createResult.ObjectID); }
public async Task It_can_modify_single_valued_attribute_that_was_previously_null() { // Arrange const string attrName = "FirstName"; const string attrValue = "TestFirstName"; var it = IdmNetClientFactory.BuildClient(); IdmResource testResource = await CreateTestPerson(it); try { // Act Message result = await it.ReplaceValueAsync(testResource.ObjectID, attrName, attrValue); // Assert Assert.IsFalse(result.IsFault); var searchResult = await it.SearchAsync(new SearchCriteria { Filter = new Filter { Query = "/Person[ObjectID='" + testResource.ObjectID + "']" }, Selection = new List <string> { attrName } }); Assert.AreEqual(attrValue, searchResult.First().GetAttrValue(attrName)); } finally { // Afterwards it.DeleteAsync(testResource.ObjectID); } }