public static IAccount CreateAccount(IInternalSyncDataStore dataStoreSync, string accountsHref, IAccount account, Action<AccountCreationOptionsBuilder> creationOptionsAction) { var builder = new AccountCreationOptionsBuilder(); creationOptionsAction(builder); var options = builder.Build(); return dataStoreSync.Create(accountsHref, account, options); }
public static Task<IAccount> CreateAccountAsync(IInternalAsyncDataStore dataStore, string accountsHref, IAccount account, Action<AccountCreationOptionsBuilder> creationOptionsAction, CancellationToken cancellationToken) { var builder = new AccountCreationOptionsBuilder(); creationOptionsAction(builder); var options = builder.Build(); return dataStore.CreateAsync(accountsHref, account, options, cancellationToken); }
private async Task AddObjectsToTenantAsync() { // Get client and tenant var client = TestClients.GetSAuthc1Client(); var tenant = await client.GetCurrentTenantAsync(); tenant.ShouldNotBe(null); tenant.Href.ShouldNotBeNullOrEmpty(); this.TenantHref = tenant.Href; // Create applications try { // Create and verify applications var applicationsToCreate = this.testData.GetTestApplications(client); var applicationCreationTasks = applicationsToCreate.Select(app => tenant.CreateApplicationAsync(app, opt => opt.CreateDirectory = false)); var resultingApplications = await Task.WhenAll(applicationCreationTasks); resultingApplications.ShouldNotContain(x => string.IsNullOrEmpty(x.Href)); // Add them all to the teardown list this.CreatedApplicationHrefs.AddRange(resultingApplications.Select(x => x.Href)); // Grab the one marked as primary this.PrimaryApplicationHref = resultingApplications.Where(x => x.Name.Contains("primary")).Single().Href; } catch (Exception e) { await this.RemoveObjectsFromTenantAsync(); throw new ApplicationException("Could not create applications", e); } // Create organizations IOrganization primaryOrganization = null; try { var orgsToCreate = this.testData.GetTestOrganizations(client); var orgCreationTasks = orgsToCreate.Select(o => tenant.CreateOrganizationAsync(o, opt => opt.CreateDirectory = true)); var resultingOrgs = await Task.WhenAll(orgCreationTasks); resultingOrgs.ShouldNotContain(x => string.IsNullOrEmpty(x.Href)); // Verify that directories were created, too var getDirectoryTasks = resultingOrgs.Select(x => x.GetDefaultAccountStoreAsync()); var resultingDirectories = await Task.WhenAll(getDirectoryTasks); resultingDirectories.ShouldNotContain(x => string.IsNullOrEmpty(x.Href)); // Add them all to the teardown list this.CreatedOrganizationHrefs.AddRange(resultingOrgs.Select(x => x.Href)); this.CreatedDirectoryHrefs.AddRange(resultingDirectories.Select(x => x.Href)); // Grab the one marked as primary primaryOrganization = resultingOrgs.Where(x => x.Name.Contains("primary")).Single(); this.PrimaryOrganizationHref = primaryOrganization.Href; this.PrimaryOrganizationNameKey = primaryOrganization.NameKey; this.PrimaryDirectoryHref = (await primaryOrganization.GetDefaultAccountStoreAsync()).Href; } catch (Exception e) { await this.RemoveObjectsFromTenantAsync(); throw new ApplicationException("Could not create organizations", e); } // Add primary organization to primary application as an account store var primaryApplication = await client.GetResourceAsync<IApplication>(this.PrimaryApplicationHref); var mapping = client.Instantiate<IApplicationAccountStoreMapping>() .SetAccountStore(primaryOrganization) .SetApplication(primaryApplication) .SetDefaultAccountStore(true) .SetDefaultGroupStore(true); await primaryApplication.CreateAccountStoreMappingAsync(mapping); // Create accounts in primary organization try { var accountsToCreate = this.testData.GetTestAccounts(client); var createOptions = new AccountCreationOptionsBuilder() { RegistrationWorkflowEnabled = false }.Build(); var accountCreationTasks = accountsToCreate.Select(acct => primaryOrganization.CreateAccountAsync(acct, createOptions)); var resultingAccounts = await Task.WhenAll(accountCreationTasks); this.CreatedAccountHrefs.AddRange(resultingAccounts.Select(x => x.Href)); } catch (Exception e) { await this.RemoveObjectsFromTenantAsync(); throw new ApplicationException("Could not create accounts", e); } // Create groups try { var groupsToCreate = this.testData.GetTestGroups(client); var groupCreationTasks = groupsToCreate.Select(g => primaryOrganization.CreateGroupAsync(g)); var resultingGroups = await Task.WhenAll(groupCreationTasks); this.CreatedGroupHrefs.AddRange(resultingGroups.Select(x => x.Href)); this.PrimaryGroupHref = resultingGroups.Where(x => x.Name.Contains("primary")).Single().Href; } catch (Exception e) { await this.RemoveObjectsFromTenantAsync(); throw new ApplicationException("Could not create groups", e); } // Add some accounts to groups try { var luke = await primaryApplication.GetAccounts() .Where(x => x.Email.StartsWith("lskywalker")) .SingleAsync(); await luke.AddGroupAsync(this.PrimaryGroupHref); // Stash an account for easy access this.PrimaryAccountHref = luke.Href; } catch (Exception e) { await this.RemoveObjectsFromTenantAsync(); throw new ApplicationException("Could not add accounts to groups", e); } }
public async Task Create_with_all_options() { var optionsBuilder = new AccountCreationOptionsBuilder(); optionsBuilder.RegistrationWorkflowEnabled = true; optionsBuilder.ResponseOptions.Expand(x => x.GetGroups(0, 10)); var options = optionsBuilder.Build(); await this.VerifyThat(options, resultsInQueryString: "?expand=groups(offset:0,limit:10)®istrationWorkflowEnabled=true"); }
public async Task Create_with_response_options() { var optionsBuilder = new AccountCreationOptionsBuilder(); optionsBuilder.ResponseOptions.Expand(x => x.GetCustomData()); var options = optionsBuilder.Build(); await this.VerifyThat(options, resultsInQueryString: "?expand=customData"); }
public async Task Create_with_workflow_override_disabled() { var options = new AccountCreationOptionsBuilder() { RegistrationWorkflowEnabled = false }.Build(); await this.VerifyThat(options, resultsInQueryString: "?registrationWorkflowEnabled=false"); }
public async Task Create_without_workflow_option() { var options = new AccountCreationOptionsBuilder() { }.Build(); await this.VerifyThat(options, resultsInQueryString: string.Empty); }